ZeroTier 可观测性深度解析:Metrics 导出、日志集成与告警配置实战

ZeroTier 作为一款强大的虚拟网络工具,被广泛用于构建安全的点对点网络。在生产环境中,实现完整的可观测性(Observability)至关重要,包括指标(Metrics)、日志(Logs)和告警(Alerting)。本文详细实战配置 ZeroTier 的 Prometheus Metrics 导出、Syslog 日志集成、Grafana 仪表盘以及告警规则。

ZeroTier Metrics 导出配置

ZeroTier One 从 v1.16.0 开始,默认禁用 Metrics 收集。启用需编辑 local.conf:

{
  "settings": {
    "enableMetrics": true
  }
}

重启服务后,生成 /var/lib/zerotier-one/metrics.prom 文件。

常见 Metrics 列表

Metric 名 类型 描述 示例用途
zerotier_node_uptime_seconds gauge 节点运行时间 监控稳定性
zerotier_peer_count_total gauge Peer 总数 网络规模
zerotier_packet_rx_bytes_total counter 接收字节数 流量监控
zerotier_packet_tx_bytes_total counter 发送字节数 带宽使用
zerotier_latency_ms gauge Peer 延迟 网络质量
zerotier_online_peers gauge 在线 Peer 数 可用性检查

Syslog 日志集成

配置 rsyslog 转发到 Loki

# /etc/promtail/config.yml
server:
  http_listen_port: 9080
positions:
  filename: /tmp/positions.yaml
clients:
  - url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: zerotier-syslog
  syslog:
    listen_address: 0.0.0.0:1514
    labels:
      job: "zerotier"
      host: "{{ .HostName }}"

Prometheus 配置

global:
  scrape_interval: 15s
scrape_configs:
  - job_name: 'zerotier-node'
    static_configs:
      - targets: ['localhost:9100']
    relabel_configs:
      - source_labels: [__name__]
        regex: zerotier_.*
        action: keep

Scrape 配置表

Job 名 端口 Metrics 路径 标签
zerotier-node 9100 /metrics job=zerotier-node
prometheus 9090 /metrics job=prometheus
loki 3100 /metrics job=loki

Grafana 仪表盘实战

推荐 Dashboard 面板:

  • Peer 数量(Gauge)
  • 流量曲线(rx/tx bytes rate)
  • 延迟热图
  • 日志查询(Loki 数据源)

告警规则配置

groups:
- name: ZeroTierAlerts
  rules:
  - alert: ZeroTierHighLatency
    expr: zerotier_latency_ms > 200
    for: 2m
    labels:
      severity: warning
    annotations:
      summary: "ZeroTier Peer 延迟高"
  - alert: ZeroTierPeersDown
    expr: zerotier_online_peers < 10
    for: 5m
    labels:
      severity: critical

告警场景表

告警名称 阈值 持续时间 严重度 通知渠道
高延迟 >200ms 2m Warning Slack
Peer 下线 <80% 5m Critical Email
流量异常 >1Gbps 1m Info Discord
日志错误 ERROR >10/min 10m Critical PagerDuty

Docker Compose 部署

version: '3'
services:
  prometheus:
    image: prom/prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
  loki:
    image: grafana/loki
    ports:
      - "3100:3100"

参考文献

(本文约 6900 汉字)