Post

Checkmate, application open source de surveillance disponibilité et infrastructure

Checkmate, application open source de surveillance disponibilité et infrastructure

Checkmate, un outil de surveillance open source et auto-hébergé permettant de suivre en temps réel le matériel serveur, la disponibilité, les temps de réponse et les incidents, avec de superbes visualisations. Checkmate vérifie régulièrement si un serveur/site web est accessible et fonctionne de manière optimale, fournissant des alertes et des rapports en temps réel sur la disponibilité, les temps d’arrêt et les temps de réponse des services surveillés.

Checkmate

Le référentiel (https://github.com/bluewave-labs/Checkmate) contient à la fois le frontend et le backend de Checkmate

Checkmate dispose également d’un agent, appelé Capture, qui permet de récupérer des données à partir de serveurs distants. Bien que Capture ne soit pas nécessaire pour exécuter Checkmate, il fournit des informations supplémentaires sur l’état du processeur, de la mémoire vive, du disque et de la température de vos serveurs. Capture peut fonctionner sous Linux, Windows, Mac, Raspberry Pi ou tout autre appareil capable d’exécuter Go.

Checkmate a été soumis à des tests de résistance avec plus de 1 000 moniteurs actifs sans rencontrer de problèmes particuliers ni de goulots d’étranglement au niveau des performances.

Documentation Checkmate 2.1

Installation de Checkmate

L’installation de Checkmate est un processus assez simple sur une machine Linux. Il existe cependant de nombreuses options d’installation, ce qui peut être déroutant. Voici un aperçu de toutes les options :

  1. Si vous souhaitez déployer sur un serveur Linux, nous vous recommandons d’opter pour l’option Installation combinée FE/BE Docker. Cela permet de conserver le backend et le frontend sur un seul Docker, et Redis et MongoDB sur deux autres services Docker.
  2. Si vous souhaitez déployer sur un serveur Linux, mais que vous souhaitez conserver le frontend et le backend sur deux images Docker distinctes, optez pour l’option Installation séparée de FE/BE Docker. Notez que cette méthode d’installation peut ne pas être aussi simple que la première.
  3. (Pour les développeurs), il existe également une troisième option pour les développeurs qui souhaitent travailler sur l’application, par exemple pour l’étendre et la tester.

Option 1 : Installation combinée FE/BE Docker (méthode facile)

Dans cette installation, le front-end React est servi depuis le serveur API. Il n’y a pas d’image client, car elle n’est pas nécessaire. Notez qu’il s’agit toujours d’une SPA React et qu’elle est servie à votre navigateur où elle s’exécute.

Les requêtes au serveur API sont effectuées depuis votre navigateur. Si celui-ci se trouve sur une machine différente de votre serveur API, vous devez configurer l’URL API de manière appropriée.

Pour commencer :

Votre application démarrera à l’adresse http://localhost:52345

La configuration reste la même que pour le serveur standard, avec deux variables d’environnement frontales supplémentaires :

  • UPTIME_APP_API_BASE_URL : http://localhost:52345/api/v1
  • UPTIME_APP_CLIENT_HOST : http://localhost

REMARQUE :
Si vous souhaitez héberger votre instance Checkmate ailleurs que sur la machine sur laquelle votre navigateur est exécuté, vous devrez mettre à jour ces variables. Par exemple, si vous hébergez à l’adresse 143.110.231.94, utilisez les variables suivantes :

UPTIME_APP_API_BASE_URL=http://143.110.231.94:52345/api/v1
UPTIME_APP_CLIENT_HOST=http://143.110.231.94
CLIENT_HOST=http://143.110.231.94

Où,

  • UPTIME_APP_API_BASE_URL pointe le client vers le serveur
  • UPTIME_APP_CLIENT_HOST est utilisé pour créer des liens qui pointent vers le client
  • CLIENT_HOST est l’origine à partir de laquelle le serveur API approuvera les requêtes

Option 2 : Installation séparée de FE/BE Docker

Dans cette installation, le front-end React est servi par une image Docker Nginx (nommée Client) et est indépendant du serveur API.

Notez que si vous souhaitez configurer Nginx, vous devrez monter un volume sur l’image Client pour remplacer la configuration par défaut :

2.1 Exécution sur une machine locale

  1. Téléchargez notre fichier Docker Compose
  2. Exécutez docker compose up pour démarrer l’application
  3. L’application est désormais exécutée à l’adresse http://localhost

Configuration facultative :

  • Si vous souhaitez surveiller les conteneurs Docker, décommentez cette ligne dans docker-compose.yaml :
1
2
  # volumes:
  # - /var/run/docker.sock:/var/run/docker.sock:ro

Cela permet à l’application d’accéder à votre démon Docker via un socket Unix. Soyez conscient de ce que vous faites.

2.2 Exécution sur un serveur distant

  1. Téléchargez notre fichier Docker Compose
  2. Modifiez la variable UPTIME_APP_API_BASE_URL dans le fichier docker-compose pour pointer vers votre serveur distant.
  3. Exécutez docker compose up pour démarrer l’application
  4. L’application est désormais exécutée à l’adresse http://<remote_server_ip>

Configuration facultative :

  • Si vous souhaitez surveiller les conteneurs Docker, décommentez cette ligne dans docker-compose.yaml :
1
2
  # volumes:
  # - /var/run/docker.sock:/var/run/docker.sock:ro

Cela permet à l’application d’accéder à votre démon Docker via un socket Unix. Soyez conscient de ce que vous faites.

Capture - Agent de surveillance des serveurs

Pour collecter des informations matérielles à partir de vos serveurs, vous avez besoin de Capture, un agent de surveillance des serveurs pour Checkmate. Capture reçoit les requêtes de Checkmate (serveur) et envoie les données nécessaires sur l’état de l’infrastructure.

Capture est un agent de surveillance matérielle qui collecte des informations matérielles à partir de la machine hôte et les expose via une API RESTful. L’agent est conçu pour être léger et facile à utiliser.

Capture est uniquement disponible pour Linux.

Docker Installation

L’installation de Docker est recommandée pour exécuter Capture. Veuillez consulter la section Indicateurs d’exécution Docker pour plus d’informations.

Récupérez l’image depuis le registre, puis exécutez-la à l’aide d’une seule commande.

1
2
3
4
5
docker run -v /etc/os-release:/etc/os-release:ro \
    -p 59232:59232 \
    -e API_SECRET=REPLACE_WITH_YOUR_SECRET \
    -d \
    ghcr.io/bluewave-labs/capture:latest

Si vous ne souhaitez pas extraire l’image, vous pouvez la créer et l’exécuter localement.

1
docker buildx build -f Dockerfile -t capture .
1
2
3
4
5
docker run -v /etc/os-release:/etc/os-release:ro \
    -p 59232:59232 \
    -e API_SECRET=REPLACE_WITH_YOUR_SECRET \
    -d \
    capture:latest

Drapeaux Docker run

Avant d’exécuter le conteneur, veillez à remplacer REPLACE_WITH_YOUR_SECRET par votre propre secret.

! Vous devez saisir ce secret dans le tableau de bord de surveillance de l’infrastructure de Checkmate

  • -v /etc/os-release:/etc/os-release:ro pour obtenir correctement les informations sur la plateforme
  • -p 59232:59232 pour exposer le port 59232
  • -d pour exécuter le conteneur en mode détaché
  • -e API_SECRET=REPLACE_WITH_YOUR_SECRET pour définir le secret API
  • (facultatif) -e GIN_MODE=release/debug pour basculer entre le mode release et le mode debug
1
2
3
4
5
docker run -v /etc/os-release:/etc/os-release:ro \
    -p 59232:59232 \
    -e API_SECRET=REPLACE_WITH_YOUR_SECRET \
    -d \
    ghcr.io/bluewave-labs/capture:latest

System Installation

Binaires précompilés

Vous pouvez télécharger les binaires précompilés depuis la page GitHub Releases.

Le chemin d’installation recommandé est /usr/local/bin.

N’oubliez pas de rendre le binaire exécutable.

1
chmod +x /usr/local/bin/capture

Package Go

Vous pouvez installer Capture à l’aide de la commande « go install ».

1
go install github.com/bluewave-labs/capture/cmd/capture@latest

Variables d’environnement

Configurez la capture à l’aide des variables d’environnement suivantes :

Variable Description Obligatoire/Facultatif Type Valeur par défaut Valeurs acceptées
API_SECRET La clé secrète pour l’API Obligatoire chaîne - Toute valeur de chaîne
PORT Le port sur lequel la capture écoute Facultatif entier 59232 0 - 65535
GIN_MODE Le mode du framework Gin Facultatif chaîne <p>system -> debug
docker -> release</p>
release, debug

Exemple

Veuillez vous assurer de remplacer le paramètre par défaut « your_secret » par votre propre secret.

! Vous devez saisir ce secret dans le tableau de bord de surveillance de l’infrastructure de Checkmate

1
2
3
PORT = your_port
API_SECRET = your_secret
GIN_MODE = release/debug
1
2
3
4
5
# API_SECRET est obligatoire.
API_SECRET=your_secret GIN_MODE=release ./capture

# Configuration minimale requise
API_SECRET=your_secret ./dist/capture

Configuration requise pour le serveur

Checkmate est une solution de surveillance optimisée. Bien qu’elle fonctionne sur du matériel modeste, il est important de connaître vos besoins en matière de matériel.

Voici un exemple : si vous disposez de 300 moniteurs, vous aurez besoin de 3 Go d’espace disque par mois s’ils sont configurés pour effectuer des vérifications toutes les secondes (intervalles). Cela signifie que vous aurez besoin de 36 Go d’espace disque pour surveiller 300 serveurs pendant toute une année.

Par défaut, Checkmate a une politique de conservation des données de 90 jours. Celle-ci peut être configurée dans les paramètres. Ainsi, si vous avez besoin que Checkmate conserve les données plus longtemps, vous pouvez le configurer en conséquence.

Par défaut, Checkmate utilise la méthode de compression MongoDB « snappy », qui se caractérise par une utilisation modérée du processeur et un taux de compression modéré. Elle convient aux charges de travail où la vitesse est plus importante que les économies de stockage. Si vous le souhaitez, vous pouvez toujours utiliser « zlib » dans la configuration MongoDB, qui offre un taux de compression plus élevé que « snappy », mais avec une charge processeur plus importante.

Moniteur d’infrastructure

Le moniteur d’infrastructure est utilisé pour obtenir des informations (matériel et réseau) à partir d’une machine Linux, Windows ou MacOS distante.

Il s’agit de la seule fonctionnalité de Checkmate qui récupère des données à partir de serveurs distants à l’aide de l’agent serveur de Checkmate, Capture.

Pour vérifier le processeur, le disque, la mémoire et le disque d’un serveur distant, vous devez d’abord installer l’agent Checkmate. Veuillez lire cette section pour installer Capture.

Notez que l’agent Capture n’est pas installé par défaut sur le serveur Checkmate.

Pour obtenir la liste des plateformes disponibles et connaître le type de données récupérées par Capture, veuillez consulter la page du projet Capture sur GitHub.

Ce guide vous explique comment configurer un moniteur d’infrastructure dans Checkmate afin de suivre et de recevoir des alertes concernant les performances et l’état de votre serveur.

Étape 1 : cliquez sur le lien Infrastructure Monitor

Accédez à la section Infrastructure dans Checkmate et cliquez sur le bouton Créer pour accéder au formulaire de configuration permettant de créer un nouveau moniteur d’infrastructure.

Étape 2 : Configurer les paramètres généraux

Dans cette section, vous allez définir le serveur à surveiller et fournir les informations d’identification essentielles.

  1. URL du serveur :
    • Entrez l’URL de l’hôte que vous souhaitez surveiller. Assurez-vous que le serveur exécute l’agent de surveillance Checkmate pour démarrer la collecte de données.
  2. Nom d’affichage (facultatif) :
    • Ajoutez un nom convivial pour le serveur afin de le rendre plus facile à identifier dans votre tableau de bord de surveillance.
  3. Secret d’autorisation :
    • Entrez la clé secrète requise pour vous authentifier auprès de l’agent de surveillance sur le serveur.

Étape 3 : Activer les notifications d’incident (facultatif)

Pour recevoir des notifications lorsqu’un incident se produit :

  1. Cochez la case intitulée Notifier par e-mail.
  2. Entrez l’adresse e-mail à laquelle les notifications doivent être envoyées.

Étape 4 : Personnaliser les alertes (facultatif)

Définissez des seuils spécifiques pour les indicateurs de performances du serveur. Lorsque ces seuils sont dépassés, vous recevez des notifications.

  1. Cochez les indicateurs que vous souhaitez surveiller :
    • CPU : Spécifiez un seuil en pourcentage (par exemple, 80 %) pour l’utilisation du processeur.
    • Mémoire : Spécifiez un seuil en pourcentage (par exemple, 70 %) pour l’utilisation de la mémoire.
    • Disque : Spécifiez un seuil en pourcentage (par exemple, 90 %) pour l’utilisation du disque.
    • Température : Spécifiez un seuil de température (par exemple, 75 °C).
  2. Ajustez les seuils en fonction de vos besoins de surveillance.

Étape 5 : Configurer les paramètres avancés

Définissez la fréquence à laquelle le moniteur d’infrastructure vérifie les mises à jour du serveur :

  • Utilisez le menu déroulant Fréquence de vérification pour sélectionner un intervalle (par exemple, toutes les 15 secondes).

Étape 6 : Créer le moniteur

Une fois tous les paramètres configurés, cliquez sur le bouton Créer un moniteur d’infrastructure en bas de la page pour finaliser la configuration.

Affichage du moniteur d’infrastructure

Votre nouveau moniteur d’infrastructure apparaîtra désormais dans le tableau de bord de surveillance et suivra activement le serveur en fonction des préférences que vous avez sélectionnées.

Notez qu’il y aura deux onglets différents ici : Détails et Réseau. Sous Détails, vous verrez les informations instantanées sur le CPU, la RAM, la mémoire et le disque sous forme de jauges, ainsi que les valeurs historiques. Sous Réseau, tous les détails récupérés à partir de vos adaptateurs réseau seront affichés.

Cet article est sous licence CC BY 4.0 par l'auteur.