Monitoring API

pour

  • net/dev/ops
  • iot/ml/ai/data
  • cron/schedule
  • services/etc..

Recevez une alerte lorsque vos sauvegardes nocturnes, vos rapports hebdomadaires, vos tâches cron/planifiées ne s'exécutent pas à temps.

Si l'url ne reçoit pas de ping a temps, Supervise vous envoie une alerte.
L'api s'adapte à beaucoup de langages de programmation et divers cas de figure via des appels HTTP.

Pour surveiller vos exécutions Supervise fournit une url unique:

https://beta.supervise.fr/ping/9077afd0-f4d6-4f58-9e01-ff7b7e50e5d5

Configuration simple

Chaque check a des paramètres configurables d'intervalles et de temps de grâce.
En fonction de ces paramètres et du temps écoulé depuis le dernier ping, le check est dans l'un des états suivants :
Nouveau. Un check a été créé, mais qui n'a pas encore reçu de ping.
OK. Le temps écoulé depuis le dernier ping n'a pas dépassé l'intervalle.
En retard. Le temps écoulé depuis le dernier ping a dépassé l'intervalle, mais n'a pas encore dépassé le temps de grâce.
KO. Le temps écoulé depuis le dernier ping a dépassé l'intervalle + grâce.
Lorsqu'un check passe de "retard" à "KO", Supervise vous envoie une notification.
Period/Grace Time dialog

Exemples d'intégrations dans divers langages

Elixir

url = "https://beta.supervise.fr/ping/9077afd0-f4d6-4f58-9e01-ff7b7e50e5d5"

response = HTTPoison.get!(url)
req = Poison.decode!(response.body)

Bash

# using curl (10 second timeout, retry up to 5 times):
curl -m 10 --retry 5 https://beta.supervise.fr/ping/9077afd0-f4d6-4f58-9e01-ff7b7e50e5d5
# using wget (10 second timeout, retry up to 5 times):
wget https://beta.supervise.fr/ping/9077afd0-f4d6-4f58-9e01-ff7b7e50e5d5 -T 10 -t 5 -O /dev/null

Python

# Using Python 3 standard library:
import socket
import urllib.request

try:
    urllib.request.urlopen("https://beta.supervise.fr/ping/9077afd0-f4d6-4f58-9e01-ff7b7e50e5d5", timeout=10)
except socket.error as e:
    # Log ping failure here...
    print("Ping failed: %s" % e)
# Using the requests library:
import requests

try:
    requests.get("https://beta.supervise.fr/ping/9077afd0-f4d6-4f58-9e01-ff7b7e50e5d5", timeout=10)
except requests.RequestException as e:
    # Log ping failure here...
    print("Ping failed: %s" % e)

Ruby

require 'net/http'
require 'uri'

Net::HTTP.get(URI.parse('https://beta.supervise.fr/ping/9077afd0-f4d6-4f58-9e01-ff7b7e50e5d5'))

Node.js

var https = require('https');
https.get('https://beta.supervise.fr/ping/9077afd0-f4d6-4f58-9e01-ff7b7e50e5d5').on('error', (err) => {
    console.log('Ping failed: ' + err)
});

GO

package main

import "fmt"
import "net/http"
import "time"

func main() {
    var client = &http.Client{
        Timeout: 10 * time.Second,
    }

    _, err := client.Head("https://beta.supervise.fr/ping/9077afd0-f4d6-4f58-9e01-ff7b7e50e5d5")
    if err != nil {
        fmt.Printf("%s", err)
    }
}

PHP

file_get_contents('https://beta.supervise.fr/ping/9077afd0-f4d6-4f58-9e01-ff7b7e50e5d5');

C#

try
{
    using (var client = new System.Net.Http.HttpClient())
    {
        client.Timeout = System.TimeSpan.FromSeconds(10);
        client.GetAsync("https://beta.supervise.fr/ping/9077afd0-f4d6-4f58-9e01-ff7b7e50e5d5").Wait();
    }
}
catch (System.Exception ex)
{
    System.Console.WriteLine($"Ping KO: {ex.Message}");
}

Browser

// the server returns appropriate CORS headers so cross-domain AJAX requests work:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://beta.supervise.fr/ping/9077afd0-f4d6-4f58-9e01-ff7b7e50e5d5', true);
xhr.send(null);

PowerShell

# inside a PowerShell script:
Invoke-RestMethod https://beta.supervise.fr/ping/9077afd0-f4d6-4f58-9e01-ff7b7e50e5d5

Rust

use http::Request;

fn main() {
    Request::builder().uri("https://beta.supervise.fr/ping/9077afd0-f4d6-4f58-9e01-ff7b7e50e5d5").body(()).unwrap();
}

Java

URL url = new URL("https://beta.supervise.fr/ping/9077afd0-f4d6-4f58-9e01-ff7b7e50e5d5");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");

La souscription Perso est disponible gratuitement et ne nécessite pas de CB.

Inscription - Gratuite

Intégrations
Configurez plusieurs façons d'être averti :

Email
 

Webhooks
 

Discord
Chat

Microsoft Teams
Chat

OpsGenie
Incident Management

Prometheus
Event Monitoring

Divers cas de figure pour monitorer avec Supervise

Tâches Cron

Supervise est idéal pour les tâches cron et cron-like systèmes (minuteries systemd, tâches de build Jenkins, tâches planifiées Windows, wp-cron, interface de type cron uwsgi, Heroku Scheduler, ...). Un KO en tâche de fond n'a souvent aucune conséquence visible immédiate et peut rester longtemps inaperçu.

Exemples spécifiques :

  • Sauvegardes système de fichiers
  • Sauvegardes de la base de données
  • Renouvellements SSL
  • Importation et synchronisation des données d'entreprise
  • Analyses antivirus
  • Mises à jour DNS dynamiques

Processus, Services, Serveurs

Vous pouvez utiliser Supervise pour vérifier qu'un service système particulier ou l'ensemble du serveur est en bonne santé. Pour le client vous écrivez scripts/code/logique/conditions spécifique qui envoie un ping à Supervise en cas de succès. Exécutez le régulièrement.

Exemples spécifiques :

  • Vérifier qu'un conteneur spécifique Docker/Kubernetes est en cours d'exécution
  • Vérifier qu'un processus spécifique d'application est en cours d'exécution
  • Vérifier le délai de réplication de la base de données
  • Vérifier les ressources système : disque libre, RAM libre, ...
  • Envoyez des messages simples et inconditionnels "Je suis en vie" depuis votre serveur (ou votre NAS, routeur, Raspberry Pi, etc..)