跳转至

采集器配置


简介

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 的数组结构,适用于所有采集器的多配置情况,结构如下:

[[inputs.some-name]]
   ...
[[inputs.some-name]]
   ...
[[inputs.some-name]]
   ...
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 连接字符串:

http://username:pa55w#rd@github.com/path/to/repository.git

此处我们要将密码中的 # 转换成其 URL 编码 %23

http://username:pa55w%23rd@github.com/path/to/repository.git

TOML 中复杂字符串配置

在 Datakit 的 TOML 配置中,涉及很多字符串的配置,但字符串中涉及复杂的转义时,可以用 TOML 的特殊方式来避免转义。比如,如果字符串值中有英文双引号:

some_config = "this-string-contains-\"-and-others"

此处可以改为:

some_config = '''this-string-contains-"-and-others'''

更多阅读

文档评价

文档内容是否对您有帮助? ×