使用腾讯云CLS收集TKE(k8s)业务日志
使用 CLS 来采集业务日志的好处有
- 运维方便,不用费劲搭建 ELK 系统,传统的
filebeat->kafka->logstash->ElasticSearch架构复杂 - 费用便宜(和 ES、kafka 这一套相比)
- 不用担心告警等(如 ES 磁盘使用率等)
开启采集
在集群管理界面,点击 日志 新增采集配置:
然后选择日志源、元数据等,点击下一步,配置日志解析方式。
如果是纯 json 日志,就配置成 json 格式解析。业务日志是 Spring Boot,并且包含多行日志,所以选择 多行 - 完全正则 模式来匹配。
点击完成后就完成了日志采集。
多行正则模式匹配
假设业务日志格式为:
1 | 2026-01-07 20:58:29.335 INFO [tsp-agent,517f1bd4b38282b2,e66be3ada6f121cf,true] [XNIO-1 task-7] c.ingeek.nub.webmvc.filter.PrintFilter [145]: 响应 |
那么我们需要的日志字段有(按日志顺序):
2026-01-07 20:58:29.335日志时间INFO日志级别[服务名,TraceId, SpanId, 不知道是什么字段][XNIO-1 task-7]XNIO:是 XNIO 框架的线程池 task-7:线程池中的第 7 个工作线程c.ingeek.nub.webmvc.filter.PrintFilter哪个类打印出来的[145]上面的 java 类的第 145 行打印的日志- 冒号
:后面的是日志原文了,多行的
根据这个,写一个正则,然后点击提取验证。
1 | (\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3})\s+(\w+)\s+\[([^,\]]*),([^,\]]*),([^,\]]*),[^,\]]*\]\s+\[[^\]]+\]\s+([^\s[]+)\s*\[\d+\]:\s*(.*) |
需要的字段,用括号 () 包起来,点击提取验证,下面就会有示例:
给提取到的日志起个 Key 名
然后到 CLS 日志 -> 检索分析里面,可以看到日志字段都成功解析了。
Ingress Nginx 访问日志采集
比如想采集 ingress-nginx 的访问日志,需要先配置 ingress controller 的日志输出格式(Nginx 同理)。然后再进行采集,日志解析格式为 json 即可。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 杂烩饭!
评论




