Traefik 可观测性最佳实践

Traefik 介绍

Traefik 是一款领先的现代开源反向代理和入口控制器,它使部署服务和应用程序编程接口(API)变得轻松便捷。

Traefik 可以与现有的基础设施组件集成,能够自动、动态地进行自我配置。当客户端发起请求,Traefik 凭借其强大的路由功能,精准地将请求导向对应的后端服务器,全程对客户端隐藏后端服务器的真实地址,极大提升系统安全性与运维便捷性。在容器化与微服务盛行的架构里,Traefik 能够自动感知容器或服务的动态变化,像容器的启动、停止,服务的注册、注销等,继而动态更新路由规则,全程无需人工手动干预,实现了应用交付的自动化。

与需要手动配置的传统反向代理不同,Traefik 使用服务发现来动态配置路由。Traefik 支持所有主要协议,利用丰富的中间件实现负载平衡、速率限制、断路器、镜像、身份验证等。

同时,Traefik 作为关键的反向代理与入口控制器,对其进行监控至关重要。监控可保障服务可用性,及时察觉性能瓶颈与故障,避免服务中断。能优化性能,依据负载及流量分布调整配置,实现合理流量分配。在故障排查时,凭借详细日志与指标快速定位问题根源,减少服务中断时间。总之,对 Traefik 的监控能助力服务稳定、高效、安全运行。

Traefik 的运行指标监控除了支持 OpenTelemetry 的格式外,还支持Datadog、InfluxDB2、Prometheus 和 StatsD 的数据格式。Traefik 指标开启的详细配置说明,请参考如下官网链接:
doc.traefik.io/traefik/obs...

观测云

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

部署 DataKit

DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。

登录观测云控制台,在「集成」 - 「DataKit」选择对应安装方式,当前采用 Linux 主机部署 DataKit。

采集器配置

如下的步骤说明是基于 Traefik 开启了 Prometheus 数据格式的方式进行说明。

首先,我们将通过 DataKit 中的 Prom 采集器对 traefik 暴露出来的监控指标进行采集。采集器配置说明如下:

1、开启traefix采集器

bash 复制代码
cp /usr/local/datakit/conf.d/prom/prom.conf.sample /usr/local/datakit/conf.d/prom/traefik.conf

2、修改 traefik.conf 配置文件

ini 复制代码
[[inputs.prom]]
  urls = ["http://traefik_address:8082/metrics"]
  ## 忽略对 url 的请求错误
  ignore_req_err = false
  ## 采集器别名
  source = "traefik"
  metric_types = []
  measurement_prefix = "traefik_"
  ## 采集间隔 "ns", "us" (or "µs"), "ms", "s", "m", "h"
  interval = "10s"
  ## TLS 配置
  tls_open = false
  ## 自定义Tags
  [inputs.prom.tags]
  # some_tag = "some_value"
  # more_tag = "some_other_value"

主要参数说明:

  • urls:这里填写 traefik 暴露出来的指标 url
  • source:采集器别名,建议写成 traefik
  • interval:采集间隔
  • measurement_prefix:指标前缀,便于指标分类查询
  • tls_open:TLS 配置
  • metric_types:指标类型,不填,代表采集所有指标

3、重启 DataKit 服务让配置生效

复制代码
datakit service -R

关键指标

Traefix

指标名 指标描述 指标类型
config_reloads_total 配置重新加载的总次数 Count
config_last_reload_success 上次配置重新加载成功的时间戳。 Gauge
open_connections 按入口点或协议统计划分的当前打开连接数 Gauge
tls_certs_not_after 证书的过期日期 Gauge
entrypoint_requests_total 入口点接收到的 HTTP 请求的总数 Count
entrypoint_request_duration_seconds_bucket 入口点请求持续时间(以秒为单位)的桶状分布指标 Count
entrypoint_request_duration_seconds_count 入口点请求持续时间的计数指标,用于统计总的请求数量 Count
entrypoint_request_duration_seconds_sum 入口点请求持续时间的总和指标,它将所有请求的处理时间(以秒为单位)相加,得到一个总的时间值 Count
entrypoint_requests_bytes_total 入口点处理的 HTTP 请求的总大小(以字节为单位) Count
entrypoint_responses_bytes_total 入口点处理的 HTTP 响应的总大小(以字节为单位) Count
router_request_duration_seconds_bucket 路由请求持续时间(以秒为单位)的桶状分布指标 Count
router_request_duration_seconds_count 路由请求持续时间的计数指标,用于统计总的请求数量 Count
router_request_duration_seconds_sum 路由请求持续时间的总和指标,它将所有请求的处理时间(以秒为单位)相加,得到一个总的时间值 Count
router_requests_bytes_total 路由点请求持续时间(以秒为单位)的桶状分布指标 Count
router_requests_total 路由点请求持续时间(以秒为单位)的桶状分布指标 Count
router_responses_bytes_total 路由点请求持续时间的计数指标,用于统计总的请求数量 Count
service_request_duration_seconds_bucket 服务请求持续时间(以秒为单位)的桶状分布指标 Count
service_request_duration_seconds_count 路由请求持续时间的计数指标,用于统计总的请求数量 Count
service_request_duration_seconds_sum 路由请求持续时间的总和指标,它将所有请求的处理时间(以秒为单位)相加,得到一个总的时间值 Count
service_requests_bytes_total 路由点请求持续时间(以秒为单位)的桶状分布指标 Count
service_requests_total 路由点请求持续时间(以秒为单位)的桶状分布指标 Count
service_responses_bytes_total 路由点请求持续时间的计数指标,用于统计总的请求数量 Count

Process

指标名 指标描述 指标类型
cpu_seconds_total Count
max_fds raefik进程最大的fd Count
open_fds 进程打开的fd Count
resident_memory_bytes 进程占用内存 Count
start_time_seconds 进程启动时间 Count
virtual_memory_bytes 进程占用虚拟内存 Count
virtual_memory_max_bytes Count

场景视图

登录观测云控制台,点击「场景」 -「新建仪表板」,输入 "Traefik", 选择 "Traefik 监控视图",点击 "确定" 即可添加视图。

监控器(告警)

平均请求延迟告警

错误请求数突增告警

总结

总之,通过对 Traefik 的监控,让使用者能够清晰洞察和掌控各服务的访问流量与响应情况,从而能够迅速察觉并处理潜在问题,确保整个服务访问的稳定运行。

相关推荐
可观测性用观测云1 天前
观测云,全球领先的监控观测平台亮相亚马逊云科技中国峰会!
监控
可观测性用观测云6 天前
观测云OaC能力升级,通过Terraform实现配置闭环
监控
可观测性用观测云13 天前
HAProxy 可观测性最佳实践
监控
Hello World......23 天前
互联网大厂Java面试:从Spring到微服务的深度探讨
数据库·spring boot·微服务·监控·java面试·日志管理·缓存技术
Sylvan Ding25 天前
远程主机状态监控-GPU服务器状态监控-深度学习服务器状态监控
运维·服务器·深度学习·监控·远程·gpu状态
杰克逊的日记1 个月前
SkyWalking的工作原理和搭建过程
云原生·监控·skywalking
小黑_深呼吸1 个月前
Prometheus实战教程:k8s平台-Redis监控案例
运维·kubernetes·prometheus·监控
小马爱打代码1 个月前
Spring Boot Actuator - 应用监控与管理
spring boot·监控
ak啊2 个月前
基于 Prometheus 的后端服务性能故障监控方案
监控