agent.yaml。如果只需要接入主机对象,可以先保持默认配置,确认页面出现主机后再继续增加 MySQL、Redis、PostgreSQL 等对象。
基础配置示例
下面是一个适合首次接入的基础配置:locator_mappings
locator_mappings 用于设置页面上展示的对象地址,通常用于 MySQL 等非主机对象。
例如 Agent 连接 MySQL 时使用的是本机地址:
- MySQL、Redis、PostgreSQL、MongoDB 等服务如果配置了
localhost或127.0.0.1,建议同时配置locator_mappings。 - 映射后的地址应使用稳定 IP、DNS 或
host:port。 - 不建议把映射后的地址写成
localhost、127.0.0.1。 - Kafka 和 Elasticsearch 是集群级对象,不使用
locator_mappings。Kafka 使用cluster_name作为标识;Elasticsearch 自动从集群获取cluster_name。
host
host 用于调整主机诊断时的采集行为。首次接入一般不需要修改。
shell_exec
shell_exec 控制 Agent 是否允许执行受控的主机诊断命令。
- 需要 AI-SRE 做主机现场诊断时,保持
enabled: true。只有受控的 shell 才能执行,放心开启。 - 如果发现有些 shell 被内置护栏阻断,可以手工添加到
user_allow_list。只有确认命令安全、只读、不会输出敏感信息时才添加。
tool_policy.disabled_tools:
MySQL
如果需要诊断 MySQL,在mysql: 中添加实例配置。推荐使用只读 MySQL 账号,并优先把密码放到独立凭据文件中:
如果启用
mysql.query,请务必使用只读账号。这个工具用于执行受控只读 SQL,不适合使用高权限账号。
Redis
如果需要诊断 Redis,在redis: 中添加实例配置。
redis.command 启用后,只允许执行白名单内的只读命令,如 CONFIG GET、CLIENT LIST、MEMORY USAGE、LATENCY HISTORY 等。写命令会被拒绝。
Redis Sentinel
如果需要诊断 Redis Sentinel 高可用集群,在redis_sentinel: 中添加 Sentinel 进程配置。注意 redis_sentinel 与 redis 是两种不同的对象类型,分别指向 Sentinel 进程和 Redis 数据节点。
PostgreSQL
如果需要诊断 PostgreSQL,在postgres: 中添加实例配置。
如果启用
postgres.query,请务必使用只读账号。
MongoDB
如果需要诊断 MongoDB(mongod / 副本集成员),在mongodb: 中添加实例配置。仅接受 host:port 格式,不支持 mongodb+srv:// URI。
mongodb.command 启用后,只允许执行白名单内的只读管理命令,如 dbStats、collStats、serverStatus、replSetGetStatus 等。写命令和危险命令会被拒绝。
MongoDB Mongos
如果需要诊断 MongoDB 分片集群的路由进程(mongos),在mongodb_mongos: 中添加配置。mongodb_mongos 与 mongodb 是两种不同的对象类型,分别指向 mongos 路由进程和 mongod 数据节点。
Kafka
如果需要诊断 Kafka 集群,在kafka: 中添加配置。Kafka 是集群级对象,一个 kafka 配置块代表一个逻辑集群,bootstrap_brokers 是连接入口点而非独立的 target。
Kafka 不使用
locator_mappings,cluster_name 直接作为页面上的对象地址。
Elasticsearch
如果需要诊断 Elasticsearch 集群,在elasticsearch: 中添加配置。Elasticsearch 是集群级对象,cluster_name 不需要在配置中声明,Agent 会在启动或 reload 时自动通过 GET _cluster/health 获取。如果集群不可达,该 target 会被跳过,直到下次 reload。
Elasticsearch 不使用
locator_mappings,cluster_name 自动从集群获取作为页面上的对象地址。
script_tool
script_tool 用于接入自定义脚本工具。普通用户可以保持关闭: