Docker事件信息记录了容器、镜像、插件、网络、存储等所有交互事件。本文介绍如何通过日志服务控制台创建Logtail采集配置采集Docker事件。

前提条件

已在服务器上安装Linux Logtail 0.16.18及以上版本。具体操作,请参见安装Logtail(Linux系统)

限制说明

  • Logtail可运行在容器模式或宿主机上,需具备访问Docker的权限(可以访问到/var/run/docker.sock)。

    Logtail采集Kubernetes日志请参见采集Kubernetes日志,采集标准容器日志请参见采集标准Docker容器日志

  • Logtail在重启或停止期间,无法采集容器事件。

应用场景

  • 监控所有容器的启停事件,当核心容器停止后立即告警。
  • 采集所有容器事件,用于审计、安全分析、问题排查。
  • 监控所有镜像的拉取事件,如果拉取非合法路径的镜像时立即告警。

操作步骤

  1. 登录日志服务控制台
  2. 接入数据区域,选择自定义数据插件
  3. 选择目标Project和Logstore,单击下一步
  4. 创建机器组页签中,创建机器组。
    • 如果您已有可用的机器组,请单击使用现有机器组
    • 如果您还没有可用的机器组,请执行以下操作(以ECS为例)。
      1. ECS机器页签中,通过手动选择实例方式选择目标ECS实例,单击创建

        更多信息,请参见安装Logtail(ECS实例)

        重要
        • 如果您的服务器是与日志服务属于不同账号的ECS、其他云厂商的服务器和自建IDC时,您需要手动安装Logtail。更多信息,请参见安装Logtail(Linux系统)
        • 手动安装Logtail后,您还需要在该服务器上手动配置用户标识。具体操作,请参见配置用户标识
      2. 安装完成后,单击确认安装完毕
      3. 创建机器组页面,输入名称,单击下一步

        日志服务支持创建IP地址机器组和用户自定义标识机器组,详细参数说明请参见创建IP地址机器组创建用户自定义标识机器组

  5. 选中目标机器组,将该机器组从源机器组移动到应用机器组,单击下一步
    重要 创建机器组后立刻应用,可能因为连接未生效,导致心跳为FAIL,您可单击自动重试。如果还未解决,请参见Logtail机器组无心跳进行排查。
  6. 数据源设置页签中,设置配置名称插件配置,然后单击下一步
    • inputs为数据源配置,必选项。
      重要 一个inputs中只允许配置一个类型的数据源。
    • processors为处理配置,用于解析数据。可选项,您可以配置一种或多种处理方式。

      如果当前的inputs配置无法满足日志解析需求,您可以在插件配置中添加processors配置,即添加Logtail插件处理数据。例如提取字段、提取日志时间、脱敏数据、过滤日志等。更多信息,请参见使用Logtail插件处理数据

    {
      "inputs": [
        {
          "detail": {},
          "type": "service_docker_event"
        }
      ]
    }
    配置项类型是否必须说明
    typestring数据源类型,固定为service_docker_event
    EventQueueSizeint事件缓冲队列大小。不配置时,默认为10,无特殊需求请保持默认设置。
  7. 预览数据及创建索引,然后单击下一步
    日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将自动生成字段索引。更多信息,请参见创建索引
    重要 如果您要查询和分析日志,那么全文索引和字段索引必须至少启用一种。同时启用时,以字段索引为准。
  8. 单击查询日志,系统将跳转至Logstore查询分析页面。
    您需要等待1分钟左右,待索引生效后,才能在原始日志页签中,查看已采集到的日志。更多信息,请参见查询和分析日志

问题排查

使用Logtail采集日志后,如果预览页面或查询页面无数据,您可以参见Logtail采集日志失败的排查思路进行排查。

日志样例

Docker事件样例如下所示。

  • 样例1:镜像拉取事件
    __source__:  10.10.10.10
    __tag__:__hostname__:  logtail-ds-77brr
    __topic__:  
    _action_:  pull
    _id_:  registry.cn-hangzhou.aliyuncs.com/ringtail/eventer:v1.6.1.3
    _time_nano_:  1547910184047414271
    _type_:  image
    name:  registry.cn-hangzhou.aliyuncs.com/ringtail/eventer
  • 样例2:Kubernetes中容器的销毁事件
    __source__:  10.10.10.10
    __tag__:__hostname__:  logtail-ds-xnvz2
    __topic__:  
    _action_:  destroy
    _id_:  af61340b0ac19e6f5f32be672d81a33fc4d3d247bf7dbd4d3b2c030b8bec4a03
    _time_nano_:  1547968139380572119
    _type_:  container
    annotation.kubernetes.io/config.seen:  2019-01-20T15:03:03.114145184+08:00
    annotation.kubernetes.io/config.source:  api
    annotation.scheduler.alpha.kubernetes.io/critical-pod:  
    controller-revision-hash:  2630731929
    image:  registry-vpc.cn-hangzhou.aliyuncs.com/acs/pause-amd64:3.0
    io.kubernetes.container.name:  POD
    io.kubernetes.docker.type:  podsandbox
    io.kubernetes.pod.name:  logtail-ds-44jbg
    io.kubernetes.pod.namespace:  kube-system
    io.kubernetes.pod.uid:  6ddcf598-1c81-11e9-9ddf-00163e0c7cbe
    k8s-app:  logtail-ds
    kubernetes.io/cluster-service:  true
    name:  k8s_POD_logtail-ds-44jbg_kube-system_6ddcf598-1c81-11e9-9ddf-00163e0c7cbe_0
    pod-template-generation:  9
    version:  v1.0

Docker事件的日志字段如下。更多信息,请参见Docker官方文档

字段说明
_type_资源类型,例如container、image。
_action_操作类型,例如destroy、status。
_id_事件唯一标识。
_time_nano_事件的时间戳。