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 не
контактируется.
Проверено только по документации производителя — пока не испытано на реальной системе
Эта интеграция построена на документации API Tailscale и модели устройств его официального Go-клиента, а не на живом tailnet. Она только читает. Сообщите нам, если что-то не работает.
Что отслеживается¶
Все метрики с префиксом dumbmonit_tailscale_. Устройство называется по
первой части своего имени MagicDNS (nas для nas.tail1234.ts.net).
Устройства, разделённые в tailnet из другого, учитываются, но не описываются.
| Метрика | Метки | Значение |
|---|---|---|
device_online |
device |
1, пока устройство подключено к серверу координации. |
device_offline_seconds |
device |
0, пока в сети, иначе время с момента, когда его видели последний раз. |
device_watched |
device |
1, когда устройство должно оставаться в сети: каждое помеченное тегом устройство по умолчанию, либо перечисленные в опции ниже. |
device_key_expiry_seconds |
device |
До истечения ключа узла; отсутствует, когда истечение ключей отключено. |
device_authorized |
device |
0, пока устройство ожидает одобрения. |
device_update_available |
device |
1, когда Tailscale предлагает более новый клиент. |
device_info |
device, 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 истинно, иначе lastSeen |
device, 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¶
-
В консоли Tailscale (login.tailscale.com) откройте Settings > Trust credentials (ранее OAuth clients) и сгенерируйте клиент OAuth только с областью devices:core:read. Он перечисляет устройства и не может ничего изменить.
-
Скопируйте ID клиента и секрет клиента (tskey-client-…), показанные один раз. В DumbMonit введите api.tailscale.com как адрес и вставьте их как Client ID и Client secret. Оставьте опцию Tailnet пустой: читается tailnet самого клиента.
Warning
Оставаться в сети должны только устройства, помеченные тегом (серверы, маршрутизаторы подсетей, exit-узлы): телефон или ноутбук, который спит, — это не отказ. Назовите устройства для отслеживания в опции Devices to keep online, либо введите all. Каждое устройство tailnet появляется в таблице Devices ниже с его последним подключением, отслеживаемое или нет; телефон в разъезде может не иметь его днями, поэтому поднимите Device staleness для них.
Учётные данные¶
| Учётные данные | Поля |
|---|---|
| Клиент OAuth | ID клиента и секрет клиента (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 пустой.