网站首页 > 精选文章 正文
依葫芦画瓢,我用Loki画了个Traefik的面板
前段时间在Loki2.0发布时,更新了一个配套的用LogQL语法绘制Nginx监控面板的Demo。今天小白准备用同样的手法炮制一个基于Traefik日志的监控面板。还不清楚之前Nginx面板操作的同学可以看参考文末后的推荐阅读。
Traefik
Traefik是一个用Golang实现的云原生轻量级HTTP反向代理工具。由于它支持配置适配多种后端服务(docker,kubernetes,Mesos,redis)来做动态的路由配置。当前Rancher的边缘产品K3S也默认把Traefik作为默认的Ingress管理器,足以可见traefik也越来越受到广大开发者的喜爱。
那么,Traefik的可观察性除了打开默认的Metrics之外,我们还可以通过日志方式绘制实时监控面板。
配置Access Logs
traefik默认的access log格式如下:
<remote_IP_address> - <client_user_name_if_available> [<timestamp>] "<request_method> <request_path> <request_protocol>" <origin_server_HTTP_status> <origin_server_content_size> "<request_referrer>" "<request_user_agent>" <number_of_requests_received_since_Traefik_started> "<Traefik_router_name>" "<Traefik_server_URL>" <request_duration_in_ms>ms
虽然看起来比较直观,不过这样的日志存入在Loki中,我们还需要通过正则表达式解析,非常的不方便。所以我们还是将日志格式改为json,方便logql解析。
按如下方式修改traefik.yaml
accessLog:
format: json
默认traefik的日志输出为stdout,如果你的采集端是通过读取文件的话,则需要用filePath参数将traefik的日志重定向到文件目录
绘制Grafana面板
大体的监控面板,小白已经绘制好并发布到Grafana Lab,我们访问页面
https://grafana.com/grafana/dashboards/13713就可以将面板下载到本地
将下载的面板json文件导入到Grafana,导入后更换uid和Loki源
导入后你将获得一个空白的面板,如下
别急,空白的原因是logql没有查询到合适日志,我们需要修改每个panel的查询语句,让他定位到合适的日志。面板默认的日志标签是{job="/var/log/traefik.log"},我们需要改成适应自己环境的label
最后就能得到如下面板,在这里我们可以看到经过Treafik的HTTP请求状态,请求耗时以及路由分布等信息。
总结
Traefik的面板仅仅只是依葫芦画瓢的抄袭了官方的Nginx面板,不过在"抄袭"的过程中也能学习到几个LogQL的重要语句的使用场景。
- 样本排序统计百分位
在TP95的面板中我们使用了如下语法,主要的意思是将traefik日志中的Duration值按照时间变量$__interval进行排序,取第95%位上的值
quantile_over_time(0.95,{job="xxx"}
|= "RequestProtocol"
| json
| unwrap Duration
| __error__="" [$__interval]) by (ServiceName)
- 统计请求异常率
在异常请求率的面板中,我们不光使用了Label filters来过滤状态中大于400的请求,同时还用除法/来计算整体的异常百分比。
sum(rate({job="xxx"}
|~ "RequestProtocol"
| json
| OriginStatus >= 400
|__error__=""[$__interval]))
/ (sum(rate({job="xxx"}
|~ "RequestProtocol"
| json
| __error__=""[$__interval]))
/ 100)
可以看到,LogQL v2强大的日志查询分析能力让日志的可玩性大幅提升。和Prometheus一样,Loki作为云原生可观测性下的日志一环,其后续发展也越来越值得关注。
关注公众号「云原生小白」,获取更多精彩内容
猜你喜欢
- 2025-07-15 阿里淘外商业化广告工程架构实践(阿里广告营销策划)
- 2025-07-15 TP-LINK面试真题和答案,您能做对几道?
- 2025-07-15 电商之下:电商订单系统,从0到1设计思路
- 2025-07-15 六星教育PHP大神进阶班怎么样?值不值得去听?
- 2025-07-15 写给技术工程师的十条精进原则(对技术工程师的尊称)
- 2025-07-15 谈谈Linux epoll惊群问题的原因和解决方案
- 2025-07-15 PHP培训课程内容都有哪些?PHP培训哪些内容?
- 2025-07-15 稳定性方法论:可灰度 & 可监控 & 可回滚
- 2025-07-15 概念篇:一篇文章让你彻底搞明白什么是微服务(值得收藏)
- 2025-07-15 怎么把CAT客户端的RootMessageId记录到每条日志中?
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)