TKE容器服务结合日志服务进行使用详解

2019-12-27 14:44:35 浏览数 (1)

日志采集介绍

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

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

可根据以下操作开启日志采集功能:

点击“新建”即可开启点击“新建”即可开启

这里需要注意的是想要使用此功能,需要选择 docker 作为运行时组件:

由于文档:https://cloud.tencent.com/document/product/457/36771 介绍比较简略,再此针对投递到日志服务的三种采集类型:采集容器标准输出日志、采集容器内文件日志、采集主机内文件日志 依次进行试验。(ps:这里有“查看示例”,但是指向的是老版控制台的链接)

使用前提:创建日志集和日志主题

登录日志服务控制台新建日志集及日志主题。创建日志主题时,详情请参见创建日志集和日志主题。

每个分区提供5MB/s的读能力,建议业务根据实际的日志流量规划好分区数。

日志服务控制台 https://console.cloud.tencent.com/cls/logset

(PS:TKE 容器集群的日志只能投递到同地域的日志服务)

需要注意的是“采集状态”一定要开启,否则是无法对日志进行采集的。

开始测试

1、采集容器标准输出日志

  • stdout,stderr 标准输出这种形式的日志输出我们可以直接使用docker logs查看日志, k8s 集群中同样集群可以使用kubectl logs类似的形式查看日志。

这里选择日志源为所有容器,点击“完成”,cls 就会对日志进行采集了。

我们来看下效果,来检索一下,咦~怎么没有内容呐?

原来对日志进行检索和分析需要先开启并配置索引规则才行,详情请参见开启索引

索引的相关介绍可以参考官方文档索引的相关介绍可以参考官方文档

效果如下;

2、采集容器内文件日志

采集容器标准输出日志有时无法满足需求,这时可以考虑采集容器内文件的日志、

比如我搭建了一个Nginx服务,我只想收集Nginx的访问日志和错误日志,该怎么设置呐?

首先创建deployment的时候,需要保证容器的日志文件保存在数据卷,那么添加的时候使用功能就行。

Ⅰ、选择数据卷

这里没有云硬盘,可以选择主机路径也可以,毕竟云盘是计费的,但是这里有个好处是选择云盘即使节点销毁了,也不影响已存储的日志,使用云硬盘数据卷适用于数据的持久化保存。

Ⅱ、设置挂载点,即数据卷挂载到容器中的路径

Nginx日志默认是放在/var/log/nginx下的,所以填写如下:

Ⅲ、新建日志采集路径,选择类型:容器文件路径

收集访问和错误日志,设置如下,点击完成

Ⅳ、大功告成,检验一下

在日志检索界面,可以看到请求方式、状态码等信息。

那如果想查询状态码不是200的请求日志怎么办呐?客观别急,这里可以使用日志的检索功能。

如输入“HTTP/1.1 NOT 200”,过滤出来的都是异常请求的状态码,关键字检索语法,请参见检索语法与规则

404是测试时随便写了个url404是测试时随便写了个url

3、采集主机内文件日志

采集集群内所有节点的指定主机路径的日志,注意:这里采集的是节点路径上的日志,而非容器的

且这里定义的metadata会输出到用户指定的输出端,如


这里针对文档上描述的比较模糊的部分,稍微展开测试下,这样大家也会有较为直观的感受。内容可能较为简单,还请多多支持!

0 人点赞