agenteye-collector מבטיח שהטלמטריה של הסוכנים שלך תגיע ל-AgentEye מבלי לחסום את האפליקציה שלך אי פעם. הקוד שלך כותב אירועים לספריה מקומית ומעביר הלאה; ה-collector משתלט משם, מעלה כל קובץ תוך מילישניות ומשרד הפעלות מחדש, הפסקות רשת וטעויות שרת חולפות. העלאות שנכשלו מנסו שוב עם exponential backoff, וסיור התאוששות תקופתי מכניס לתור מחדש כל דבר שנותר מ-crash או deploy. התוצאה היא משלוח עמיד ו-fire-and-forget: הסוכנים שלך ממשיכים לרוץ במהירות מלאה בזמן שה-collector מוודא שלא יאבדו אירועים בדרך.
מבחינה מכנית, ה-collector הוא daemon קל משקל שמראיין $AGENTEYE_HOME/events/ (ברירת מחדל: ~/.agenteye/events/) לקבצי .jsonl שנכתבו על ידי Python SDK ומעלה אותם לשרת AgentEye.
שונה שם: הפקודה של ה-collector כעת היאagenteye-collector(בעבר היתהagenteye). השם הקצרagenteyeשייך כעת ל-AgentEye CLI. אם אתה משדרג התקנה קיימת, ראה enterprise-docs/collector-migration.md.
דרישות קדם
- ה-
AGENTEYE_TOKENשלך: GitHub PAT שאתה מייצר בעצמך (ראה enterprise-docs/github-token.md) - כתובת ה-URL של השרת ומפתח API של collector (ראה enterprise-docs/api-keys.md)
אפשרות A: Binary (מומלץ)
Binary סטטיים שנבנו מראש זמינים ל-Linux, macOS ו-Windows (x86_64 ו-arm64). הורד את ה-binary עבור הפלטפורמה שלך ישירות מריפוagenteye-enterprise/releases תחת תג ההשחרור האחרון collector/v<version>.
שמות artifacts זמינים:
| פלטפורמה | Artifact |
|---|---|
| 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 (החלף את הגרסה ובחר את ה-artifact של הפלטפורמה שלך):
curl:
אפשרות B: Docker
בניות beta נוכחיות מפרסמות את התג הצףהפעל::beta-latest;:latestמוקצה רק לשחרורים יציבים. להטמעות חוזרות, עדיף תג גרסה קבועה כמו:v0.0.1-beta.13.
AGENTEYE_HOME בהפרשה וחבר את ה-spool של המארח אליו. העלאת הנפח משתפת את אותה ספריית ~/.agenteye/ שה-Python SDK כותב אליה על המארח. אם כבר הגדרת AGENTEYE_HOME במקום אחר על המארח, חבר את הספריה הזאת במקום $HOME/.agenteye.
תצורה
ניתן להגדיר את כל האפשרויות בשלוש דרכים (סדר עדיפויות מהגבוה לנמוך):- דגל CLI:
agenteye-collector start --url https://... - משתנה סביבה:
AGENTEYE_URL=https://... - קובץ תצורה:
~/.agenteye/config.json
אפשרויות נדרשות
| אפשרות | דגל CLI | משתנה סביבה | מפתח config.json |
|---|---|---|---|
| כתובת URL של Backend | --url <URL> | AGENTEYE_URL | "url" |
| מפתח API | --key <KEY> | AGENTEYE_KEY | "key" |
אפשרויות אופציונליות (עם ברירות מחדל)
| אפשרות | דגל CLI | משתנה סביבה | מפתח config.json | ברירת מחדל |
|---|---|---|---|---|
| עלאות מקביליות מקסימום | --max-concurrent-uploads <N> | AGENTEYE_MAX_CONCURRENT_UPLOADS | "max_concurrent_uploads" | 64 |
| מרווח Sweeper (s) | --sweep-interval <S> | AGENTEYE_SWEEP_INTERVAL | "sweep_interval_secs" | 60 |
| גיל קובץ מינימום של Sweeper (s) | --sweep-min-age <S> | AGENTEYE_SWEEP_MIN_AGE | "sweep_min_age_secs" | 120 |
| קבצים מקסימום לכל sweep | --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), ה-collector יכול להציג תעודת קליינט במהלך handshake של TLS. כאשר האפשרויות הללו אינן מוגדרות, ה-collector משתמש ב-HTTPS סטנדרטי.| אפשרות | דגל CLI | משתנה סביבה | מפתח 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 שנחשב לאמין בציבור (למשל ממוקד עצמי על ידי issuer cert-manager בתוך cluster כאשר אין לך תחום DNS אמיתי). ה-collector מוסיף את ה-CA המסופק כנקודת אמון נוספת; השורשים הציבוריים הסטנדרטיים נשארים מהימנים, אז הטמעות קיימות לא מושפעות. הקובץ עשוי להכיל תעודת PEM יחידה או שרשרת מלאה (בלוקי PEM מרובים בשרשור).
הפעלת ה-collector כ-sidecar בחלונית האפליקציה שלך? ראה enterprise-docs/single-pod-deployment.md בשביל דפוס EKS מקצה לקצה: חבילת mTLS שמועברת דרך AWS Secrets Manager + Secrets Store CSI Driver + IRSA, עם סיבוב אוטומטי.
כאשר פועלים ב-Kubernetes עם דפוס הסגה של Secret, חבר את ה-Secret של התעודה כנפח והצבע את הנתיבים הללו לקבצים המחוברים:
דוגמה ~/.agenteye/config.json
AGENTEYE_HOME מוגדר, הספריה הזאת משמשת במקום ~/.agenteye.
הגדרה בפעם הראשונה
לאחר ההתקנה, קבע את ה-collector עם כתובת ה-URL של השרת ומפתח ה-API שלך:השתמש ב-בדוק את החיבור (flush חד פעמי, יוצא לאחר ניקוז אירועים תלויים):httpsעבור כל הטמעה החוצה רשת לא מהימנה כדי שאירועים לא ישלחו בטקסט רגיל. טופסhttp://your-server-host:8080/eventsבטקסט רגיל מתאים רק לבדיקה טהורה מקומית נגד שרת באותו מארח.
flush דוחה את ההתקדמות שלו ל-stdout. כאשר ה-spool ריק זה מדפיס No pending files. ויוצא 0. אחרת זה מדפיס שורה אחת לכל קובץ ([UPLOADED] <file> או [FAILED] <file> (<reason>)), ואחריה סיכום Done: <uploaded>/<total> uploaded, <failed> failed.. זה הופך את flush לבדיקה חד פעמית נוחה שהכתובת, המפתח וההגדרות של TLS שלך נכונות לפני שתתחיל את ה-daemon.
הפעלה כ-Daemon
ישיר
Container / Docker
כאשר ה-collector והאפליקציה שלך משתפים container, הפעל אותם תחת מפקח תהליך. האפשרות הפשוטה ביותר היאsupervisord; זה משולח בכל distro עיקרי, הפעל מחדש תהליכים שהתרסקו, העביר אותות והמתן לשדרוג מסודר.
Dockerfile:
supervisord.conf:
autorestart=trueעל agenteye-collector: הפעל מחדש בכל יציאה (crash, panic, OOM).autorestart=unexpectedעל האפליקציה: הפעל מחדש רק בעלייה שאינה אפסית, אז סוכן חד פעמי שיוצא 0 לא לולאה.stopwaitsecs=30: נותן לה-collector מקום לניקוז עלאות תלויות על SIGTERM לפני שה-supervisord מעלה ל-SIGKILL.stdout_logfile=/dev/stdout,*_maxbytes=0: זרם את הפלט של שני התוכניות ל-container stdout; אין קבצי יומן בתוך ה-container.
docker run -e אמור AGENTEYE_URL / AGENTEYE_KEY (וכל משתני TLS env) כבעבר; supervisord יורש את הסביבה.
מיכלים נפרדים? אם אתה מפעיל את ה-collector כמיכל משלו (שירות Docker Compose, sidecar של Kubernetes וכו’), אל תשתמש ב-supervisord; מדיניות ההפעלה מחדש של זמן ריצה של ה-container כבר עושה עבודה זו. ראה enterprise-docs/single-pod-deployment.md לדפוס ה-sidecar של EKS.בדיקת בריאות ב-Kubernetes (חל בין אם ה-collector פועל לבדו או תחת supervisord):
$AGENTEYE_HOME/health.json כל 30 שניות. agenteye-collector health קורא את הקובץ הזה ויוצא 0 (בריא) רק כאשר ה-heartbeat טרי ותפקידי ההעלאה פועלים כרגיל; זה יוצא 1 (לא בריא) כאשר ה-heartbeat ישן יותר מ-90 שניות (למשל, ה-daemon התחיל) או בזמן שה-watcher וה-sweeper מתחילים מחדש לאחר יציאה בלתי צפויה. ה-heartbeat נכתב רק על ידי start, אז הפעל את הבדיקה נגד ה-daemon ארוך הטווח ולא את הפקודה flush של חד פעמי.
systemd (Linux, מומלץ לייצור)
/etc/agenteye/env:
launchd (macOS)
שדרוג ה-Collector
ה-collector לא מעדכן את עצמו. כדי לשדרג:- Binary: הורד את ה-artifact החדש
agenteye-collector-<os>-<arch>מהשחרורcollector/v<version>האחרון (ראה אפשרות A), החלף/usr/local/bin/agenteye-collector, ואז הפעל מחדש את השירות (sudo systemctl restart agenteye-collector, re-launchctl load, או הפעל מחדש את ה-supervisor). - Docker:
docker pull ghcr.io/agenteye-enterprise/collector:beta-latest(או תג:v<version>קבוע;:latestקיים רק עבור שחרורים יציבים) ובנה מחדש את ה-container.
AGENTEYE_TOKEN נדרש להורדת binary/image חדשים מריפו releases פרטי, אך לא נדרש על ידי ה-daemon הפועל.
Subcommands
| פקודה | תיאור |
|---|---|
agenteye-collector start | התחל את ה-daemon ארוך הטווח. בהפעלה זה משפשף אירועים שנותרו מהרצה קודמת, ואז מראיין קבצים חדשים ומעלה אותם. ה-watcher וה-sweeper מתחילים מחדש באופן אוטומטי בעלייה בלתי צפויה, וה-heartbeat נכתב ל-health.json כל 30 שניות. |
agenteye-collector flush | חד פעמי: העלה את כל הקבצים התלויים ויצא. מדפיס No pending files. כאשר ה-spool ריק, אחרת רישום לכל קובץ [UPLOADED]/[FAILED] וסיכום Done: <uploaded>/<total> uploaded, <failed> failed.. |
agenteye-collector health | קרא את ה-heartbeat של health.json של ה-daemon. יצא 0 כאשר טרי ובריא; יצא 1 כאשר ה-heartbeat הוא מיושן (ישן יותר מ-90 שניות) או התפקידים מתחילים מחדש. |
פריסת ספרייה
failed/ לא מנסו שוב באופן אוטומטי. כדי להכניס אותם לתור שוב באופן ידני, הזז אותם חזרה ל-events/ והפעל agenteye-collector flush.
