Skip to Content

First article for Zabbix

un template pour l'indice Kp de la NOAA
21 October 2026 by
First article for Zabbix
Jérôme LEPAGE


Pourquoi surveiller le Soleil depuis Zabbix ?

Une tempête géomagnétique peut dégrader le GPS, couper les communications radio HF et perturber les liaisons satellites. Quand un de ces incidents survient, la première question est souvent : « est-ce chez nous, ou est-ce le Soleil ? »

J'ai donc écrit un template Zabbix qui lit l'indice Kp publié par la NOAA et lève une alerte dès qu'une tempête démarre. Il tient en un seul appel HTTP, sans agent ni script externe, et fonctionne sur Zabbix 7.4.

Je vous explique ici ce qu'il mesure, comment il est construit et comment l'installer.

L'indice Kp et l'échelle G

L'indice Kp mesure l'agitation du champ magnétique terrestre, sur une échelle de 0 à 9. Il est calculé toutes les 3 heures à partir d'un réseau de magnétomètres, et exprimé par pas d'un tiers : 5- vaut 4,67, 5o vaut 5,00 et 5+ vaut 5,33.

La NOAA traduit le Kp en échelle G, de G1 à G5. C'est cette échelle que j'utilise pour les alertes, car elle parle aussi aux non-spécialistes.

Kp

Niveau

Impacts typiques

moins de 5

G0 (calme)

Aucun

5

G1 (mineure)

Faibles fluctuations du réseau électrique, aurores aux hautes latitudes

6

G2 (modérée)

Radio HF perturbée aux hautes latitudes

7

G3 (forte)

GPS dégradé par intermittence, corrections nécessaires sur les satellites

8

G4 (sévère)

GPS dégradé pendant des heures, radio HF coupée par endroits

9

G5 (extrême)

GPS et HF indisponibles, risques sur les réseaux électriques

Source : NOAA Space Weather Scales.

D'où viennent les données

La NOAA publie l'indice Kp sans authentification à l'adresse noaa-planetary-k-index.json. Le fichier contient environ une semaine d'historique, soit une soixantaine de mesures classées de la plus ancienne à la plus récente :

[
  {"time_tag":"2026-09-28T21:00:00","Kp":0.67,"a_running":3,"station_count":8},
  {"time_tag":"2026-09-29T00:00:00","Kp":2.00,"a_running":7,"station_count":8}
]

Quelques particularités sont à connaître avant de l'exploiter. Le champ time_tag est en UTC, sans suffixe Z, et correspond au début de l'intervalle de 3 heures, pas à sa fin.

La dernière valeur est provisoire, et la NOAA peut la corriger quelques heures plus tard. Le format a aussi déjà changé une fois : on recevait avant un tableau de tableaux, avec une ligne d'en-tête et des valeurs en chaînes de caractères. J'ai fait en sorte que le template accepte les deux.

Comment le template est construit

Le template s'appuie sur un item maître et des items dépendants. Seul l'item maître interroge l'API, les autres se contentent de lire sa valeur.

Schéma du template

Le script JavaScript fait tout le travail une fois ; chaque item dépendant n'a plus qu'à extraire un champ par JSONPath.

Le script produit un JSON compact comme celui-ci :

{"time_tag":"2026-09-29T00:00:00","kp":2,"kp_max_24h":4.67,"g_scale":0,"g_scale_max_24h":1,"a_running":7,"station_count":8,"data_age":5400}

J'ai choisi cette approche pour plusieurs raisons. On ne fait qu'un appel HTTP par intervalle, ce qui reste raisonnable pour une API publique et gratuite.

Tous les items viennent de la même réponse, donc ils restent cohérents entre eux. Et si la NOAA modifie encore son format, il n'y a qu'un script à corriger.

Le passage du Kp à l'échelle G se fait avec un simple arrondi, qui respecte la convention NOAA : 4,67 (5-) et 5,33 (5+) donnent tous deux G1.

function gscale(x) {
    var g = Math.round(x) - 4;
    return g < 0 ? 0 : (g > 5 ? 5 : g);
}

Le champ time_tag n'indique pas de fuseau horaire. Le script ajoute donc Z avant d'appeler Date.parse(), sans quoi l'âge des données serait décalé du fuseau du serveur.

Les alertes

Le template définit cinq triggers. Tous les seuils sont des macros, donc réglables hôte par hôte.

Trigger

Condition

Sévérité

Tempête géomagnétique en cours

G >= {$NOAA.G.WARN} (1 par défaut)

Warning

Tempête géomagnétique forte

G >= {$NOAA.G.HIGH} (3 par défaut)

High

Tempête sévère ou extrême

G >= {$NOAA.G.DISASTER} (4 par défaut)

Disaster

Données Kp périmées

âge > {$NOAA.DATA.MAXAGE} (6 h)

Warning

Aucune donnée de l'API

nodata pendant {$NOAA.NODATA} (1 h)

Average

Les trois triggers de tempête dépendent les uns des autres. Pendant une tempête G4, vous recevez donc l'alerte Disaster seule, et non trois notifications pour le même événement. Chaque alerte affiche aussi le Kp courant dans ses données opérationnelles.

Même logique pour la disponibilité : si l'API ne répond plus, l'alerte « données périmées » est masquée derrière « aucune donnée ».

J'ai fixé le seuil d'âge à 6 heures, car time_tag marque le début de l'intervalle : une mesure vieille de 2 à 3 heures est donc normale.

Installation

Prérequis : Zabbix 7.4 et un accès HTTPS sortant vers services.swpc.noaa.gov depuis le serveur ou le proxy.

  1. Importez template_noaa_space_weather_kp.yaml via Data collection > Templates > Import.
  2. Créez un hôte « virtuel », par exemple NOAA SWPC. Aucune interface n'est nécessaire pour un item HTTP agent.
  3. Liez-lui le template NOAA Space Weather Kp by HTTP.
  4. Ajustez les macros au niveau de l'hôte si besoin.
  5. Vérifiez Monitoring > Latest data après 15 minutes.

Si l'item maître passe en Not supported, lisez son message d'erreur. Le script lève des erreurs explicites : réponse vide, valeur Kp invalide ou horodatage illisible.

Pour conclure

Avec ce template, la météo spatiale rejoint le reste de la supervision pour un coût très faible : un appel HTTP toutes les 15 minutes et un script de quelques lignes. La prochaine fois que plusieurs récepteurs GPS décrochent en même temps, un coup d'œil au graphe Kp suffira pour savoir si le Soleil y est pour quelque chose.

Le template et son README sont disponibles ici : mon espace Github.

Partager cet article
Étiquettes
Nos blogs