Перейти к содержимому

Tailscale

Устройства tailnet через API Tailscale: серверы, ушедшие не в сеть, ключи узлов, скоро истекающие, устройства, ожидающие одобрения, и клиенты с доступным обновлением.

DumbMonit читает GET /api/v2/tailnet/{tailnet}/devices на api.tailscale.com, раз в минуту. Рекомендуемые учётные данные — клиент OAuth, ограниченный областью devices:core:read: DumbMonit обменивает его ID и секрет на часовой токен (/api/v2/oauth/token) и хранит его до истечения. Токен доступа API (tskey-api-…) тоже работает, но несёт все права пользователя, который его создал, и истекает не позднее чем через 90 дней.

Это интернет-API: адрес монитора — это адрес API, а не машины. DumbMonit нужен исходящий HTTPS к api.tailscale.com; ничто внутри tailnet не контактируется.

Все метрики с префиксом dumbmonit_tailscale_. Устройство называется по первой части своего имени MagicDNS (nas для nas.tail1234.ts.net). Устройства, разделённые в tailnet из другого, учитываются, но не описываются.

МетрикаМеткиЗначение
device_onlinedevice1, пока устройство подключено к серверу координации.
device_offline_secondsdevice0, пока в сети, иначе время с момента, когда его видели последний раз.
device_watcheddevice1, когда устройство должно оставаться в сети: каждое помеченное тегом устройство по умолчанию, либо перечисленные в опции ниже.
device_key_expiry_secondsdeviceДо истечения ключа узла; отсутствует, когда истечение ключей отключено.
device_authorizeddevice0, пока устройство ожидает одобрения.
device_update_availabledevice1, когда Tailscale предлагает более новый клиент.
device_infodevice, os, client_version, tagsЗначение 1.
devices, devices_online, devices_external, devices_update_available, devices_unauthorized, devices_watched_offlineСчётчики.

Оповещение при уходе не в сеть вызывают только отслеживаемые устройства: телефон или ноутбук, который спит, — это не отказ. Устройства, помеченные тегом, на практике — это серверы, маршрутизаторы подсетей и exit-узлы; перечислите остальные в опции Devices to keep online, либо введите all.

Применяемые встроенные правила:

  • Устройство Tailscale не в сети: отслеживаемое устройство отключено более 15 минут (Advisory).
  • Истекает ключ узла Tailscale: осталось менее 14 дней (Advisory, напоминание ежедневно). При истечении устройство покидает tailnet, пока кто-нибудь снова не войдёт.
  • Устройство Tailscale ожидает одобрения (Advisory): одобрите его, если это ожидалось, иначе удалите.
  • Доступно обновление клиента Tailscale: у отслеживаемого устройства есть обновление клиента уже шесть часов (Info, напоминание еженедельно).

Каждое устройство 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 нет резервной копии для сообщения)

Телефон или ноутбук в разъезде может несколько дней не переподключаться: это не связано с настройкой Devices to keep online выше, которая вызывает оповещение только для отслеживаемых устройств, ушедших не в сеть. Поднимите Device staleness для tailnet с устройствами, которые кочуют.

Панель Tailnet сообщает, что не так, в одном предложении, показывает устройства в сети, отслеживаемые устройства не в сети, доступные обновления и разделённые устройства, затем перечисляет отслеживаемые устройства и любое устройство, ожидающее одобрения или с скоро истекающим ключом, затем — таблицу каждого устройства с его последним подключением.

Создание клиента OAuth только для чтения для DumbMonit

Заголовок раздела «Создание клиента OAuth только для чтения для DumbMonit»
  1. В консоли Tailscale (login.tailscale.com) откройте Settings > Trust credentials (ранее OAuth clients) и сгенерируйте клиент OAuth только с областью devices:core:read. Он перечисляет устройства и не может ничего изменить.

  2. Скопируйте ID клиента и секрет клиента (tskey-client-…), показанные один раз. В DumbMonit введите api.tailscale.com как адрес и вставьте их как Client ID и Client secret. Оставьте опцию Tailnet пустой: читается tailnet самого клиента.

Учётные данныеПоля
Клиент OAuthID клиента и секрет клиента (tskey-client-…) клиента с областью devices:core:read.
Токен доступа APIТокен tskey-api-…, отправляется как bearer-токен.

Адрес: api.tailscale.com. Опции:

  • Tailnet: пусто для tailnet учётных данных, либо имя tailnet, показанное в консоли Tailscale.
  • Devices to keep online: имена устройств или теги через запятую (nas, tag:router), либо all. Пусто: каждое помеченное тегом устройство.
  • Timeout per request (15 с).
  • Device staleness (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 пустой.