agenteye-collector डेमॉन गारंटी देता है कि आपके एजेंट्स की टेलीमेट्री AgentEye तक पहुंचे बिना कभी आपके एप्लिकेशन को ब्लॉक किए। आपका कोड लोकल डायरेक्टरी में इवेंट्स लिखता है और आगे बढ़ता है; कलेक्टर वहां से जिम्मेदारी संभालता है, प्रत्येक फाइल को मिलीसेकंड में अपलोड करता है और रीस्टार्ट्स, नेटवर्क आउटेज और ट्रांजिएंट सर्वर एरर्स को सहता है। विफल अपलोड्स को एक्सपोनेंशियल बैकऑफ के साथ रिट्राई किया जाता है, और एक आवधिक रिकवरी स्वीप किसी भी चीज को फिर से कतार में डालता है जो क्रैश या डिप्लॉय के पीछे छूट गई हो। परिणाम टिकाऊ, फायर-एंड-फॉरगेट डिलीवरी है: आपके एजेंट्स पूर्ण गति से चलते रहते हैं जबकि कलेक्टर यह सुनिश्चित करता है कि कोई भी इवेंट ट्रांजिट में खो न जाए।
तकनीकी रूप से, कलेक्टर एक हल्का डेमॉन है जो $AGENTEYE_HOME/events/ (डिफॉल्ट: ~/.agenteye/events/) को देखता है जिसे Python SDK द्वारा लिखी गई .jsonl फाइलें ढूंढता है और उन्हें AgentEye सर्वर पर अपलोड करता है।
नाम परिवर्तित: कलेक्टर कमांड अबagenteye-collectorहै (पहलेagenteyeहुआ करता था)। छोटाagenteyeनाम अब AgentEye CLI को संबंधित है। यदि आप किसी मौजूदा इंस्टॉल को अपग्रेड कर रहे हैं, तो enterprise-docs/collector-migration.md देखें।
पूर्वापेक्षाएं
- आपका
AGENTEYE_TOKEN: एक GitHub PAT जिसे आप स्वयं जनरेट करते हैं (देखें enterprise-docs/github-token.md) - सर्वर URL और एक कलेक्टर API कुंजी (देखें enterprise-docs/api-keys.md)
विकल्प A: बायनरी (अनुशंसित)
पूर्व-निर्मित स्टेटिक बायनरीज Linux, macOS और Windows (x86_64 और arm64) के लिए उपलब्ध हैं।agenteye-enterprise/releases रेपो से अपने प्लेटफॉर्म के लिए बायनरी सीधे नवीनतम collector/v<version> रिलीज़ टैग के अंतर्गत डाउनलोड करें।
उपलब्ध आर्टिफैक्ट नाम:
| प्लेटफॉर्म | आर्टिफैक्ट |
|---|---|
| Linux x86_64 | agenteye-collector-linux-x86_64 |
| Linux arm64 | agenteye-collector-linux-arm64 |
| macOS x86_64 | agenteye-collector-darwin-x86_64 |
| macOS arm64 | agenteye-collector-darwin-arm64 |
| Windows x86_64 | agenteye-collector-windows-x86_64.exe |
| Windows arm64 | agenteye-collector-windows-arm64.exe |
gh CLI के साथ डाउनलोड करें (संस्करण बदलें और अपने प्लेटफॉर्म के आर्टिफैक्ट को चुनें):
curl के साथ:
विकल्प B: Docker
वर्तमान बीटा बिल्ड्स फ्लोटिंगचलाएं::beta-latestटैग प्रकाशित करते हैं;:latestकेवल स्थिर रिलीज़ को असाइन किया जाता है। दोहराए जा सकने वाले डिप्लॉयमेंट्स के लिए,:v0.0.1-beta.13जैसा पिन किया गया संस्करण टैग पसंद करें।
AGENTEYE_HOME स्पष्ट रूप से सेट करें और होस्ट स्पूल को इसमें माउंट करें। वॉल्यूम माउंट वही ~/.agenteye/ डायरेक्टरी शेयर करता है जिसमें Python SDK होस्ट पर लिखता है। यदि आपने AGENTEYE_HOME कहीं अन्य जगह होस्ट पर पहले से सेट किया है, तो $HOME/.agenteye की जगह वह डायरेक्टरी माउंट करें।
कॉन्फ़िगरेशन
सभी विकल्पों को तीन तरीकों से सेट किया जा सकता है (उच्चतम प्राथमिकता पहली):- CLI फ्लैग:
agenteye-collector start --url https://... - पर्यावरण चर:
AGENTEYE_URL=https://... - कॉन्फ़िग फाइल:
~/.agenteye/config.json
आवश्यक विकल्प
| विकल्प | CLI फ्लैग | Env var | config.json कुंजी |
|---|---|---|---|
| बैकएंड URL | --url <URL> | AGENTEYE_URL | "url" |
| API कुंजी | --key <KEY> | AGENTEYE_KEY | "key" |
वैकल्पिक विकल्प (डिफॉल्ट के साथ)
| विकल्प | CLI फ्लैग | Env var | config.json कुंजी | डिफॉल्ट |
|---|---|---|---|---|
| अधिकतम समवर्ती अपलोड्स | --max-concurrent-uploads <N> | AGENTEYE_MAX_CONCURRENT_UPLOADS | "max_concurrent_uploads" | 64 |
| स्वीपर इंटरवल (s) | --sweep-interval <S> | AGENTEYE_SWEEP_INTERVAL | "sweep_interval_secs" | 60 |
| स्वीपर न्यूनतम फाइल आयु (s) | --sweep-min-age <S> | AGENTEYE_SWEEP_MIN_AGE | "sweep_min_age_secs" | 120 |
| प्रति स्वीप अधिकतम फाइलें | --sweep-max-files <N> | AGENTEYE_SWEEP_MAX_FILES | "sweep_max_files" | 64 |
| अधिकतम अपलोड प्रयास | --max-retries <N> | AGENTEYE_MAX_RETRIES | "max_retries" | 5 |
| रिट्राई बेस डिले (ms) | --retry-base-delay <MS> | AGENTEYE_RETRY_BASE_DELAY | "retry_base_delay_ms" | 1000 |
mTLS विकल्प (वैकल्पिक)
उन डिप्लॉयमेंट्स के लिए जिन्हें म्यूचुअल TLS (mTLS) की आवश्यकता होती है, कलेक्टर TLS हैंडशेक के दौरान एक क्लाइंट सर्टिफिकेट प्रस्तुत कर सकता है। जब ये विकल्प सेट नहीं होते हैं, कलेक्टर मानक HTTPS का उपयोग करता है।| विकल्प | CLI फ्लैग | Env var | config.json कुंजी |
|---|---|---|---|
| क्लाइंट सर्टिफिकेट (PEM) | --tls-cert <PATH> | AGENTEYE_TLS_CERT | "tls_cert" |
| क्लाइंट निजी कुंजी (PEM) | --tls-key <PATH> | AGENTEYE_TLS_KEY | "tls_key" |
| कस्टम CA सर्टिफिकेट (PEM) | --tls-ca <PATH> | AGENTEYE_TLS_CA | "tls_ca" |
--tls-cert और --tls-key को एक साथ सेट किया जाना चाहिए। फाइलें PEM-एनकोडेड होनी चाहिए।
--tls-ca स्वतंत्र है और केवल तभी आवश्यक है जब AgentEye सर्वर एक TLS सर्टिफिकेट प्रस्तुत करता है जिसे सार्वजनिक रूप से विश्वसनीय CA द्वारा जारी नहीं किया गया है (उदाहरण के लिए, यदि आपके पास वास्तविक DNS डोमेन नहीं है तो क्लस्टर-इन-द cert-manager जारीकर्ता द्वारा स्व-हस्ताक्षरित)। कलेक्टर आपूर्ति किए गए CA को एक अतिरिक्त ट्रस्ट एंकर के रूप में जोड़ता है; मानक सार्वजनिक रूट्स विश्वसनीय रहते हैं, इसलिए मौजूदा डिप्लॉयमेंट्स प्रभावित नहीं होते हैं। फाइल में एक एकल PEM सर्ट या पूरी चेन हो सकती है (एकाधिक संयोजित PEM ब्लॉक)।
अपने एप्लिकेशन पॉड में साइडकार के रूप में कलेक्टर चला रहे हैं? एंड-टू-एंड EKS पैटर्न के लिए enterprise-docs/single-pod-deployment.md देखें: AWS सीक्रेट्स मैनेजर + सीक्रेट्स स्टोर CSI ड्राइवर + IRSA के माध्यम से mTLS बंडल, स्वचालित रोटेशन के साथ।
Kubernetes में सीक्रेट हैंड-ऑफ पैटर्न के साथ चलाते समय, सर्टिफिकेट सीक्रेट को वॉल्यूम के रूप में माउंट करें और इन पथों को माउंट की गई फाइलों की ओर इशारा करें:
उदाहरण ~/.agenteye/config.json
AGENTEYE_HOME सेट है, तो वह डायरेक्टरी ~/.agenteye की जगह उपयोग की जाती है।
पहली बार सेटअप
इंस्टॉल करने के बाद, अपने सर्वर URL और API कुंजी के साथ कलेक्टर को कॉन्फ़िगर करें:किसी भी डिप्लॉयमेंट के लिएकनेक्शन परीक्षण करें (वन-शॉट फ्लश, लंबित इवेंट्स को निकालने के बाद निकलता है):httpsका उपयोग करें जो अविश्वसनीय नेटवर्क पार करता है ताकि इवेंट्स सादे पाठ में न भेजे जाएं। सादा पाठhttp://your-server-host:8080/eventsफॉर्म केवल समान होस्ट पर सर्वर के विरुद्ध विशुद्ध रूप से स्थानीय परीक्षण के लिए उपयुक्त है।
flush अपनी प्रगति को stdout में रिपोर्ट करता है। जब स्पूल खाली हो तो यह No pending files. प्रिंट करता है और 0 को निकलता है। अन्यथा यह प्रति फाइल एक लाइन प्रिंट करता है ([UPLOADED] <file> या [FAILED] <file> (<reason>)), Done: <uploaded>/<total> uploaded, <failed> failed. सारांश के बाद। यह flush को आपके URL, कुंजी और TLS सेटिंग्स को सही करने से पहले डेमॉन शुरू करने से पहले परीक्षण करने का एक सुविधाजनक वन-शॉट तरीका बनाता है।
डेमॉन के रूप में चलाना
सीधे
कंटेनर / Docker
जब कलेक्टर और आपका एप्लिकेशन एक कंटेनर साझा करते हैं, तो उन्हें एक प्रक्रिया पर्यवेक्षक के तहत चलाएं। सबसे सरल विकल्पsupervisord है; यह हर मुख्य डिस्ट्रो में आता है, क्रैश की गई प्रक्रियाओं को रीस्टार्ट करता है, सिग्नल को फॉरवर्ड करता है और सुंदर शटडाउन के लिए प्रतीक्षा करता है।
Dockerfile:
supervisord.conf:
- agenteye-collector पर
autorestart=true: किसी भी निकास पर रीस्टार्ट करें (क्रैश, पैनिक, OOM)। - ऐप पर
autorestart=unexpected: केवल गैर-शून्य निकास पर रीस्टार्ट करें, इसलिए एक वन-शॉट एजेंट जो0को निकलता है लूप नहीं करता। stopwaitsecs=30: कलेक्टर को SIGTERM पर लंबित अपलोड्स को निकालने के लिए जगह देता है इससे पहले कि supervisord SIGKILL को एस्केलेट करे।stdout_logfile=/dev/stdout,*_maxbytes=0: दोनों प्रोग्रामों के आउटपुट को कंटेनर stdout में स्ट्रीम करें; कंटेनर के अंदर कोई लॉग फाइल नहीं।
docker run -e पर पहले की तरह AGENTEYE_URL / AGENTEYE_KEY (और कोई भी TLS env vars) पास करें; supervisord पर्यावरण को विरासत में लेता है।
अलग कंटेनर्स? यदि आप कलेक्टर को इसके अपने कंटेनर के रूप में चलाते हैं (Docker Compose सर्विस, Kubernetes साइडकार, आदि), supervisord का उपयोग न करें; कंटेनर रनटाइम की रीस्टार्ट पॉलिसी पहले से ही यह काम करती है। EKS साइडकार पैटर्न के लिए enterprise-docs/single-pod-deployment.md देखें।
Kubernetes लाइवनेस प्रोब (चाहे कलेक्टर अकेले चले या supervisord के तहत):
$AGENTEYE_HOME/health.json को एक हार्टबीट लिखता है। agenteye-collector health वह फाइल पढ़ता है और केवल तब 0 (स्वस्थ) को निकलता है जब हार्टबीट ताजा हो और अपलोड कार्य सामान्य रूप से चल रहे हों; यह 1 (अस्वस्थ) को तब निकलता है जब हार्टबीट 90 सेकंड से पुराना हो (उदाहरण के लिए, डेमॉन बंद हो गया) या जब वॉचर और स्वीपर एक अप्रत्याशित निकास के बाद रीस्टार्ट कर रहे हों। हार्टबीट केवल start द्वारा लिखा जाता है, इसलिए वन-शॉट flush कमांड के बजाय लंबे-जीवित डेमॉन के विरुद्ध प्रोब चलाएं।
systemd (Linux, प्रोडक्शन के लिए अनुशंसित)
/etc/agenteye/env बनाएं:
launchd (macOS)
कलेक्टर को अपग्रेड करना
कलेक्टर स्वयं को अपडेट नहीं करता। अपग्रेड करने के लिए:- बायनरी: नवीनतम
collector/v<version>रिलीज़ से अपने प्लेटफॉर्म के लिए नईagenteye-collector-<os>-<arch>आर्टिफैक्ट डाउनलोड करें (देखें विकल्प A),/usr/local/bin/agenteye-collectorको बदलें, फिर सर्विस रीस्टार्ट करें (sudo systemctl restart agenteye-collector, दोबाराlaunchctl load, या अपने सुपरवाइजर को रीस्टार्ट करें)। - Docker:
docker pull ghcr.io/agenteye-enterprise/collector:beta-latest(या एक पिन किया गया:v<version>टैग;:latestकेवल स्थिर रिलीज़ के लिए मौजूद है) और कंटेनर को फिर से बनाएं।
AGENTEYE_TOKEN निजी रिलीज़ रेपो से नई बायनरीज/इमेजेज डाउनलोड करने के लिए आवश्यक है, लेकिन चलने वाले डेमॉन द्वारा आवश्यक नहीं है।
सबकमांड्स
| कमांड | विवरण |
|---|---|
agenteye-collector start | लंबे-जीवित डेमॉन शुरू करें। स्टार्टअप पर यह पिछले रन से बचे हुए किसी भी इवेंट को फ्लश करता है, फिर नई फाइलों को देखता है और उन्हें अपलोड करता है। वॉचर और स्वीपर एक अप्रत्याशित निकास पर स्वचालित रूप से रीस्टार्ट होते हैं, और हर 30 सेकंड में health.json को एक हार्टबीट लिखा जाता है। |
agenteye-collector flush | वन-शॉट: सभी लंबित फाइलें अपलोड करें और बाहर निकलें। जब स्पूल खाली हो तो No pending files. प्रिंट करें, अन्यथा एक प्रति-फाइल [UPLOADED]/[FAILED] लॉग और Done: <uploaded>/<total> uploaded, <failed> failed. सारांश। |
agenteye-collector health | डेमॉन के health.json हार्टबीट को पढ़ें। जब ताजा और स्वस्थ हो तो 0 को निकलें; जब हार्टबीट पुराना हो (90s से अधिक पुराना) या कार्य रीस्टार्ट हो रहे हों तो 1 को निकलें। |
डायरेक्टरी लेआउट
failed/ में फाइलें स्वचालित रूप से रिट्राई नहीं की जाती हैं। उन्हें मैनुअली रीकयू करने के लिए, उन्हें events/ में वापस ले जाएं और agenteye-collector flush चलाएं।
