当前位置: 首页 > backend >正文

Traefik 可观测性最佳实践

Traefik 介绍

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

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

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

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

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

观测云

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

部署 DataKit

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

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

采集器配置

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

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

1、开启traefix采集器

cp /usr/local/datakit/conf.d/prom/prom.conf.sample /usr/local/datakit/conf.d/prom/traefik.conf

2、修改 traefik.conf 配置文件

[[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_totalCount
max_fdsraefik进程最大的fdCount
open_fds进程打开的fdCount
resident_memory_bytes进程占用内存Count
start_time_seconds进程启动时间Count
virtual_memory_bytes进程占用虚拟内存Count
virtual_memory_max_bytesCount

场景视图

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

监控器(告警)

平均请求延迟告警

错误请求数突增告警

总结

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

http://www.xdnf.cn/news/13527.html

相关文章:

  • Windows 系统中修改文件默认打开方式
  • Shuffle流程
  • enumerable 和 configurable 属性详解
  • Vision Prompt Tune(视觉提示微调)
  • 如何在同一台电脑上安装并运行多个版本的 IntelliJ IDEA
  • Redis核心技术与实战指南
  • 品牌形象全面升级|Apache Fory:破界新生,开启高性能序列化新纪元
  • 单片机 - STM32 非阻塞式编程详解:以 LED 和按键为例(附超详细寄存器级代码)
  • 康谋方案 | 高精LiDAR+神经渲染3DGS的完美融合实践
  • html转markdown
  • 【JavaSE】IO流学习笔记
  • 让Python成为你的网站引擎:Django全栈开发初体验!!!
  • 蓝桥杯等竞赛场景下 C++ 的时间与空间复杂度深度解析​
  • 【论文解读】Search-o1:用 Agentic 搜索增强推理模型
  • Oracle 的AHF (Automatic Health Framework) 工具
  • java实现RabbitMQ消息发送和接收功能(包含测试)
  • 日语学习-日语知识点小记-进阶-JLPT-真题训练-N2阶段(1):单词部分练习
  • Unity3D SRP Batcher原理分析
  • DEM 地形分析与水文建模:基于 ArcGIS 的流域特征提取
  • Android 10.0 勿扰模式开启关闭功能实现
  • DevOps软件开发流程规范
  • 抖音授权登录-获取用户授权调用凭证
  • MySQL进阶之索引(1)索引结构分类语法和SQL性能分析
  • Guava常用工具类使用教程
  • 使用OpenCV和Python进行图像掩膜与直方图分析
  • Java基于局域网的聊天室系统设计与实现,附源码+论文
  • ACS的ExtendedSegmentArc1 方法说明
  • 代理模式:AOP 切面编程的底层实现基础
  • Hello Robot发布Stretch3机器人高保真模拟平台-Stretch MuJoCo v0.5-涵盖数百种Robocasa厨房应用测试场景
  • 零基础设计模式——行为型模式 - 中介者模式