Tailscale 可观测性:Prometheus 指标导出与 Grafana 仪表板设置
Tailscale 作为零信任网络工具,提供强大的可观测性功能。通过 Prometheus 导出 Tailscale 客户端指标,并结合 Grafana 仪表板,可以实时监控 Tailscale 网络(tailnet)的健康状态、连接性能和设备行为。本文将详细介绍如何设置 Prometheus 指标导出和 Grafana 仪表板。
Tailscale 原生客户端指标
Tailscale v1.78+ 支持导出客户端指标,这些指标覆盖子网路由、DERP 继电器、吞吐量、丢包等关键方面。
可用指标列表
-
子网路由:
tailscaled_advertised_routes:设备广告的路由数。tailscaled_approved_routes:已批准路由数。
-
Peer Relay:
tailscaled_peer_relay_forwarded_packets_total:转发数据包数。tailscaled_peer_relay_forwarded_bytes_total:转发字节数。
-
健康状态:
tailscaled_health_messages:健康消息数。
-
DERP:
tailscaled_home_derp_region_id:主 DERP 区域 ID。
-
吞吐量:
tailscaled_inbound/outbound_packets/bytes_total:入/出站数据包/字节,按路径(direct、derp 等)分类。
-
丢包:
tailscaled_inbound/outbound_dropped_packets_total:丢包原因(acl、multicast 等)。
完整列表见 Tailscale 官方文档。
启用和访问指标
-
本地访问(同一主机):
-
Tailnet 内访问:
- 启用 Web 界面:
tailscale set --webclient - ACL 授权监控服务器访问端口 443。
- 访问:
http://{tailscale-ip}/metrics
- 启用 Web 界面:
-
外部暴露(可选):
-
CLI 工具:
- 查看:
tailscale metrics print - 写入文件:
tailscale metrics write /path/to/metrics.prom
- 查看:
与 Prometheus Node Exporter 的 textfile collector 集成。
Tailnet 级别指标:第三方 Exporter
Tailscale 原生指标为客户端级。为 tailnet 整体监控,使用社区 Exporter,如 adinhodovic/tailscale-exporter。
功能
- Tailscale API:设备、用户、DNS、API 密钥等指标。
- Headscale 支持。
- Grafana 仪表板和警报(tailscale-mixin)。
部署步骤(Docker 示例)
-
Tailscale OAuth:
- 管理控制台 > Settings > OAuth Clients > 创建客户端(scopes: devices:read, users:read 等)。
- 获取 Client ID/Secret。
-
运行 Exporter:
-
Prometheus 配置:
scrape_configs: - job_name: 'tailscale-exporter' static_configs: - targets: ['localhost:9250']
关键指标
tailscale_devices_online:设备在线状态。tailscale_devices_latency_ms:延迟。tailscale_users_currently_logged_in:用户登录状态。
详见 METRICS.md。
Grafana 仪表板设置
-
导入 Mixin:
- 从 Exporter repo 下载
tailscale-mixin/dashboards_out/。 - Grafana > Dashboards > Import JSON 文件。
- 从 Exporter repo 下载
-
数据源:
- 添加 Prometheus 数据源,指向本地/远程 Prometheus。
-
预置仪表板:
- Tailscale 概览:设备、用户、路由。
- 客户端机器指标:结合原生 metrics。
最佳实践
- Prometheus 服务发现:使用 tailscalesd 等工具动态发现 Tailscale 节点。
- 警报:配置高延迟、离线设备警报。
- 安全:限制 ACL,仅监控服务器访问 metrics 端点。
- Headscale:自托管用户,使用 gRPC API 集成。
通过以上设置,您可以构建完整的 Tailscale 可观测性栈,实现从设备到 tailnet 的全链路监控。
参考: