跳转至

采集器配置


DataKit 中采集器配置均使用 Toml 格式,所有采集器配置均位于 conf.d 目录下:

  • Linux/Mac:/usr/local/datakit/conf.d/
  • Windows:C:\Program Files\datakit\conf.d\

每个采集都分门别类,位于 conf.d 的下层子目录中。可参考具体的采集器配置说明,找到对应的子目录。

一个典型的配置采集器文件,其结构大概如下:

[[inputs.some_name]] # 这一行是必须的,它表明这个 toml 文件是哪一个采集器的配置
    key = value
    ...

[[inputs.some_name.other_options]] # 这一行则可选,有些采集器配置有这一行,有些则没有
    key = value
    ...

由于 DataKit 只会搜索 conf.d/ 目录下以 .conf 为扩展的文件,故所有采集器配置==必须放在 conf.d 目录下(或其下层子目录下),且必须以 .conf 作为文件后缀==,不然 DataKit 会忽略该配置文件的处理。

如何修改采集器配置

目前部分采集器可以无需配置就能开启,有些则需要手动编辑配置。

同一个采集器开启多份采集

以 MySQL 为例,如果要配置多个不同 MySQL 采集,有两种方式:

  1. 新加一个 conf 文件,比如 mysql-2.conf,可以将其跟已有的 mysql.conf 放在同一目录中。
  2. 在已有的 mysql.conf 中,新增一段,如下所示:
# 第一个 MySQL 采集
[[inputs.mysql]]
  host = "localhost"
  user = "datakit"
  pass = "<PASS>"
  port = 3306

  interval = "10s"

  [inputs.mysql.log]
    files = ["/var/log/mysql/*.log"]

  [inputs.mysql.tags]

    # 省略其它配置项...

#-----------------------------------------
# 再来一个 MySQL 采集
#-----------------------------------------
[[inputs.mysql]]
  host = "localhost"
  user = "datakit"
  pass = "<PASS>"
  port = 3306

  interval = "10s"

  [inputs.mysql.log]
    files = ["/var/log/mysql/*.log"]

  [inputs.mysql.tags]

    # 省略其它配置项...

#-----------------------------------------
# 下面继续再加一个
#-----------------------------------------
[[inputs.mysql]]
    ...

第二种方法管理起来可能更为简单,它将所有的同名采集器都用同一个 conf 管理起来了,第一种可能导致配置目录混乱。

总结一下,第二种多采集配置的结构如下:

[[inputs.some-name]]
   ...
[[inputs.some-name]]
   ...
[[inputs.some-name]]
   ...

这实际上是一个 Toml 的数组结构,这种结构适用于所有采集器的多配置情况

Attention
  • 内容完全相同的两个采集器配置文件(文件名可以不同)为了防止误配置,只会应用其中一个

  • 不建议将多个不同的采集器(比如 MySQL 和 Nginx)配置到一个 conf 中,这可能导致一些奇怪的问题,也不便于管理

  • 部分采集器被限制为单实例运行,具体请查看 只允许单实例运行的采集器

单实例采集器

部分采集器只允许单实例运行,即使配置多份,也只会运行单个实例,这些单实例采集器列表如下:

采集器名称 说明
cpu 采集主机的 CPU 使用情况
disk 采集磁盘占用情况
diskio 采集主机的磁盘 IO 情况
ebpf 采集主机网络 TCP、UDP 连接信息,Bash 执行日志等
mem 采集主机的内存使用情况
swap 采集 Swap 内存使用情况
system 采集主机操作系统负载
net 采集主机网络流量情况
netstat 采集网络连接情况,包括 TCP/UDP 连接数、等待连接、等待处理请求等
host_dir 采集器用于目录文件的采集,例如文件个数,所有文件大小等
host_processes 采集主机上常驻(存活 10min 以上)进程列表
hostobject 采集主机基础信息(如操作系统信息、硬件信息等)
container 采集主机上可能的容器或 Kubernetes 数据,假定主机上没有容器,则采集器会直接退出

关闭具体采集器

有时候,我们希望临时关闭某个采集器,也有两种方式:

  1. 将对应的采集器 conf 重命名,比如 mysql.conf 改成 mysql.conf.bak只要保证文件后缀不是 conf 即可
  2. 在 conf 中,注释掉对应的采集配置,如
# 注释掉第一个 MySQL 采集
#[[inputs.mysql]]
#  host = "localhost"
#  user = "datakit"
#  pass = "<PASS>"
#  port = 3306
#  
#  interval = "10s"
#  
#  [inputs.mysql.log]
#    files = ["/var/log/mysql/*.log"]
#  
#  [inputs.mysql.tags]
#  
#    # 省略其它配置项...
#

# 保留这个 MySQL 采集
[[inputs.mysql]]
  host = "localhost"
  user = "datakit"
  pass = "<PASS>"
  port = 3306

  interval = "10s"

  [inputs.mysql.log]
    files = ["/var/log/mysql/*.log"]

  [inputs.mysql.tags]

    # 省略其它配置项...

相比而言,第一种方式更粗暴简单,第二种需小心修改,它可能会导致 Toml 配置错误。

采集器配置中的正则表达式

在编辑采集器配置时,部分可能需要配置一些正则表达式。

由于 DataKit 绝大部分使用 Golang 开发,故涉及配置部分中所使用的正则通配,也是使用 Golang 自身的正则实现。由于不同语言的正则体系有一些差异,导致难以一次性正确的将配置写好。

这里推荐一个在线工具来调试我们的正则通配。如下图所示:

另外,由于 DataKit 中的配置均使用 Toml,故建议大家使用 '''这里是一个具体的正则表达式''' 的方式来填写正则(即正则俩边分别用三个英文单引号),这样可以避免一些复杂的转义。

默认开启的采集器

DataKit 安装完成后,默认会开启一批采集器,无需手动开启。这些采集器一般跟主机相关,列表如下:

采集器名称 说明
cpu 采集主机的 CPU 使用情况
disk 采集磁盘占用情况
diskio 采集主机的磁盘 IO 情况
mem 采集主机的内存使用情况
swap 采集 Swap 内存使用情况
system 采集主机操作系统负载
net 采集主机网络流量情况
host_processes 采集主机上常驻(存活 10min 以上)进程列表
hostobject 采集主机基础信息(如操作系统信息、硬件信息等)
container 采集主机上可能的容器或 Kubernetes 数据,假定主机上没有容器,则采集器会直接退出
rum 采集真实用户监测信息

更多阅读