agent 配置¶
样例配置¶
debug: false
hostname: ''
noBuiltin: false
ip: ''
cgroups:
cpu: 50.0
mem: 256
enforce: false
plugin:
enabled: true
signingKeys:
- owner: You
key: NotAVaildKeyGetOneKeyBySignToolInRulesRepo==
- owner: youmu
key: RYzIU5vEK3e4asrN0KrPpNdvjBRQq+3Mva5z27ba9sw=
- owner: yuyuko
key: 6h0llzeOAcOsn4A5vGzEkp/icjQhGddYzRzbOUh1PL0=
- owner: satori
key: f1mKpSYpnpKDqZbci0/TFWTfND1NZ5QSyXpPEa1h7XY=
- owner: koishi
key: Vpk9Ev2li0d2jRUCPwbG4PfylqmspYFPaFS21Zhrs/g=
- owner: reimu
key: m0HT43K6xOxm11Ybjz0BrdfbQYt7WHesqpZ/VcaTwTA=
authorizedKeys: authorized_keys.yaml
update: agent-update.yaml
git: "http://satori:PASSWD@DOMAIN/plugin"
checkoutPath: "/var/lib/satori/plugin"
subDir: plugin
logs: "/var/log/satori"
master: "master://INTERNAL_DOMAIN:6040/?interval=60&timeout=5000"
transfer:
- "transfer://INTERNAL_DOMAIN:8433/?timeout=5000"
http: ":1988"
collector:
ifacePrefix:
- enp
- eth
- em
addTags:
region: default
ignore:
- metric: "^df\\."
tag: "mount"
tagValue: ".*/(docker|ureadahead|netns)/.*$"
参数解释¶
Key | 意义 |
---|---|
debug | 是否开启调试日志 |
hostname | 指定一个 hostname [1] |
ip | 指定一个 ip 地址 [2] |
cgroups | 参见 为 agent 开启 cgroups 限制 |
plugin | 参见 插件配置 |
master | master 的地址。这个值在安装后生成的 agent-cfg.yaml 里会自动帮你填写 |
transfer | transfer 的地址。这个值在安装后生成的 agent-cfg.yaml 里会自动帮你填写 |
http | HTTP 监听端口,负责响应 ping、push 请求 |
collector | 目前只有一个用处,用来指示 agent 需要收集指标的网卡前缀 |
addTags | 在所有经过这个 agent 的上报指标上附带 tags [3] |
ignore | 参见 过滤不想要的事件 |
[1] | 这个 hostname 会上报给 master,并且如果插件没有填写上报指标的 hostname 的话,agent 会用这个值来填写。默认为本机 hostname。 |
[2] | 同样这个值也会上报给 master |
[3] | 这个功能常用作给指标加上跟机器相关的元数据,比如这个机器所在的区域、机架 |
为 agent 开启 cgroups 限制¶
作为一个监控 agent 如果因为自身的 bug 挤占了正常服务的资源是非常尴尬的, 所以 agent 可以使用 cgroups 机制来限制自身和插件的资源占用。
参见 样例配置 中的 cgroups
项
Key | 意义 |
---|---|
cpu | CPU 限制,百分比。可以超过100,代表1个核以上。超过限制系统就不会调度了。 |
mem | 内存限制,MiB。超过限制会挑组内内存占用最大的一个杀掉 |
enforce | 强制开启 cgroups。如果为 true,那么 agent 在设置 cgroups 失败的情况下会直接 panic |
插件配置¶
与 agent 拉取规则仓库相关的配置。
参见 样例配置 中的 plugin
项
Key | 意义 |
---|---|
enabled | 是否开启插件功能 |
signingKeys | agent 信任的签名公钥,参见 规则仓库签名 |
authorizedKeys | 规则仓库中的 agent 会信任的签名公钥文件名,参见 规则仓库签名 |
update | 规则仓库中自更新配置文件,参见 agent 的自动更新 |
git | 可以由 agent 访问的规则仓库的地址。 |
checkoutPath | 规则仓库 checkout 地址(本地磁盘上的存储地址) |
subDir | 规则仓库中存储插件的子目录 |
logs | 存放插件日志的地址 |
注解
其中 git
、 subDir
安装脚本会帮你填写,应该不用修改,
过滤不想要的事件¶
agent 收集的时间很可能有很多是不希望要的,本身无意义,导致误报,而且占用存储空间,比如 docker 环境下的 netns 和 aufs 挂载的信息。 ignore
可以将这些都过滤掉。
ignore
接受一个列表,列表中的每个元素可以指定如果下的规则:
Key | 意义 |
---|---|
metric | 上报指标的名字 |
tag | 上报指标中 tag 的名字 |
tagValue | tag 的值 |
同一个元素中指定的多个 key 之间是逻辑与关系,不同的元素之间是逻辑或关系。
这3个 key 都接受正则表达式。
例子:
ignore:
- metric: "^foo"
- metric: "^bar"
tag: "^baz$"
tagValue: "quux|meh"
这个例子中,metric
的开头是 foo
的指标会被过滤;开头是 bar
并且带着一个叫 baz
的 tag 并且 tag 的内容中有 quux
或者 meh
的会被过滤。
agent 的自动更新¶
在配置中的 update
指定了一个用于自动更新的配置(默认是 agent-update.yaml
)。
每次更新后 agent 会检查这个文件中指定的 sha256,如果不匹配,则会按照指定的 url 下载最新的 agent binary,
验证 sha256 通过之后,就会覆盖掉现有的 agent binary 并重新启动。
配置样例:
# This file is used for satori-agent auto update
# You MUST provide sha256 of new binary
sha256: 4e2f5eed455e56879f4140a26f5a17ac53011df83fba8afd13ab482d27a0c2fb
url: "http://example.com/satori-agent.690f210fead60542"