search
数据采集 采集源配置 dockerlog 日志采集

dockerlog 日志采集

简介

采集 docker 容器日志数据上报到 DataFlux 中。

前置条件

  • 已安装 docker 且容器需带有 localorjson-filejournald 日志驱动程序
  • 已安装 DataKit(DataKit 安装文档

配置

docker 配置

如果需要使用 tcp 远程连接 docker,需要 docker 开启相应的端口。

在 ubuntu 系统,需要在 /etc/docker 径路下打开或创建 daemon.json 文件,添加内容如下:

{
    "hosts":["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"]
}

重启服务后,docker 便可以监听 2375 端口。官方配置文档链接

datakit 配置

进入 DataKit 安装目录下的 conf.d/docker 目录,复制 dockerlog.conf.sample 并命名为 dockerlog.conf。示例如下:

[[inputs.dockerlog]]
    # Docker Endpoint
    # To use TCP, set endpoint = "tcp://[ip]:[port]"
    # To use environment variables (ie, docker-machine), set endpoint = "ENV"
    endpoint = "unix:///var/run/docker.sock"

    # 数据来源。如果为空,则使用容器名称
    source = ""

    # pipeline 脚本路径,如果为空将使用 $source.p,如果 $source.p 不存在将不使用 pipeline
    pipeline_path = ""

    # 是否需要从头开始读取日志,设置为 true 时从头读取
    # 设置为 false 时从尾部读取
    from_beginning = false

    # Docker API 调用超时
    timeout = "5s"

    # 包含和被排除的容器,使用 Globs 规则。注意此处是对容器名做操作,不是容器id
    # 当两个数组都为空时,即包含所有容器
    container_name_include = []
    container_name_exclude = []

    # 包含和被排除的容器状态,使用 Globs 规则
    # 当两个数组都为空时,即包含处于运行(running)状态的容器
    container_state_include = []
    container_state_exclude = []

    # 包含和被排除的容器标签,使用 Globs 规则
    # 当两个数组都为空时,即包含所有标签
    docker_label_include = []
    docker_label_exclude = []

    # 是否添加 source tags,用以区分数据来源
    # 当值为 true 时,会添加 source tags,值为该容器 ID 前 12 个字符,即该容器的默认主机名
    source_tag = false

    ## Optional TLS Config
    # tls_ca = "/etc/telegraf/ca.pem"
    # tls_cert = "/etc/telegraf/cert.pem"
    # tls_key = "/etc/telegraf/key.pem"
    ## Use TLS but skip chain & host verification
    # insecure_skip_verify = false

    # 自定义 tags
    # [inputs.dockerlog.tags]
    # tags1 = "tags1"

pipeline 配置和使用: pipeline 文档

- 如果配置文件中 `pipeline_path` 为空,默认使用 $source.p
- 如果 $source.p 不存在,将不使用 pipeline 功能
- 所有 pipeline 脚本文件,统一存放在 datakit 安装路径下的 pipeline 和 pattern 文件夹中,具体写法请看文档

Globs 规则简述:

通配符 描述 例子 匹配 不匹配
* 匹配任意数量的任何字符,包括无 Law* Law, Laws, Lawyer GrokLaw, La, aw
? 匹配任何单个字符 ?at Cat, cat, Bat, bat at
[abc] 匹配括号中给出的一个字符 [CB]at Cat, Bat cat, bat
[a-z] 匹配括号中给出的范围中的一个字符 Letter[0-9] Letter0, Letter1 … Letter9 Letters, Letter, Letter10
[!abc] 匹配括号中未给出的一个字符 [!C]at Bat, bat, cat Cat
[!a-z] 匹配不在括号内给定范围内的一个字符 Letter[!3-5] Letter1… Letter3 … Letter5, Letterxx

Docker 日志插件使用Docker Engine API 来获取正在运行的 Docker 容器的日志

采集指标

指标 类型 单位
container_image tags string
container_name tags string
container_version tags string
endpoint tags string
source tags string
stream tags string
container_id fields string
__content fields string

示例输出

test_container,container_image=cf,container_name=test_container,container_version=unknown,endpoint=unix:///var/run/docker.sock,source=ccbd9fac6539,stream=stdout message="2020-09-08T07:41:02Z [testing] - test01",container_id="ccbd9fac6539811f44fc76e694852bd0a12c415b7764030af2e3c807916a86b3" 1599550862380752586
test_container,container_image=cf,container_name=test_container,container_version=unknown,endpoint=unix:///var/run/docker.sock,source=ccbd9fac6539,stream=stdout message="2020-09-08T07:41:03Z [testing] - test02",container_id="ccbd9fac6539811f44fc76e694852bd0a12c415b7764030af2e3c807916a86b3" 1599550863381871160
test_container,container_image=cf,container_name=test_container,container_version=unknown,endpoint=unix:///var/run/docker.sock,source=ccbd9fac6539,stream=stdout message="2020-09-08T07:41:04Z [testing] - test03",container_id="ccbd9fac6539811f44fc76e694852bd0a12c415b7764030af2e3c807916a86b3" 1599550864382903094
test_container,container_image=cf,container_name=test_container,container_version=unknown,endpoint=unix:///var/run/docker.sock,source=ccbd9fac6539,stream=stdout message="2020-09-08T07:41:05Z [testing] - test04",container_id="ccbd9fac6539811f44fc76e694852bd0a12c415b7764030af2e3c807916a86b3" 1599550865383325905
test_container,container_image=cf,container_name=test_container,container_version=unknown,endpoint=unix:///var/run/docker.sock,source=ccbd9fac6539,stream=stdout message="2020-09-08T07:41:06Z [testing] - test05",container_id="ccbd9fac6539811f44fc76e694852bd0a12c415b7764030af2e3c807916a86b3" 1599550866384325478