Deuxième article sur les interconnexions avec Canopsis dédiées à la notification. Après Teams, c’est au tour de l’intégration Gotify de passer au crible !

Les outils de supervision permettent de détecter rapidement les incidents et d’en mesurer la gravité. Une fois l’alerte identifiée, se pose la question de sa diffusion… Faut-il l’analyser, la partager, ou simplement prévenir rapidement une personne précise.

Dans certains contextes, notamment lors des périodes d’astreinte ou en dehors des heures ouvrées, la priorité est avant tout la réception immédiate de l’information. C’est ainsi que l’intégration entre Canopsis et Gotify s’inscrit naturellement.

A quoi servent les notifications Gotify ?

Gotify est un système de notifications push permettant d’envoyer des messages directement vers un terminal, mobile ou navigateur. Ainsi, il se distingue par sa simplicité et par sa capacité à transmettre une information sans dépendre d’un outil collaboratif ou d’une consultation active d’une interface.

Ce mode de diffusion convient particulièrement lorsque vous souhaitez :

La notification devient alors un signal clair, visible immédiatement, qui invite à agir ou à consulter le détail.

Une intégration simple avec Canopsis

Côté Canopsis, l’envoi d’une notification Gotify est piloté par un scénario, déclenché sur un événement précis, par exemple l’activation d’une alarme. En effet, le scénario appelle l’API Gotify et transmet un message structuré.

Cette approche permet d’adapter le contenu du message au contexte : message synthétique, niveau de gravité explicite, lien vers Canopsis pour en savoir plus si nécessaire.

Un exemple concret : filesystem plein ou machine injoignable

Prenons par exemple deux situations courantes en exploitation :

Dans Canopsis, ces situations sont représentées par des alarmes techniques, associées à des composants ou à des services d’infrastructure. Un scénario (payload disponible en annexe) est configuré pour réagir à l’activation de ces alarmes, en particulier lorsque la criticité est élevée.

Lorsqu’un filesystem passe au-delà d’un seuil critique ou qu’une machine ne répond plus, Canopsis déclenche le scénario et envoie immédiatement une notification Gotify à la personne d’astreinte.

La notification reçue contient l’essentiel :

En bref, le message permet à la personne notifiée de comprendre rapidement la situation et de décider des actions à entreprendre : libération d’espace disque, redémarrage de service, investigation réseau…

Un canal complémentaire à la supervision

Pour conclure, Gotify ne remplace ni l’hypervision, ni les autres modes de communication. Il s’inscrit comme un canal complémentaire, particulièrement pertinent lorsque la rapidité et la fiabilité de la notification priment, par exemple lors des périodes d’astreinte.

Associé à Canopsis, Gotify permet de diffuser la bonne information, au bon moment, vers les bonnes personnes.

Payload scénario pour la notification Gotify

{
   "title": "{{ if eq .Alarm.Value.State.Value 3 }}🟥 Alerte CRITIQUE{{ else if eq .Alarm.Value.State.Value 2 }}🟧 Alerte MAJEURE{{ else if eq .Alarm.Value.State.Value 1 }}🟨 Alerte MINEURE{{ else }}🟩 Fin d'alerte{{ end }} ({{ .Alarm.Value.CreationDate | localtime "02/01/2006 15:04:05" }})",
   "priority": {{ if eq .Alarm.Value.State.Value 3 }}10{{ else if eq .Alarm.Value.State.Value 2 }}8{{ else if eq .Alarm.Value.State.Value 1 }}5{{ else }}1{{ end }},
   "message": "# {{ .Alarm.Value.DisplayName }}\n\nComposant: {{ .Alarm.Value.Component |json_unquote }}\nRessource: {{ if .Alarm.Value.Resource }}{{ .Alarm.Value.Resource }}{{ else }}N/A{{ end }}\n\n🧩 Message\n{{ .Alarm.Value.Output |json_unquote }}\n\n🧪 Trigger: {{ .AdditionalData.Trigger }}\n🧯 Criticite: {{ if eq .Alarm.Value.State.Value 3 }}🟥 CRITIQUE (3){{ else if eq .Alarm.Value.State.Value 2 }}🟧 MAJEURE (2){{ else if eq .Alarm.Value.State.Value 1 }}🟨 MINEURE (1){{ else }}🟩 OK (0){{ end }}\n\n---\n🔗 [Ouvrir dans Canopsis]({{ .Env.CanopsisURL }}/alarms/{{ .Alarm.ID }})",
   "extras": {
      "client::display": { "contentType": "text/markdown" },
      "client::notification": {
         "click": { "url": "{{ .Env.CanopsisURL }}/alarms/{{ .Alarm.ID }}"
         }
      }
   }
}