日志采集介绍
日志采集功能是容器服务为用户提供的集群内日志采集工具,可以将集群内服务或集群节点特定路径文件的日志发送至 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”,过滤出来的都是异常请求的状态码,关键字检索语法,请参见检索语法与规则
3、采集主机内文件日志
采集集群内所有节点的指定主机路径的日志,注意:这里采集的是节点路径上的日志,而非容器的
且这里定义的metadata会输出到用户指定的输出端,如
这里针对文档上描述的比较模糊的部分,稍微展开测试下,这样大家也会有较为直观的感受。内容可能较为简单,还请多多支持!