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 官方文档

启用和访问指标

  1. 本地访问(同一主机):

    c u r l h t t p : / / 1 0 0 . 1 0 0 . 1 0 0 . 1 0 0 / m e t r i c s
  2. Tailnet 内访问

    • 启用 Web 界面:tailscale set --webclient
    • ACL 授权监控服务器访问端口 443。
    • 访问:http://{tailscale-ip}/metrics
  3. 外部暴露(可选):

    t a i l s c a l e w e b - r e a d o n l y - l i s t e n { p u b l i c - i p } : 8 0 8 0
  4. 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 示例)

  1. Tailscale OAuth

    • 管理控制台 > Settings > OAuth Clients > 创建客户端(scopes: devices:read, users:read 等)。
    • 获取 Client ID/Secret。
  2. 运行 Exporter

    d o c - - - a k e e e d e i r T T T n A A A h r I I I o u L L L d n S S S o C C C v - A A A i d L L L c E E E / _ _ _ t - O O T a n A A A i a U U I l m T T L s e H H N c _ _ E a t C C T l a L L = e i I I " - l E E y e s N N o x c T T u p a _ _ r o l I S - r e D E t t - = C a e e " R i r x y E l : p o T n l o u = e a r r " t t t - y . e e i o t s r d u s t " r . - - n p \ s e e t 9 c " 2 r 5 e \ 0 t : " 9 2 \ 5 0 \
  3. 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 仪表板设置

  1. 导入 Mixin

    • 从 Exporter repo 下载 tailscale-mixin/dashboards_out/
    • Grafana > Dashboards > Import JSON 文件。
  2. 数据源

    • 添加 Prometheus 数据源,指向本地/远程 Prometheus。
  3. 预置仪表板

    • Tailscale 概览:设备、用户、路由。
    • 客户端机器指标:结合原生 metrics。

最佳实践

  • Prometheus 服务发现:使用 tailscalesd 等工具动态发现 Tailscale 节点。
  • 警报:配置高延迟、离线设备警报。
  • 安全:限制 ACL,仅监控服务器访问 metrics 端点。
  • Headscale:自托管用户,使用 gRPC API 集成。

通过以上设置,您可以构建完整的 Tailscale 可观测性栈,实现从设备到 tailnet 的全链路监控。

参考: