跳转到主要内容
agenteye-collector 守护进程确保您的 Agent 遥测数据能够安全送达 AgentEye,且绝不会阻塞您的应用程序。您的代码将事件写入本地目录后即可继续运行;collector 接管后续工作,在毫秒级内完成每个文件的上传,并能在重启、网络中断和临时服务器错误后自动恢复。上传失败会以指数退避策略进行重试,定期的恢复扫描会将因崩溃或部署遗留的文件重新加入队列。最终实现持久可靠的”即发即忘”投递:您的 Agent 保持全速运行,同时 collector 确保没有任何事件在传输过程中丢失。 从机制上看,collector 是一个轻量级守护进程,它监听 $AGENTEYE_HOME/events/(默认:~/.agenteye/events/)目录中由 Python SDK 写入的 .jsonl 文件,并将其上传至 AgentEye 服务器。
名称变更: collector 命令现已更名为 agenteye-collector(原名为 agenteye)。短名称 agenteye 现属于 AgentEye CLI。如果您正在升级现有安装,请参阅 enterprise-docs/collector-migration.md

前置条件


方案 A:二进制文件(推荐)

预编译的静态二进制文件适用于 Linux、macOS 和 Windows(x86_64 和 arm64)。请从 agenteye-enterprise/releases 仓库的最新 collector/v<version> 发布标签中直接下载适合您平台的二进制文件。 可用的制品名称:
平台制品
Linux x86_64agenteye-collector-linux-x86_64
Linux arm64agenteye-collector-linux-arm64
macOS x86_64agenteye-collector-darwin-x86_64
macOS arm64agenteye-collector-darwin-arm64
Windows x86_64agenteye-collector-windows-x86_64.exe
Windows arm64agenteye-collector-windows-arm64.exe
使用 gh CLI 下载(替换版本号并选择您平台对应的制品):
或使用 curl

方案 B:Docker

当前 beta 构建发布浮动标签 :beta-latest:latest 仅分配给稳定版本。对于可重现的部署,建议使用固定版本标签,例如 :v0.0.1-beta.13
运行:
官方镜像以非 root 用户运行,因此请显式设置 AGENTEYE_HOME 并将主机队列目录挂载到该路径。卷挂载与主机上 Python SDK 写入的 ~/.agenteye/ 目录共享。如果您在主机上已将 AGENTEYE_HOME 设置为其他位置,请挂载该目录而非 $HOME/.agenteye

配置

所有选项均可通过以下三种方式设置(优先级从高到低):
  1. CLI 标志:agenteye-collector start --url https://...
  2. 环境变量:AGENTEYE_URL=https://...
  3. 配置文件:~/.agenteye/config.json

必填选项

选项CLI 标志环境变量config.json 键
后端 URL--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
扫描间隔(秒)--sweep-interval <S>AGENTEYE_SWEEP_INTERVAL"sweep_interval_secs"60
扫描最小文件年龄(秒)--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
重试基础延迟(毫秒)--retry-base-delay <MS>AGENTEYE_RETRY_BASE_DELAY"retry_base_delay_ms"1000

mTLS 选项(可选)

对于需要双向 TLS(mTLS)的部署,collector 可在 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 服务器使用非公开信任 CA 颁发的 TLS 证书时才需要(例如,在没有真实 DNS 域名的情况下,由集群内 cert-manager 颁发机构签发的自签名证书)。collector 会将所提供的 CA 作为额外的信任锚点添加;标准公共根证书仍然受信,因此现有部署不受影响。该文件可包含单个 PEM 证书或完整证书链(多个连续的 PEM 块)。 是否在应用程序 Pod 中以 sidecar 方式运行 collector? 请参阅 enterprise-docs/single-pod-deployment.md 了解完整的 EKS 方案:通过 AWS Secrets Manager + Secrets Store CSI Driver + IRSA 交付 mTLS 证书包,并支持自动轮换。 在 Kubernetes 中使用 Secret 交接模式运行时,将证书 Secret 挂载为卷,并将这些路径指向挂载的文件:

~/.agenteye/config.json 示例

启用 mTLS:
启用 mTLS 并使用自定义 CA(AgentEye 服务器使用自签名证书):
如果设置了 AGENTEYE_HOME,则使用该目录替代 ~/.agenteye

初次设置

安装完成后,使用服务器 URL 和 API 密钥配置 collector:
对于任何跨越不受信网络的部署,请使用 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

当 collector 与您的应用程序共用一个容器时,请使用进程管理器来运行它们。最简单的选择是 supervisord;它在各主流发行版中均有提供,能重启崩溃的进程、转发信号,并等待优雅关闭。 Dockerfile
supervisord.conf
各配置项说明:
  • agenteye-collector 的 autorestart=true:任何退出(崩溃、panic、OOM)均自动重启。
  • 应用程序的 autorestart=unexpected:仅在非零退出时重启,避免以退出码 0 结束的单次 Agent 陷入循环。
  • stopwaitsecs=30:在 supervisord 升级为 SIGKILL 之前,为 collector 在收到 SIGTERM 后排空待发上传留出空间。
  • stdout_logfile=/dev/stdout*_maxbytes=0:将两个程序的输出流式传输到容器 stdout,容器内不产生日志文件。
如前所述,在 docker run -e 中传递 AGENTEYE_URL / AGENTEYE_KEY(及任何 TLS 环境变量);supervisord 会继承这些环境变量。
使用独立容器? 如果您将 collector 作为独立容器运行(Docker Compose 服务、Kubernetes sidecar 等),无需使用 supervisord;容器运行时的重启策略已承担此职责。EKS sidecar 方案请参阅 enterprise-docs/single-pod-deployment.md
Kubernetes 存活探针(无论 collector 是独立运行还是在 supervisord 下运行均适用):
运行中的守护进程每 30 秒向 $AGENTEYE_HOME/health.json 写入一次心跳。agenteye-collector health 读取该文件,仅在心跳新鲜且上传任务正常运行时以退出码 0(健康)退出;当心跳超过 90 秒未更新(例如守护进程已停止)或监视器和扫描器在意外退出后正在重启时,以退出码 1(不健康)退出。心跳仅由 start 写入,因此请针对长期运行的守护进程而非单次 flush 命令配置探针。

systemd(Linux,生产环境推荐)

创建 /etc/agenteye/env

launchd(macOS)


升级 Collector

Collector 不会自动更新。升级步骤如下:
  • 二进制文件: 从最新的 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 退出;心跳过期(超过 90 秒)或任务正在重启时以退出码 1 退出。

目录结构

failed/ 目录中的文件不会自动重试。如需手动重新加入队列,请将其移回 events/ 目录并运行 agenteye-collector flush