采集器配置¶
简介¶
DataKit 中采集器配置均使用 Toml 格式。每个采集都分门别类,位于 conf.d
的下层子目录中:
- Linux/Mac:
/usr/local/datakit/conf.d/
- Windows:
C:\Program Files\datakit\conf.d\
一个典型的配置采集器文件,其结构大概如下:
[[inputs.some_name]] # 这一行是必须的,它表明这个 toml 文件是哪一个采集器的配置
key = value
...
[[inputs.some_name.other_options]] # 这一行则可选,有些采集器配置有这一行,有些则没有
key = value
...
Tip
由于 DataKit 只会搜索 conf.d/
目录下以 .conf
为扩展的文件,故所有采集器配置 必须放在 conf.d
目录下(或其下层子目录下),且必须以 .conf
作为文件后缀。否则,DataKit 会忽略处理该配置文件。
默认开启的采集器¶
DataKit 安装完成后,默认会开启一批采集器,无需手动开启。也可以按需禁用所有默认采集器。
默认开启的采集器一般跟主机相关,列表如下:
采集器名称 | 说明 |
---|---|
CPU(cpu ) |
采集主机的 CPU 使用情况 |
Disk(disk ) |
采集磁盘占用情况 |
磁盘 IO(diskio ) |
采集主机的磁盘 IO 情况 |
内存(mem ) |
采集主机的内存使用情况 |
Swap(swap ) |
采集 Swap 内存使用情况 |
System(system ) |
采集主机操作系统负载 |
Net(net ) |
采集主机网络流量情况 |
主机进程(host_processes ) |
采集主机上常驻(存活 10min 以上)进程列表 |
主机对象(hostobject ) |
采集主机基础信息(如操作系统信息、硬件信息等) |
容器(container ) |
采集主机上可能的容器或 Kubernetes 数据,假定主机上没有容器,则采集器会直接退出 |
Datakit(dk ) |
采集 Datakit 自身运行指标收集 |
移除默认采集器¶
如果不希望开启某些采集器,可以通过在采集器名字前面加一个 -
的方式来屏蔽:
# datakit.conf
default_enabled_inputs = [
"-cpu",
"-disk",
"-diskio",
"-mem",
"swap",
"system",
"hostobject",
"net",
"host_processes",
"dk",
]
同样,在安装阶段,也能通过这种方式(DK_DEF_INPUTS
)来禁用。
通过环境变量(ENV_ENABLE_INPUTS
)可设置要开启的采集器。
修改采集器配置¶
同一个采集器开启多份采集¶
以 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]]
...
方式二多采集配置结构实际上是一个 Toml 的数组结构,适用于所有采集器的多配置情况,结构如下:
Attention
- 内容完全相同的两个采集器配置文件(文件名可以不同)为了防止误配置,只会应用其中一个。
- 不建议将多个不同采集器(比如 MySQL 和 Nginx)配置到一个
conf
中,可能导致一些奇怪的问题,也不便于管理。 - 部分采集器被限制为单实例运行,具体请查看 只允许单实例运行的采集器。
两种方式对比
- 方式一,可能导致配置目录混乱。
- 方式二,管理起来较为简单。它将所有的同名采集器,都用同一个
conf
管理起来。
单实例采集器¶
部分采集器只允许单实例运行,即使配置多份,也只会运行单个实例,这些单实例采集器列表如下:
采集器名称 | 说明 |
---|---|
cpu |
采集主机的 CPU 使用情况 |
disk |
采集磁盘占用情况 |
diskio |
采集主机的磁盘 IO 情况 |
eBPF | 采集主机网络 TCP、UDP 连接信息,Bash 执行日志等 |
mem |
采集主机的内存使用情况 |
swap |
采集 Swap 内存使用情况 |
system |
采集主机操作系统负载 |
net |
采集主机网络流量情况 |
netstat |
采集网络连接情况,包括 TCP/UDP 连接数、等待连接、等待处理请求等 |
主机进程(host_processes ) |
采集主机上常驻(存活 10min 以上)进程列表 |
主机对象(hostobject ) |
采集主机基础信息(如操作系统信息、硬件信息等) |
容器(container ) |
采集主机上可能的容器或 Kubernetes 数据,假定主机上没有容器,则采集器会直接退出 |
Datakit(dk ) |
采集 Datakit 自己的运行情况,包括 CPU、Memory 等等 |
关闭具体采集器¶
关闭某个具体的采集器,有两种方式:
两种方式对比
- 方式一,更简单粗暴。
- 方式二,需小心修改,可能会导致 Toml 配置错误。
- 方式一: 将对应的采集器
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]
# 省略其它配置项 ...
采集器配置中的正则表达式¶
在编辑采集器配置时,部分可能需要配置一些正则表达式。
由于 DataKit 绝大部分使用 Golang 开发,故涉及配置部分中所使用的正则通配,也是使用 Golang 自身的正则实现。由于不同语言的正则体系有一些差异,导致难以一次性正确的将配置写好。
这里推荐一个在线工具来调试我们的正则通配。如下图所示:
另外,由于 DataKit 中的配置均使用 Toml,故建议大家使用 '''这里是一个具体的正则表达式'''
的方式来填写正则(即正则俩边分别用三个英文单引号),这样可以避免一些复杂的转义。
密码配置编码问题¶
在配置一些连结字符串时,如果密码中带有一些特殊字符(比如 @#*
等),这些字符如果编码在链接字符串中,需要将其做一些编码,这些特殊字符的 URL 编码列表如下:
注意,此处不是所有特殊字符(如
~_-.
)都需要编码,但仍将其列出,以备参考。
字符 | URL 编码 | 字符 | URL 编码 |
---|---|---|---|
` |
%60 |
~ |
~ |
! |
%21 |
@ |
%40 |
# |
%23 |
$ |
%24 |
% |
%25 |
^ |
%5E |
& |
%26 |
* |
%2A |
( |
%28 |
) |
%29 |
_ |
_ |
- |
- |
+ |
%2B |
= |
%3D |
{ |
%7B |
} |
%7D |
[ |
%5B |
] |
%5D |
\ |
%5C |
: |
%3A |
| |
%7C |
" |
%22 |
' |
%27 |
; |
%3B |
, |
%2C |
. |
. |
< |
%3C |
> |
%3E |
/ |
%2F |
? |
%3F |
假定我们有如下 Git 连接字符串:
此处我们要将密码中的 #
转换成其 URL 编码 %23
:
TOML 中复杂字符串配置¶
在 Datakit 的 TOML 配置中,涉及很多字符串的配置,但字符串中涉及复杂的转义时,可以用 TOML 的特殊方式来避免转义。比如,如果字符串值中有英文双引号:
此处可以改为: