Aller au contenu

Tailscale

Les appareils d’un tailnet via l’API Tailscale : serveurs passés hors ligne, clés de nœud proches de l’expiration, appareils en attente d’approbation, et clients avec une mise à jour disponible.

DumbMonit lit GET /api/v2/tailnet/{tailnet}/devices sur api.tailscale.com, une fois par minute. L’identifiant recommandé est un client OAuth limité à la portée devices:core:read : DumbMonit échange son ID et son secret contre un jeton d’une heure (/api/v2/oauth/token) et le garde jusqu’à expiration. Il peut lister les appareils et ne peut rien changer. Un jeton d’accès d’API (tskey-api-…) fonctionne aussi, mais il porte tous les droits de l’utilisateur qui l’a créé et expire après 90 jours au plus.

C’est une API Internet : l’adresse de la surveillance est celle de l’API, pas celle d’une machine. DumbMonit a besoin de HTTPS sortant vers api.tailscale.com ; rien dans le tailnet n’est contacté.

Du serveur DumbMonit (ou de son agent relais) vers l’équipement :

PortProtocoleUsage
443TCPAPI Tailscale (HTTPS, api.tailscale.com)

Toutes les métriques sont préfixées dumbmonit_tailscale_. Un appareil est nommé par le premier label de son nom MagicDNS (nas pour nas.tail1234.ts.net). Les appareils partagés dans le tailnet depuis un autre sont comptés, pas décrits.

MétriqueLabelsSignification
device_onlinedevice1 tant que l’appareil est connecté au serveur de coordination.
device_offline_secondsdevice0 en ligne, sinon le temps depuis qu’il a été vu pour la dernière fois.
device_watcheddevice1 quand l’appareil doit rester en ligne : chaque appareil étiqueté par défaut, ou ceux nommés dans l’option ci-dessous.
device_key_expiry_secondsdeviceJusqu’à l’expiration de la clé de nœud ; absent quand l’expiration de clé est désactivée.
device_authorizeddevice0 tant que l’appareil attend l’approbation.
device_update_availabledevice1 quand Tailscale propose un client plus récent.
device_infodevice, os, client_version, tagsValeur 1.
devices, devices_online, devices_external, devices_update_available, devices_unauthorized, devices_watched_offlineCompteurs.

Seuls les appareils surveillés déclenchent une alerte quand ils passent hors ligne : un téléphone ou un ordinateur portable qui dort n’est pas une panne. Les appareils étiquetés sont, en pratique, les serveurs, routeurs de sous-réseau et nœuds de sortie ; listez les autres dans l’option Appareils à garder en ligne, ou saisissez all.

Les règles intégrées qui s’appliquent :

  • Appareil Tailscale hors ligne : un appareil surveillé déconnecté depuis plus de 15 minutes (Avis).
  • Clé de nœud Tailscale arrivant à expiration : moins de 14 jours restants (Avis, rappelé chaque jour). À l’expiration, l’appareil quitte le tailnet jusqu’à ce que quelqu’un le reconnecte.
  • Appareil Tailscale en attente d’approbation (Avis) : approuvez-le s’il est attendu, supprimez-le sinon.
  • Mise à jour client Tailscale : un appareil surveillé a une mise à jour client depuis six heures (Info, rappelée chaque semaine).

Chaque appareil du tailnet, surveillé ou non (sauf les appareils partagés), est publié sous la famille générique partagée par chaque intégration DumbMonit qui suit les appareils clients — dumbmonit_client_device_*, préfixée sans tailscale, documentée en entier sous Appareils clients :

MétriqueQuoiLabels
last_seen_timestamp_secondsDernière connexion : « maintenant » tant que connectedToControl est vrai, sinon lastSeendevice, type (Tagged ou Personal), os, user, kind
stale_secondsPositif une fois qu’un appareil a dépassé device_stale_days (3 par défaut) sans se connecter ; alimente la règle Appareil client périmédevice, type, os, user, kind, signal (toujours connection : Tailscale n’a pas de sauvegarde à rapporter)

Un téléphone ou un ordinateur portable qui voyage peut rester plusieurs jours sans se reconnecter : ceci est indépendant du réglage Appareils à garder en ligne ci-dessus, qui ne déclenche une alerte que pour les appareils surveillés passant hors ligne. Augmentez la péremption d’appareil pour un tailnet avec des appareils qui se déplacent.

Le panneau Tailnet dit ce qui ne va pas en une phrase, montre les appareils en ligne, les appareils surveillés hors ligne, les mises à jour disponibles et les appareils partagés, puis liste les appareils surveillés et tout appareil en attente d’approbation ou dont la clé expire bientôt, puis le tableau de chaque appareil avec sa dernière connexion.

Créer un client OAuth en lecture seule pour DumbMonit

Section intitulée « Créer un client OAuth en lecture seule pour DumbMonit »
  1. Dans la console d’administration Tailscale, ouvrez Settings → Trust credentials → Credential → OAuth.

  2. Cochez uniquement le scope en lecture listé ci-dessous, puis cliquez sur Generate credential.

  3. Copiez le client ID et le client secret (tskey-client-…) : le secret n’est affiché qu’une fois.

  4. Dans DumbMonit, saisissez api.tailscale.com comme adresse et collez-les comme Client ID et Client secret ; laissez l’option Tailnet vide.

  • devices:core:read — Liste les appareils du tailnet, ne change rien

Documentation de l’éditeur : https://tailscale.com/kb/1623/trust-credentials

Laissez l’option Tailnet vide : le tailnet du client est lu. Un téléphone ou un portable en veille n’est pas une panne. Chaque appareil du tailnet apparaît dans le tableau Devices ci-dessous avec sa dernière connexion, surveillé ou non ; un téléphone en voyage peut rester des jours sans, relevez donc Device staleness pour ceux-là.

IdentifiantChamps
Client OAuthID client et secret client (tskey-client-…) d’un client avec la portée devices:core:read.
Jeton d’accès d’APIUn jeton tskey-api-…, envoyé comme jeton bearer.

Adresse : api.tailscale.com. Options :

  • Tailnet : vide pour le tailnet des identifiants, ou le nom de tailnet affiché dans la console Tailscale.
  • Appareils à garder en ligne : noms d’appareil ou étiquettes séparés par des virgules (nas, tag:router), ou all. Vide : chaque appareil étiqueté.
  • Délai par requête (15 s).
  • Péremption d’appareil (device_stale_days, 3 jours par défaut).

« Tailscale refused the OAuth client » : l’ID ou le secret est incorrect, ou le client a été supprimé.

« Tailscale refused to list the devices (403) » : le client n’a pas la portée devices:core:read.

« Tailscale knows no tailnet … » : laissez l’option Tailnet vide.