前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >依葫芦画瓢,我用Loki画了个Traefik的面板

依葫芦画瓢,我用Loki画了个Traefik的面板

作者头像
崔秀龙
发布2021-01-29 07:38:38
8460
发布2021-01-29 07:38:38
举报
文章被收录于专栏:伪架构师伪架构师

前段时间在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格式如下:

代码语言:javascript
复制
<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

代码语言:javascript
复制
accessLog:
  format: json

默认traefik的日志输出为stdout,如果你的采集端是通过读取文件的话,则需要用filePath参数将traefik的日志重定向到文件目录

绘制Grafana面板

大体的监控面板,小白已经绘制好并发布到Grafana Lab,我们访问页面https://grafana.com/grafana/dashboards/13713就可以将面板下载到本地

将下载的面板json文件导入到Grafana,导入后更换uidLoki源

导入后你将获得一个空白的面板,如下

别急,空白的原因是logql没有查询到合适日志,我们需要修改每个panel的查询语句,让他定位到合适的日志。面板默认的日志标签是{job="/var/log/traefik.log"},我们需要改成适应自己环境的label

最后就能得到如下面板,在这里我们可以看到经过Treafik的HTTP请求状态请求耗时以及路由分布等信息。

总结

Traefik的面板仅仅只是依葫芦画瓢的抄袭了官方的Nginx面板,不过在"抄袭"的过程中也能学习到几个LogQL的重要语句的使用场景。

  • 样本排序统计百分位

在TP95的面板中我们使用了如下语法,主要的意思是将traefik日志中的Duration值按照时间变量$__interval进行排序,取第95%位上的值

代码语言:javascript
复制
quantile_over_time(0.95,{job="xxx"} 
|= "RequestProtocol"
| json 
| unwrap Duration 
|  __error__=""  [$__interval]) by (ServiceName)
  • 统计请求异常率

在异常请求率的面板中,我们不光使用了Label filters来过滤状态中大于400的请求,同时还用除法/来计算整体的异常百分比。

代码语言:javascript
复制
sum(rate({job="xxx"} 
|~ "RequestProtocol" 
| json 
| OriginStatus >= 400 
|__error__=""[$__interval])) 
/ (sum(rate({job="xxx"} 
|~ "RequestProtocol" 
| json 
| __error__=""[$__interval])) 
/ 100)

可以看到,LogQL v2强大的日志查询分析能力让日志的可玩性大幅提升。和Prometheus一样,Loki作为云原生可观测性下的日志一环,其后续发展也越来越值得关注。

你可能还喜欢

点击下方图片即可阅读

如何用Loki来绘制Ingress Nginx监控大屏

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 伪架构师 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Traefik
    • 配置Access Logs
    • 绘制Grafana面板
    • 总结
    相关产品与服务
    Grafana 服务
    Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档