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
- Authentification
- Données de la requête
- Réponses de l'API
- Rapports
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".
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.