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 存放插件日志的地址

注解

其中 gitsubDir 安装脚本会帮你填写,应该不用修改,

过滤不想要的事件

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"