Aller au contenu

Cas d'utilisation

Cette page est un livre de recettes de modélisation, pas une liste de fonctionnalités. Chaque scénario explique quel modèle utiliser et pourquoi il est plus clair que d’envoyer des notifications en texte brut pour tout.

Lorsque l’utilisation du disque dépasse un seuil, une seule alerte forte suffit.

Fenêtre de terminal
USAGE=$(df / | awk 'NR==2 { gsub("%", "", $5); print $5 }')
if [ "$USAGE" -ge 90 ]; then
curl -X POST https://gateway.pushgo.dev/message \
-H "Content-Type: application/json" \
-d '{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"title": "Disk space warning",
"body": "Root partition usage has reached '"$USAGE"'%.",
"severity": "high",
"tags": ["nas", "disk"]
}'
fi

Une sauvegarde a un début, une progression et un résultat. Event conserve ces mises à jour sous un seul cycle de vie.

Fenêtre de terminal
curl -X POST https://gateway.pushgo.dev/event/create \
-H "Content-Type: application/json" \
-d '{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"title": "NAS backup",
"status": "running",
"message": "Backup started",
"severity": "normal",
"event_time": 1713750000000,
"started_at": 1713750000000
}'

Stockez le event_id renvoyé, puis appelez /event/update et /event/close pendant le téléchargement, la vérification, l’achèvement ou l’échec.

Si vous souhaitez voir l’état actuel d’un serveur au fil du temps, modélisez l’hôte comme un Thing.

{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"title": "Home NAS",
"observed_at": 1713750000000,
"tags": ["nas", "home"],
"attrs": {
"online": true,
"cpu": 0.18,
"disk_used": 0.72,
"temperature": 43.2
}
}

La température, l’humidité et la lumière sont des états persistants. Modélisez chaque pièce ou appareil comme un Thing et mettez à jour le attrs.

{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"title": "Living room",
"observed_at": 1713750000000,
"external_ids": {
"home_assistant": "sensor.living_room_temperature"
},
"location_type": "physical",
"location_value": "home/living-room",
"attrs": {
"temperature": 22.5,
"humidity": 0.46
}
}

Une porte ouverte est un processus qui se termine lorsque la porte se ferme.

{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"title": "Balcony door open",
"status": "open",
"message": "The balcony door has been open for more than 5 minutes.",
"severity": "high",
"event_time": 1713750000000,
"started_at": 1713750000000,
"tags": ["home", "door"]
}

Une caméra de détection de mouvement avec un instantané est une Message.

{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"title": "Motion detected",
"body": "Entry camera detected motion.",
"severity": "high",
"images": ["https://example.com/snapshot.jpg"],
"tags": ["camera", "security"]
}

Les déploiements ont un état de cycle de vie. Créez dès le début, mettez à jour aux étapes principales et clôturez avec succès ou échec.

{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"title": "Production deployment",
"status": "building",
"message": "Building image",
"severity": "normal",
"event_time": 1713750000000,
"started_at": 1713750000000,
"attrs": {
"service": "api",
"revision": "8f3c2a1"
}
}

En cas d’échec, augmentez severity en critical et fermez l’événement avec status=failed.

L’état en ligne, la latence et la version correspondent à l’état actuel.

{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"title": "API service",
"observed_at": 1713750000000,
"location_type": "cloud",
"location_value": "prod",
"attrs": {
"healthy": true,
"latency_ms": 83,
"version": "1.8.4"
}
}

Même si le Event enregistre le cycle de vie du déploiement, vous pouvez envoyer un Message au point de défaillance pour une meilleure visibilité mobile.

{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"title": "Production deployment failed",
"body": "The api service deployment failed. Check the pipeline logs.",
"severity": "critical",
"tags": ["deploy", "prod"]
}

Un seuil de prix est généralement une alerte.

{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"title": "Price dropped",
"body": "The tracked product is now 199.",
"severity": "normal",
"url": "https://example.com/product"
}

Travail de téléchargement ou de transcodage long : Event

Section intitulée « Travail de téléchargement ou de transcodage long : Event »

Les tâches de téléchargement, de transcodage et de formation sont des événements car elles démarrent, se mettent à jour et se terminent.

{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"title": "Video transcoding",
"status": "running",
"message": "45% complete",
"severity": "normal",
"event_time": 1713750000000,
"attrs": {
"progress": 0.45
}
}
ScénarioModèlePourquoi
Échec, succès, baisse de prix, alerteMessageAlerte ponctuelle.
Déploiement, sauvegarde, transcodage, incidentEventProcessus avec mises à jour et résultat.
Serveur, capteur, salle, serviceThingObjet persistant avec l’état actuel.
Alerte sur un appareil spécifiqueThing + MessageL’entité et l’alerte restent connectées.
Incident sur un serviceThing + EventLe service est l’entité ; l’incident est le cycle de vie.