《TKE学习》TKE服务中的日志采集 (九)

使用场景

日志采集功能是容器服务为用户提供的集群内日志采集工具,可以将集群内服务或集群节点特定路径文件的日志发送至 Kafka、Elasticsearch或者腾讯云日志服务(CLS)。日志采集功能适用于需要对 Kubernetes 集群内服务日志进行存储和分析的用户。

日志采集功能需要为每个集群手动开启。日志采集功能开启后,日志采集 Agent 会在集群内以 DaemonSet 的形式运行,并根据用户通过日志采集规则配置的采集源和消费端,从采集源进行日志采集,将日志内容发送到消费端。您可根据以下操作开启日志采集功能:

  • 采集容器标准输出日志
  • 采集容器内文件日志
  • 采集主机内文件日志
  • 配置日志消费端

前提条件

  • 请在开启前保证集群节点上有足够资源。开启日志采集功能会占用您集群的部分资源,默认会占用集群每个节点约0.3核 CPU,250MB内存。
    • 占用 CPU 资源:默认0.3核,日志量过大时可根据情况自行调大,建议最大设置为 request 1核,limit 2核。
    • 占用内存资源:默认250MB,日志量过大时可根据情况自行调大,建议最大设置为 request 1GB,limit 1.5GB。
    • 日志长度限制:单条512K,如超过会截断。
  • 若使用日志采集功能,请确认 Kubernetes 集群内节点能够访问日志消费端。且以下日志采集功能仅支持 Kubernetes 1.10 以上版本集群。

概念

  • 日志采集 Agent:TKE 用于采集日志信息的 Agent,基于 Fluentd 开发,在集群内以 DaemonSet 的方式运行。
  • 日志采集规则:用户可以使用日志采集规则指定日志的采集源以及将采集的日志发送至指定消费端。
    • 日志采集 Agent 会监测日志采集规则的变化,变化的规则会在最多10s内生效。
    • 多条日志采集规则不会创建多个 DaemonSet,但过多的日志采集规则会使得日志采集 Agent 占用的资源增加。
  • 日志源:包含指定容器日志以及主机路径日志。
    • 在需要采集集群内服务打印到标准输出的日志时,用户将日志的采集源为指定容器日志、所有 Namespace 服务的日志或若干个指定 Namespace 内的服务日志。
    • 在需要采集集群内节点特定路径的日志时,用户可以设定日志的采集源为主机路径日志,例如当需要采集所有路径形式为 /var/lib/docker/containers//.json-log 的日志时,可以指定日志采集路径为 /var/lib/docker/containers/*/*.json-log
  • 消费端:日志采集 Agent 在采集指定采集源的日志后,会将采集到的日志发送至用户指定的消费端。
    • 日志采集服务支持用户自建的 Elasticsearch 、Kafka 、腾讯云的 Ckafka 服务或腾讯云日志服务(CLS)作为日志的消费端。
    • 日志采集 Agent 会将采集到的日志以 JSON 的形式发送至用户指定的消费端。

TKE实践

采集容器标准输出日志

日志采集功能支持采集 Kubernetes 集群内指定容器的标准输出日志,用户可以根据自己的需求,灵活的配置采集规则。

采集到的日志信息将会以 JSON 格式输出到用户指定的消费端,并会附加相关的 Kubernetes metadata,包括容器所属 pod 的 label 和 annotation 等信息。

配置方法

1、登录 容器服务控制台,单击左侧导航栏【日志采集】。

2、在日志采集页面上方选择地域与集群后,单击【新建】。如下图所示:

Snipaste_2019-11-26_15-38-24.png

3、在新建日志收集规则页面,选择【容器标准输出】采集类型,并配置日志源。如下图所示:

Snipaste_2019-11-26_15-41-58.png

选择容器标准输出采集类型时,会默认为每条日志添加以下 metadata,其中 log 为原始日志信息。且该类型日志源支持一次选择多个 Namespace 的工作负载。

字段名

含义

docker.container_id

日志所属的 container ID

kubernetes.annotations

日志所属 pod 的 annotations

kubernetes.container_name

日志所属的 container name

kubernetes.host

日志所属 pod 所在的机器 IP

kubernetes.labels

日志所属 pod 的 labels

kubernetes.namespace_name

日志所属 pod 的 namespace

kubernetes.pod_id

日志所属 pod 的 ID

kubernetes.pod_name

日志所属 pod 的名字

log

原始日志信息

4、配置日志消费端,推荐以日志服务CLS 为消费端。如下图所示:

Snipaste_2019-11-26_15-43-15.png

5、单击【完成】,完成创建。

采集容器内文件日志

日志采集功能也支持采集集群内指定 pod 内文件的日志。

采集到的日志信息将会以 JSON 格式输出到用户指定的消费端,并会附加相关的 Kubernetes metadata,包括容器所属 pod 的 label 和 annotation 等信息。

NT:

目前仅支持采集存储在 volume 的日志文件,即需要在工作负载创建时挂载 emptyDir、hostpath 等 volume,并将日志文件存到指定 volume。

配置方法

  1. 登录 容器服务控制台,单击左侧导航栏【日志采集】。
  2. 在日志采集页面上方选择地域与集群后,单击【新建】。
  3. 指定【容器文件路径】采集类型,并配置日志源。如下图所示:

说明:

用户可以通过指定日志文件的路径来采集 pod 上相应路径的日志文件,路径支持文件路径和通配规则,如 /var/log/nginx.log/var/lib/docker/containers/*/*.log

Snipaste_2019-11-26_16-06-21.png

选择容器文件路径采集类型时,会默认为每条日志添加以下 metadata,其中 message 为原始日志信息。且该类型日志源不支持选择多个 Namespace 的工作负载。

字段名

含义

docker.container_id

日志所属的 container ID

kubernetes.annotations

日志所属 pod 的 annotations

kubernetes.container_name

日志所属的 container name

kubernetes.host

日志所属 pod 所在的机器 IP

kubernetes.labels

日志所属 pod 的 labels

kubernetes.namespace_name

日志所属 pod 的 namespace

kubernetes.pod_id

日志所属 pod 的 ID

kubernetes.pod_name

日志所属 pod 的名字

file

源日志文件

message

原始日志信息

  1. 配置日志消费端,推荐以日志服务CLS 为消费端。如上图所示:
  2. 单击【完成】,完成创建。

采集主机内文件日志

日志采集功能支持采集集群内所有节点的指定主机路径的日志。用户可以根据自己的需求,灵活的配置所需的路径,日志采集 Agent 会采集集群内所有节点上满足指定路径规则的文件日志。

采集到的日志信息将会以 JSON 格式输出到用户指定的输出端,并会附加用户指定的 metadata,包括日志来源文件的路径和用户自定义的 metadata。

配置方法

  1. 登录容器服务控制台,单击左侧导航栏【日志采集】。
  2. 在日志采集页面上方选择地域与集群后,单击【新建】。
  3. 在新建日志采集规则页面,指定【节点文件路径】采集类型。如下图所示:

说明:

用户可以通过指定日志文件的路径来采集集群内节点上相应路径的日志文件,路径支持文件路径和通配规则,如 /var/log/nginx.log/var/lib/docker/containers/*/*.log

Snipaste_2019-11-26_16-17-33.png

用户可根据实际需求进行添加自定义的 “metadata” ,将采集到的日志信息附加指定 Key-Value 形式的 “metadata”,作为日志信息的 metadata 标记。

日志 metadata 含义如下表:

字段名

含义

path

日志的来源文件

message

日志信息

自定义 key

自定义 value

  1. 配置日志消费端,推荐以日志服务CLS 为消费端。如上图所示:
  2. 单击【完成】,完成创建。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏和baron一起学习TKE

《TKE学习》部署容器服务 TKE(二)

首先您需要创建集群。集群是指容器运行所需云资源的集合,包含了若干台云服务器、负载均衡器等腾讯云资源。

15430
来自专栏和baron一起学习TKE

《TKE学习》TKE服务中的告警服务 (十)

良好的监控环境为腾讯云容器服务高可靠性、高可用性和高性能提供重要保证。您可以方便为不同资源收集不同维度的监控数据,能方便掌握资源的使用状况,轻松定位故障。

9830
来自专栏腾讯云技术沙龙

黄宏东:冲上云霄-腾讯海量业务上云实践

11月9日,云+社区技术沙龙“高效智能运维”圆满落幕。本期沙龙围绕运维展开了一场技术盛宴,从AIOps、Serverless DevOps、蓝鲸PaaS平台、K...

14130
来自专栏Beyond Coding

Docker 容器真的安全吗?

本文基于我今年在DockerCon上的演讲。它将讨论 Docker 容器安全性,我们当前的位置以及未来的发展方向。

11030
来自专栏腾讯云TStack专栏

腾讯云原生中台TCNP亮相开源基础设施峰会,赋能各行业迭变升级

2019年11月4日-6日,开源基础设施峰会(OPEN INFRASTRUCTURE SUMMIT)在上海隆重举办。腾讯云副总裁吴凯华在主旨分享环节以《腾讯的...

13710
来自专栏和baron一起学习TKE

《TKE学习》TKE服务中的ingress (七)

通常情况下,集群中的service和pod仅可在集群内部网络中通过IP地址访问。所有到达边界路由器的流量或被丢弃或被转发到其他地方。

8210
来自专栏互联网运维杂谈

【技术篇】细看名字服务中心

名字服务就是服务间“你寻我,我寻你”的爱情游戏,因为它总是为彼此找到最佳"伴侣",不是么?

11010
来自专栏和baron一起学习TKE

《TKE学习》TKE服务中的HELM应用 (八)

在Kubernetes中部署容器云应用(容器或微服务编排)是一项有挑战性的工作,Helm就是为了简化在Kubernetes中安装部署容器云应用的一个客户端工具...

6710
来自专栏人工智能头条

IaaS的演进!三句话九张图摸底裸金属和容器即服务

近两年来,只要是与IaaS(基础设施即服务)相关,不论是共襄盛举的业界峰会,还是个别云服务提供商的新品发布,“裸金属即服务”和“容器即服务”都会被频频提及,风头...

5810

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励