इस प्रोजेक्ट के बारे में
यह प्रोजेक्ट Prometheus Alertmanager से सक्रिय अलर्ट की निगरानी के लिए एक सरल, स्व-होस्टेड समाधान प्रदान करता है। इसमें दो स्वतंत्र Go बाइनरी होते हैं, प्रत्येक को एक अलग कंटेनर छवि के रूप में पैक किया गया है, जिससे लचीला तैनाती संभव हो जाती है।
**घटक:**
1. **Receiver:** यह बाइनरी Alertmanager के लिए एक webhook एंडपॉइंट के रूप में कार्य करता है। यह `/webhook` पर POST अनुरोधों को सुनता है, आने वाले अलर्ट डेटा को प्रोसेस करता है, और वर्तमान स्थिति को एक Valkey (Redis-compatible) डेटाबेस में स्टोर करता है। यह विशेष रूप से `Watchdog` अलर्ट को संभालता है, उन्हें सक्रिय मुद्दों के रूप में व्यवहार किए बिना एक अंतिम-देखा गया टाइमस्टैम्प अपडेट करके।
2. **Dashboard:** यह बाइनरी Valkey से स्थिति को पढ़ता है और एक वेब-आधारित HTML डैशबोर्ड को सर्व करता है। यह वर्तमान अलर्ट स्थिति तक प्रोग्रामेटिक पहुंच के लिए एक `GET /api/state` एंडपॉइंट भी एक्सपोज़ करता है। यदि एक निर्दिष्ट थ्रेशोल्ड के भीतर कोई नया webhook प्राप्त नहीं हुआ है, तो डैशबोर्ड को पुराने अपडेट को हाइलाइट करने के लिए कॉन्फ़िगर किया जा सकता है।
**स्थिति प्रबंधन:**
सक्रिय अलर्ट को उनके अद्वितीय फिंगरप्रिंट द्वारा कुंजीबद्ध एक Valkey हैश में स्टोर किया जाता है। हल किए गए अलर्ट स्वचालित रूप से हटा दिए जाते हैं। यदि एक फिंगरप्रिंट गायब है, तो इसे स्थिरता सुनिश्चित करने के लिए सॉर्टेड लेबल से प्राप्त किया जाता है।
**कॉन्फ़िगरेशन:**
दोनों बाइनरी को पर्यावरण चर के माध्यम से कॉन्फ़िगर किया जाता है, जिनमें शामिल हैं:
- `LISTEN_ADDR`: HTTP सुनने का पता (डिफ़ॉल्ट `:8080`)।
- `VALKEY_ADDR`: Valkey/Redis इंस्टेंस का पता।
- `VALKEY_USERNAME` / `VALKEY_PASSWORD`: प्रमाणीकरण क्रेडेंशियल।
- `STALE_AFTER`: अपडेट को पुराना मानने के लिए थ्रेशोल्ड (डिफ़ॉल्ट `90m`)।
**तैनाती:**
प्रोजेक्ट स्थानीय विकास और परीक्षण के लिए Docker Compose का समर्थन करता है। प्रकाशित कंटेनर छवियां GitHub Container Registry (`ghcr.io`) पर उपलब्ध हैं। अंतिम छवियां सुरक्षा और आकार के लिए अनुकूलित हैं, `scratch` को आधार के रूप में उपयोग करते हुए, गैर-रूट (UID/GID 1000) के रूप में चलते हुए, और बाइनरी-समर्थित स्वास्थ्य जांचों को शामिल करते हुए।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.