इस प्रोजेक्ट के बारे में
Theia – प्राइवेसी-केंद्रित सर्वर-साइड एनालिटिक्स
अवलोकन
Theia बिना किसी क्लाइंट-साइड JavaScript के वेबसाइट ट्रैफिक सांख्यिकी प्रदान करता है। यह वास्तविक समय में nginx एक्सेस लॉग्स की निगरानी करता है, पाथ, रेफरर, यूजर-एजेंट, IP, स्टेटस कोड और भेजे गए बाइट्स निकालने के लिए प्रत्येक लाइन को पार्स करता है, प्राइवेसी के लिए IPs को हैश करता है, और परिणामों को एक स्थानीय SQLite डेटाबेस में स्टोर करता है। चूंकि सभी प्रोसेसिंग सर्वर पर होती है, इसलिए डेटा एड-ब्लॉकर्स से सुरक्षित रहता है और यह किसी तीसरे पक्ष की सेवाओं पर निर्भर नहीं है।
इंस्टॉलेशन
त्वरित इंस्टॉलेशन: curl या wget के साथ इंस्टॉल स्क्रिप्ट डाउनलोड करें और इसे sudo bash के साथ चलाएं। स्क्रिप्ट आर्किटेक्चर का पता लगाती है, बाइनरी को /usr/local/bin/theia में इंस्टॉल करती है, मल्टी-डोमेन ट्रैकिंग के लिए एक कस्टम nginx लॉग फॉर्मेट जोड़ती है (वैकल्पिक), एक systemd सर्विस बनाती है और डेटा स्टोरेज के लिए /var/lib/theia तैयार करती है। मैनुअल इंस्टॉलेशन का भी समर्थन है – रिपॉजिटरी को क्लोन करें, go build के साथ बिल्ड करें, बाइनरी कॉपी करें, डेटा डायरेक्टरी बनाएं और प्रदान की गई systemd यूनिट इंस्टॉल करें।
डेमन (daemon) चलाना
डेमन nginx एक्सेस लॉग को टेल (tail) करता है और पार्स किए गए रिकॉर्ड्स को SQLite डेटाबेस में लिखता है।
उदाहरण कमांड:
sudo theia daemon --log-path /var/log/nginx/access.log --db-path /var/lib/theia/theia.db
मुख्य फ्लैग्स: --log-path (डिफ़ॉल्ट /var/log/nginx/access.log) और --db-path (डिफ़ॉल्ट ./theia.db)।
कमांड-लाइन सांख्यिकी
stats सब-कमांड डेटाबेस को पढ़ता है और एक सारांश तालिका या JSON आउटपुट प्रिंट करता है।
सामान्य उपयोग:
theia stats --db-path /var/lib/theia/theia.db
विकल्पों के माध्यम से लुक-बैक अवधि (--days) को बदलना, होस्ट द्वारा फ़िल्टर करना (--host), आउटपुट फॉर्मेट चुनना (--format json|table) और टॉप प्रविष्टियों की संख्या को समायोजित करना (--top) संभव है।
HTTP API सर्विस
serve कमांड 127.0.0.1:8081 पर एक बेयरर-टोकन प्रोटेक्टेड HTTP/JSON (या CSV) API लॉन्च करता है। इसे बाहरी रूप से एक्सपोज करने के लिए nginx के माध्यम से प्रॉक्सी किया जा सकता है। ऑथेंटिकेशन एक टोकन फ़ाइल, एनवायरनमेंट वेरिएबल, या कमांड-लाइन फ्लैग के माध्यम से प्रदान किया जा सकता है। एंडपॉइंट्स में शामिल हैं:
GET /api/v1/stats – टाइम-सीरीज डेटा
GET /api/v1/stats/paths – टॉप पाथ्स
GET /api/v1/stats/referrers – टॉप रेफरर्स
GET /api/v1/stats/status-codes – स्टेटस-कोड ब्रेकडाउन
सामान्य क्वेरी पैरामीटर्स: host, from, to, format, group_by, top।
शेल पूर्णता (Shell completion)
theia completion चलाने से वर्तमान शेल का पता चलता है और bash, zsh या fish के लिए पूर्णता स्क्रिप्ट इंस्टॉल करने का विकल्प मिलता है।
सर्विस प्रबंधन
Theia एक systemd यूनिट के रूप में चलता है। स्टार्ट, स्टॉप, रीस्टार्ट, स्टेटस देखने और लॉग्स को फॉलो करने के लिए मानक systemctl कमांड का उपयोग करें।
यह आंतरिक रूप से कैसे काम करता है
1. वास्तविक समय में nginx लॉग फ़ाइल को टेल करता है।
2. प्रासंगिक फ़ील्ड्स के लिए प्रत्येक लाइन को पार्स करता है।
3. गुमनामी बनाए रखने के लिए IP + यूजर-एजेंट + दिनांक को हैश करता है।
4. बॉट्स और स्टैटिक-एसेट अनुरोधों का स्वचालित रूप से पता लगाता है।
5. SQLite (WAL मोड) में एसिंक्रोनस रूप से रिकॉर्ड लिखता है, जिससे समवर्ती रीडर्स (concurrent readers) संभव होते हैं।
6. समय-समय पर सफाई 60 दिनों से पुराने प्रति घंटा आंकड़ों को हटा देती है।
सुरक्षा विचार
डेमन को nginx लॉग्स पढ़ने के लिए root या sudo एक्सेस की आवश्यकता होती है। प्रोसेस लिस्ट के माध्यम से एक्सपोजर से बचने के लिए API टोकन को कमांड लाइन के बजाय एक फ़ाइल में स्टोर किया जाना चाहिए। शोर मचाने वाले स्कैनर्स के लिए रेट-लिमिटिंग और fail2ban नियमों की सिफारिश की जाती है (docs/nginx-hardening.md देखें)।
सीमाएं
* केवल पेज-व्यू काउंट एकत्र किए जाते हैं; कोई क्लाइंट-साइड इवेंट नहीं।
* अचानक क्रैश होने पर डेटा हानि संभव है।
* कोई अंतर्निहित वेब डैशबोर्ड नहीं है – उपयोगकर्ता CLI आउटपुट, HTTP API का उपयोग कर सकते हैं, या सीधे SQLite को क्वेरी कर सकते हैं।
लाइसेंस
Apache License 2.0।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.