字数 981,阅读大约需 5 分钟
使用traefik记录Metrics,通过prometheus采集,并在grafana可视化
traefik支持多种数据存储记录Metrics,本文以prometheus采集为例,演示如何通过traefik记录应用的Metrics:Traefik Metrics Overview - Traefik[1]
traefik新增配置
在traefik新增以下核心配置,主要目的是暴露“Prometheus metrics 添加一个新的入口点”,且以8082作为端口
metrics: # 移动到全局级别
prometheus:
buckets:
- 0.1
- 0.3
- 1.2
- 5.0
addRoutersLabels: true
addServicesLabels: true
addEntryPointsLabels: true
entryPoint: metrics
entryPoints:
http:
address: ":80"
http:
middlewares:
# - http-compress@file
- traceid@file # 明确指定使用 file 提供者
- logs@file
metrics: # 为 Prometheus metrics 添加一个新的入口点
address: ":8082"
prometheus采集traefik
采集配置
需要将采集任务写入到prometheus的配置文件里
# Traefik监控任务
- job_name: "traefik"
static_configs:
- targets: ["traefik:8082"] # Traefik服务的名称和metrics端口
prometheus部署配置如下
# Docker Compose版本号,指定使用Compose文件格式版本3
version: "3"
# 定义网络配置
networks:
platform-common-net:
external: true
# 定义服务配置
services:
# Prometheus监控服务
prometheus:
# 使用官方Prometheus镜像
image: prom/prometheus
# 容器名称,便于管理
container_name: prometheus
# 容器主机名
hostname: prometheus
# 容器重启策略:always表示总是重启
restart: always
# 挂载卷,将本地配置文件映射到容器内
volumes:
# 主配置文件prometheus.yml
- ./prometheus.yml:/etc/prometheus/prometheus.yml
# 节点宕机规则文件node_down.yml
- ./node_down.yml:/etc/prometheus/node_down.yml
# 端口映射,将容器内部9090端口映射到宿主机9091端口
ports:
- "9101:9090"
networks: # 修改网络配置
- platform-common-net
# Node Exporter服务,用于收集主机系统指标
node-exporter:
# 使用官方Node Exporter镜像
image: quay.io/prometheus/node-exporter
# 容器名称
container_name: node-exporter
# 容器主机名
hostname: node-exporter
# 重启策略:always
restart: always
# 端口映射,将容器9100端口映射到宿主机9100端口
ports:
- "9100:9100"
networks: # 添加网络配置
- platform-common-net
# Grafana可视化服务,用于展示Prometheus数据
grafana:
# 使用官方Grafana镜像
image: grafana/grafana
# 容器名称
container_name: grafana
# 容器主机名
hostname: grafana
# 重启策略:always
restart: always
# 挂载卷,用于持久化Grafana数据
volumes:
- grafana-data:/var/lib/grafana
# 端口映射,将容器3000端口映射到宿主机3000端口
ports:
- "3000:3000"
networks: # 添加网络配置
- platform-common-net
# Grafana环境变量配置
environment:
# 管理员用户名
- GF_SECURITY_ADMIN_USER=admin
# 管理员密码
- GF_SECURITY_ADMIN_PASSWORD=CkG@GUsc@GSrDAed
# 依赖Prometheus服务,确保Prometheus先启动
depends_on:
- prometheus
# 定义数据卷,用于持久化Grafana数据
volumes:
grafana-data:
采集指标
当启用 Prometheus metrics 时,Traefik 默认会上报以下主要指标:
1. 入口点 (EntryPoints) 指标:
• traefik_entrypoint_requests_total: 入口点接收到的请求总数。
• traefik_entrypoint_requests_bytes_total: 入口点接收到的请求字节总数。
• traefik_entrypoint_responses_bytes_total: 入口点发送的响应字节总数。
• traefik_entrypoint_request_duration_seconds: 入口点请求处理时长的直方图。
• traefik_entrypoint_responses_total: 按 HTTP 状态码(1xx, 2xx, 3xx, 4xx, 5xx)分类的入口点响应总数。
• traefik_entrypoint_open_connections: 当前入口点打开的连接数。
2. 路由器 (Routers) 指标:
• traefik_router_requests_total: 路由器接收到的请求总数。
• traefik_router_responses_total: 按 HTTP 状态码分类的路由器响应总数。
• traefik_router_request_duration_seconds: 路由器请求处理时长的直方图。
3. 服务 (Services) 指标:
• traefik_service_requests_total: 服务接收到的请求总数。
• traefik_service_responses_total: 按 HTTP 状态码分类的服务响应总数。
• traefik_service_request_duration_seconds: 服务请求处理时长的直方图。
• traefik_service_retries_total: 服务重试次数。
• traefik_service_server_up: 指示后端服务器是否可用 (0 或 1)。
• traefik_service_open_connections: 当前服务打开的连接数。
4. TLS 指标 (如果启用 HTTPS):
traefik_tls_certs_not_after: TLS 证书的过期时间戳。
traefik_tls_certs_not_before: TLS 证书的生效时间戳。
5. 配置加载指标:
traefik_config_reloads_total: 配置重新加载的总次数。
traefik_config_last_reload_success: 上次配置重新加载是否成功(0 或 1)。
traefik_config_last_reload_failure: 上次配置重新加载失败是否成功(0 或 1)
验证
在prometheus可查询到Metrics指标数据,在grafana可通过看板展示指标Metrics
流程图
引用链接
[1]
Traefik Metrics Overview - Traefik: https://doc.traefik.io/traefik/reference/install-configuration/observability/metrics/#service-metrics
评论区