Aller au contenu

Microsoft 365

Microsoft 365 via Microsoft Graph : services dégradés ou interrompus, incidents et avis en cours, licences bientôt épuisées et utilisateurs signalés à risque.

DumbMonit se connecte comme une application Entra (flux « client credentials ») : il échange l’ID client et le secret de l’application contre un jeton d’une heure sur login.microsoftonline.com, le garde jusqu’à son expiration, et lit graph.microsoft.com une fois par minute. Chaque appel est une lecture ; l’application ne détient que des droits de lecture.

C’est une API Internet : l’adresse de la surveillance est celle de l’API (graph.microsoft.com), pas celle d’une machine, et rien dans votre réseau n’est contacté.

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

PortProtocoleUsage
443TCPAPI Microsoft Graph (HTTPS, graph.microsoft.com)
443TCPConnexion Microsoft, demande de jeton (HTTPS, login.microsoftonline.com)

Toutes les métriques sont préfixées dumbmonit_m365_.

MétriqueLabelsSignification
service_okservice1 tant que le service est dans un état sain (opérationnel, rétabli, résolu, atténué), 0 sinon.
services, services_degradedServices listés, et combien ne sont pas sains.
incidents_active, advisories_activeProblèmes de service non résolus, par classification.
service_issuesservice, classificationProblèmes non résolus par service (incident ou advisory).
license_used_percentskuUnités attribuées sur unités achetées, en pourcentage.
license_consumed, license_enabled, license_availableskuUnités attribuées, achetées et restantes.
licenses_exhaustedNombre de licences payantes dont toutes les unités sont attribuées.
risky_users, risky_users_highUtilisateurs à risque, et ceux à risque élevé.
signin_failures_1hÉchecs de connexion de la dernière heure (100 au plus) ; seulement quand les utilisateurs à risque sont illisibles.
issues_readable, licenses_readable, risky_readable, signins_readable1 quand cette lecture est autorisée, 0 quand Microsoft l’a refusée.

Les licences gratuites ou d’essai (Power BI gratuit, Power Automate gratuit, Windows Store…) et celles sans unité achetée sont ignorées : leur jauge ne veut rien dire.

Seule la santé des services est obligatoire. Si votre locataire n’a pas de licence Entra ID P2, la lecture des utilisateurs à risque est refusée : risky_readable vaut 0, DumbMonit compte à la place les échecs de connexion de la dernière heure (Entra ID P1 et AuditLog.Read.All), et si cela est refusé aussi la sonde réussit quand même sans donnée de risque.

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

  • Service Microsoft 365 dégradé : un service est dégradé, interrompu ou à l’étude depuis 10 minutes (Avis, rappelé toutes les 6 heures).
  • Licences Microsoft 365 épuisées : toutes les unités d’une licence payante sont attribuées (Avis, rappelé chaque jour).
  • Licences Microsoft 365 presque épuisées : plus de 95 % d’une licence payante est attribuée (Info, rappelé chaque semaine).
  • Utilisateurs Microsoft 365 à risque : au moins un utilisateur est signalé à risque (Avis, rappelé chaque jour).

Le panneau Microsoft 365 dit ce qui ne va pas en une phrase, montre les services dégradés, les incidents en cours, les licences épuisées et les utilisateurs à risque, puis liste les services avec leur état, les incidents en cours et les licences avec leur utilisation.

Créer une application Entra en lecture seule pour DumbMonit

Section intitulée « Créer une application Entra en lecture seule pour DumbMonit »
  1. Dans le centre d’administration Microsoft Entra (entra.microsoft.com), ouvrez Entra ID → App registrations → New registration, nommez-la DumbMonit, gardez un seul locataire et enregistrez-la.

  2. Sur la page Overview, copiez l’Application (client) ID et le Directory (tenant) ID.

  3. Ouvrez API permissions → Add a permission → Microsoft Graph → Application permissions, ajoutez les droits listés ci-dessous, puis cliquez sur Grant admin consent.

  4. Ouvrez Certificates & secrets → New client secret et copiez sa Value (pas le Secret ID) : elle n’est affichée qu’une fois et le secret expire, notez donc la date.

  5. Dans DumbMonit, saisissez graph.microsoft.com comme adresse, collez l’ID client et la valeur du secret, et renseignez l’option Tenant ID.

Ajoutez-les comme permissions d’application (pas déléguées), puis accordez le consentement administrateur.

  • ServiceHealth.Read.All — Lit la santé de chaque service et ses incidents en cours (obligatoire).
  • LicenseAssignment.Read.All — Lit le nombre de licences achetées et attribuées par SKU (facultatif).
  • IdentityRiskyUser.Read.All — Lit les utilisateurs signalés à risque ; demande Entra ID P2 (facultatif).
  • AuditLog.Read.All — Compte les échecs de connexion quand le risque est illisible ; demande Entra ID P1 (facultatif).

Documentation de l’éditeur : https://learn.microsoft.com/en-us/graph/api/serviceannouncement-list-healthoverviews

Le secret client expire (24 mois au plus). Quand c’est le cas, DumbMonit affiche « Microsoft refused the application » : créez un nouveau secret et collez sa valeur. Ajoutez l’intégration Microsoft Entra ID pour être prévenu avant.

IdentifiantChamps
Application EntraApplication (client) ID et Value du secret client.

Adresse : graph.microsoft.com. Options :

  • Tenant ID (obligatoire) : le Directory (tenant) ID, un GUID, ou un nom de domaine vérifié.
  • Sign-in URL : https://login.microsoftonline.com par défaut. Ne le changez que pour un cloud souverain (par exemple https://login.microsoftonline.us, avec graph.microsoft.us comme adresse).
  • Délai par requête (secondes) (15 s).

« Microsoft refused the application » : l’ID client ou le secret est incorrect, ou le secret a expiré. Copiez la Value du secret, pas son ID.

« Microsoft knows no tenant » : le Tenant ID est incorrect ; copiez le Directory (tenant) ID de l’inscription d’application.

« Microsoft Graph refused … (403): grant the application the ServiceHealth.Read.All application permission » : ajoutez ce droit et cliquez sur Grant admin consent ; l’application peut prendre quelques minutes.

risky_readable reste à 0 : le locataire n’a pas de licence Entra ID P2, ou IdentityRiskyUser.Read.All n’a pas été accordé. Rien n’est cassé.

Aucune licence listée : LicenseAssignment.Read.All manque (licenses_readable vaut 0), ou toutes les licences du locataire sont gratuites.