采集器配置¶
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 采集,有两种方式:
- 新加一个 conf 文件,比如 mysql-2.conf,可以将其跟已有的 mysql.conf 放在同一目录中。
- 在已有的 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 管理起来了,第一种可能导致配置目录混乱。
总结一下,第二种多采集配置的结构如下:
这实际上是一个 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 数据,假定主机上没有容器,则采集器会直接退出 |
关闭具体采集器¶
有时候,我们希望临时关闭某个采集器,也有两种方式:
- 将对应的采集器 conf 重命名,比如 mysql.conf 改成 mysql.conf.bak,只要保证文件后缀不是 conf 即可
- 在 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 | 采集真实用户监测信息 |