Salta ai contenuti

Tailscale

Questi contenuti non sono ancora disponibili nella tua lingua.

通过 Tailscale API 监控某个 tailnet 的设备:离线的服务器、即将 过期的节点密钥、等待批准的设备,以及有可用更新的客户端。

DumbMonit 每分钟读取一次 api.tailscale.com 上的 GET /api/v2/tailnet/{tailnet}/devices。推荐使用的凭据是一个 限定了 devices:core:read 范围的 OAuth 客户端:DumbMonit 用其 ID 和密钥换取一个一小时有效的令牌(/api/v2/oauth/token),并 在它过期前保留使用。它能列出设备,不能更改任何内容。API 访问 令牌(tskey-api-…)也可用,但它携带创建它的用户的全部权限, 且最多 90 天后过期。

这是一个互联网 API:设备地址指的是该 API 的地址,而不是某台 机器的地址。DumbMonit 需要能够向外访问 api.tailscale.com 的 HTTPS;tailnet 内部不会被联系。

所有指标都以 dumbmonit_tailscale_ 为前缀。设备以其 MagicDNS 名称的第一个标签命名(nas.tail1234.ts.net 对应 nas)。从 另一个 tailnet 共享进来的设备会被计数,但不会被详细描述。

指标标签含义
device_onlinedevice该设备连接到协调服务器期间为 1。
device_offline_secondsdevice在线时为 0,否则为自上次被发现以来经过的时间。
device_watcheddevice当该设备必须保持在线时为 1:默认是每个带标签的设备,或下方选项中列出的设备。
device_key_expiry_secondsdevice距节点密钥过期的时间;密钥过期功能被禁用时不存在。
device_authorizeddevice该设备等待批准期间为 0。
device_update_availabledevice当 Tailscale 提供更新的客户端时为 1。
device_infodevice, os, client_version, tags固定值 1。
devices, devices_online, devices_external, devices_update_available, devices_unauthorized, devices_watched_offline计数。

只有被监控的设备离线时才会触发告警:一台进入休眠的手机或笔记本 电脑不算是服务中断。带标签的设备在实践中通常是服务器、子网路由 器和出口节点;请在要保持在线的设备选项中列出其他设备,或 输入 all。

适用的内置规则:

  • Tailscale 设备离线:某个被监控的设备断开连接超过 15 分钟 (提示级别)。
  • Tailscale 节点密钥即将过期:剩余不足 14 天(提示级别, 每天提醒)。过期后,该设备会离开 tailnet,直到有人重新登录它。
  • Tailscale 设备等待批准(提示级别):如果是预期的设备就 批准它,否则就移除它。
  • Tailscale 客户端更新:某个被监控的设备有客户端更新已存在 六小时(信息级别,每周提醒)。

该 tailnet 中的每一台设备,无论是否被监控(共享进来的设备除外), 都会以每个追踪客户端设备的 DumbMonit 集成共享的通用指标族发布—— dumbmonit_client_device_*,前缀中不含 tailscale,完整文档见 客户端设备:

指标含义标签
last_seen_timestamp_seconds上次连接:当 connectedToControl 为真时为”现在”,否则为 lastSeendevice, type(Tagged 或 Personal)、os、user、kind
stale_seconds当某设备超过 device_stale_days(默认 3 天)未连接时为正值;驱动客户端设备陈旧规则device, type, os, user, kind, signal(始终为 connection:Tailscale 没有备份可报告)

一台经常出行的手机或笔记本电脑可能好几天都不重新连接:这与上面 的要保持在线的设备设置无关,那个设置只会在被监控的设备离线 时触发告警。对于设备会漫游的 tailnet,请调高设备陈旧判定。

Tailnet 面板会用一句话说明哪里出了问题,显示在线的设备数、离线 的被监控设备数、可用的更新数和共享进来的设备数,然后列出被监控 的设备,以及任何等待批准或密钥即将过期的设备,再然后是每台设备 及其上次连接时间的表格。

为 DumbMonit 创建一个只读 OAuth 客户端

Section titled “为 DumbMonit 创建一个只读 OAuth 客户端”
  1. 在 Tailscale 控制台(login.tailscale.com)中,打开 Settings > Trust credentials(原 OAuth clients),生成一个只具备 devices:core:read 范围的 OAuth 客户端。它能列出设备,不能更改任何内容。

  2. 复制客户端 ID 和客户端密钥(tskey-client-…),它们只会显示一次。在 DumbMonit 中,输入 api.tailscale.com 作为地址,并把它们粘贴为 Client ID 和 Client secret。把 Tailnet 选项留空:会读取该客户端所属的 tailnet。

凭据字段
OAuth 客户端具有 devices:core:read 范围的客户端的 Client ID 和 Client secret(tskey-client-…)。
API 访问令牌一个 tskey-api-… 令牌,以 bearer token 方式发送。

地址:api.tailscale.com。选项:

  • Tailnet:留空表示使用凭据所属的 tailnet,或填入 Tailscale 控制台中显示的 tailnet 名称。
  • 要保持在线的设备:以逗号分隔的设备名称或标签 (nas, tag:router),或 all。留空:每个带标签的设备。
  • 每次请求的超时时间(15 秒)。
  • 设备陈旧判定(device_stale_days,默认 3 天)。

“Tailscale refused the OAuth client”:ID 或密钥错误,或该客户端 已被删除。

“Tailscale refused to list the devices (403)”:该客户端缺少 devices:core:read 范围。

“Tailscale knows no tailnet …”:请将 Tailnet 选项留空。