Créer un agent de monitoring serveur

Pour effectuer la surveillance des ressources de votre serveur, nous vous proposons, par défaut, un script Python conçus pour collecter et envoyer les informations sur l'utilisation de votre serveur.
À l'aide de ce script et de la documentation ci-dessous, vous allez pouvoir créer votre propre outil de collecte et d'envoi des données.

  • Sommaire

Pré-requis

Le script que vous allez réaliser devra envoyer régulièrement les informations de votre serveur à notre API pour permettre la surveillance de ce dernier.

Voici les données nécessaires pour permettre la communication avec l'API :

  • URL : https://hitflow.net/agent/v1/report
  • Identifiant serveur : disponible dans votre manager
  • Jeton d'authentification : disponible dans votre manager

Avant tout, vous devrez impérativement créer un serveur dans votre manager pour générer un identifiant serveur et un jeton d'authentification.

Authentification des requêtes

Une fois que vous aurez validé la création du serveur dans votre manager, vous trouverez en bas du formulaire un bloc nommé "Agent serveur". Ce bloc contiendra toutes les informations nécessaires à l'authentification d'une requête.

Entête

L'authentification d'une requête se fait en définissant deux attributs dans son entête.

Nom de l'attribut Valeur de l'attribut
HitFlow-Agent-Server Identifiant du serveur
HitFlow-Agent-Token Jeton d'authentification

Gestion des erreurs

En cas de problème dans l'authentification de la requête, une des erreurs ci-dessous sera retournée :

Code Raison
10000 Accès non autorisé, car les entêtes d'authentification n'ont pas été trouvés.
22036 Identifiant du serveur ou jeton d'authentification invalide.

Structure des données

Le script que vous avez développé doit envoyer toutes les informations concernant le serveur dans un objet au format JSON.

Structure générale

Ci-dessous, la liste des attributs de premier niveau ainsi que leur type qui peut être un objet, dont la description est définie plus loin :

Nom Type Limitations Commentaire
operating_system String Longueur de 1 à 32 caractères Chaîne de caractère indiquant le nom de l'OS
uptime Int Valeur comprise entre 0 et 157680000 Nombre de secondes depuis le démarrage du serveur
load_average Float[3] Tableau de 3 float allant de 0 à 100 Charge système du serveur
cpu Float Utilisation du CPU du serveur documentation/agent-server.text-424
memory Memory Informations sur la mémoire RAM du serveur
swap Memory Informations sur le fichier d'échange du serveur
storage Storage[32] Tableau de 1 à 32 objets de type "Storage" Informations sur l'état des disques
process Process[100] Tableau de type "Process" allant de 0 à 100 objets. Liste de 100 processus actifs sur le serveur

Attention ! Les limites actuelles sont susceptibles d'évoluer.
Abonnez-vous à la newsletter « technique » dans votre compte pour recevoir des alertes lorsqu'un changement dans le fonctionnement est prévu.

Objet de type "Memory"

Les objets de type "Memory" sont utilisés pour décrire l'état de la mémoire du serveur.

Nom Type Limitations Commentaire
available Int Valeur comprise entre 0 et 1048576 Espace total disponible dans la mémoire exprimée en Mo
total Int Valeur comprise entre 0 et 1048576 Taille totale disponible de la mémoire exprimée en Mo
used Int Valeur comprise entre 0 et 1048576 Total de la mémoire utilisée en Mo

Objet de type "Storage"

Les objets de type "Storage" sont utilisés pour décrire l'utilisation des volumes du serveur.

Nom Type Limitations Commentaire
name String Chaîne de 1 à 256 caractères Nom du volume de stockage
total Int Valeur comprise entre 0 et 1048576 Capacité totale du volume exprimée en Go
used Int Valeur comprise entre 0 et 1048576 Taille totale utilisée sur le volume en Go

Objet de type "Process"

Les objets de type "Process" servent à décrire un processus exécuté sur un serveur.

Index Type Limitations Commentaire
0 String Chaîne de 1 à 96 caractères Nom du processus
1 String Chaîne de 1 à 48 caractères Utilisateur exécutant le processus
3 Float Valeur comprise entre 0 et 100 Pourcentage d'utilisation du CPU par le processus
4 Int Valeur comprise entre 0 et 1048576 Consommation mémoire du processus en Mo

Réponse de l'API

Lorsque votre script transmet les informations à l'API, vous devrez traiter un objet JSON avec un attribut "error" et un attribut "msg".

{"error":0,"msg":"OK"}

Le tableau ci-dessous regroupe les codes erreurs pouvant être retourné sous certaines conditions :

Code Description
0 Le rapport a été reçu et traité avec succès
21101 Une ou plusieurs valeurs sont invalides et l'attribut "input" donne des détails sur les erreurs à corriger
22037 Le délai d'envoi entre deux rapports est trop court (voir la configuration dans votre manager)
22038 La surveillance de ce serveur a été désactivée et aucun rapport ne sera enregistré

Analyse des rapports

En vous rendant dans la page de rapport du serveur, depuis votre manager, vous pouvez consulter la liste des requêtes envoyées par votre script dans l'onglet "Rapports".

Exemple d'alerte affichée dans Slack

En cliquant sur le bouton détail (), vous afficherez les différentes informations telles que les données envoyées par votre script ou la réponse retournée par notre API.