CDN加速

容器日志分析

更新时间:2020-07-01 19:06:28

容器日志采集

日志服务,支持对运行在网宿云容器服务上的业务日志采集、统计分析,即打通了网宿云容器服务和日志服务。您可以从容器服务的集群列表界面上激活日志服务,并由系统自动创建日志仓库、机器组,自动下放采集代理等,您只需要在日志服务上完成创建日志组及简单的采集配置,即可完成容器日志的自动采集、统计分析。后续您可以从容器服务的集群列表上跳转到日志服务,在日志服务系统上完成容器服务上运行的业务日志分析。

实现原理

采集方案

网宿云容器服务的日志采集方案如下。
安全报告丨2017下半年Web应用攻击激增6倍安全报告丨2017下半年Web应用攻击激增6倍

  1. 容器服务的每个worker 节点都会运行一个agent容器,该容器可采集宿主机以及该宿主机上其他容器的日志(包括标准输出和日志文件)。
  2. agent以daemon set模式运行,保证每个节点都有一个agent容器在运行。
  3. 使用容器服务集群ID标识机器组,支持集群动态缩/扩容。
  4. 所有的采集配置支持通过docker lable以及环境变量过滤指定容器。
  5. 支持用户通过日志服务控制台对采集配置进行管理。

步骤说明

容器日志采集,大致分为以下3个步骤。
安全报告丨2017下半年Web应用攻击激增6倍安全报告丨2017下半年Web应用攻击激增6倍

  1. 容器服务上部署采集点(lmsagent)DaemonSet。
  2. 容器服务上的集群上自动完成日志仓库创建,和机器组的创建。也可以在日志服务控制台创建容器服务集群ID标识的机器组。
  3. 日志服务控制台创建采集配置(所有采集均为服务端配置,无需本地运维)。

采集配置


日志采集配置默认支持日志服务的控制台配置方式。请根据实际需求在日志服务控制台创建采集配置,支持的日志类型主要如下。 1. 容器标准输出 2. 容器内文本文件(暂未开放) 3. 宿主机文本文件

容器标准输出

日志采集支持将容器的标准输出流作为输入源,并附加容器的相关元数据信息一起上传到日志服务。
安全报告丨2017下半年Web应用攻击激增6倍安全报告丨2017下半年Web应用攻击激增6倍

实现原理

安全报告丨2017下半年Web应用攻击激增6倍安全报告丨2017下半年Web应用攻击激增6倍
用户在使用容器服务时,通过配置,将运行在容器中的业务应用日志输出到容器的标准输出上。容器服务,自动完成从标准输出接收业务日志内容存档到指定目录。然后由日志服务的采集点代理(lmsagent)到指定目录读取这部分标准输出的日志内容,采集上报到日志服务。

功能

Docker-标准输出采集需要具备以下功能。

  1. 支持采集stdout、stderr
  2. 支持label指定采集的容器
  3. 支持label排除特定容器
  4. 支持environment指定采集的容器
  5. 支持environment指定排除的容器

容器内文本文件

用户在使用网宿云容器服务时,通过配置,将运行在容器中的业务应用日志输出到容器的标准输出上。网宿云容器服务,暂时没有提供容器内生成日志文件的功能。日志服务,也暂时没有支持采集容器内文本文件的功能。

宿主机文本文件

用户在使用网宿云容器服务时,如果有在宿主机上生产日志内容,同时需要从日志服务上采集宿主机的文本文件时,采集方法同云主机上的日志采集,需要单独在宿主机上安装原生的采集点代理(agent)。

配置说明

配置项说明

采集配置项截图如下所示。
安全报告丨2017下半年Web应用攻击激增6倍安全报告丨2017下半年Web应用攻击激增6倍


各个配置项具体说明如下表所示。

配置项 是否必选 说明
Label白名单 可选 每项中LabelKey必填,若LabelValue不为空,则只采集容器label中包含LabelKey=LabelValue的容器;若LabelValue为空,则采集所有label中包含LabelKey的容器。
说明:
1.多个键值对间为或关系,即只要容器的label满足任一键值对即可被采集。
2.此处的label为docker inspect中的label信息。
Label黑名单 可选 每项中LabelKey必填,若LabelValue不为空,则只排除容器label中包含LabelKey=LabelValue的容器;若LabelValue为空,则排除所有label中包含LabelKey的容器。
说明:
1.多个键值对间为或关系,即只要容器的label满足任一键值对即可被排除。
2.此处的label为docker inspect中的label信息。
环境变量白名单 可选 每项中EnvKey必填,若EnvValue不为空,则只采集容器环境变量中包含EnvKey=EnvValue的容器;若EnvValue为空,则采集所有环境变量中包含EnvKey的容器。
说明:
1.多个键值对间为或关系,即只要容器的环境变量满足任一键值对即可被采集。
2.此处的environment为容器启动中配置的environment信息。
环境变量黑名单 可选 每项中EnvKey必填,若EnvValue不为空,则只排除容器环境变量中包含EnvKey=EnvValue的容器;若EnvValue为空,则排除所有环境变量中包含EnvKey的容器。
说明:
1.多个键值对间为或关系,即只要容器的环境变量满足任一键值对即可被排除。
2.此处的environment为容器启动中配置的environment信息。

元数据说明

字段名 说明
__time__ 数据时间,样例为2018-02-02T02:18:41.979147844Z
__source__ 输入源类型,stdout 或 stderr
__image_name__ 镜像名
__container_name__ 容器名
__pod_name__ pod名
__namespace__ pod所在命名空间
__pod_uid__ 该pod的唯一标识