
Moteur d'alerte open-source pour données de surveillance de séries temporelles. Se connecte à Prometheus, VictoriaMetrics, ElasticSearch et d'autres sources de données. Prend en charge plus de 20 canaux de notification, réduction du bruit des alertes, escalade et automatisation d'auto-guérison.
<p align="center">
<a href="https://github.com/ccfos/nightingale">
<img src="https://assets.kitploit.com/production/public/readmes/6912/478fc7d999847e20a15fb5b231650ebbb0d483edba4ce0b313091fac474416f2.png" alt="Nightingale" width="100" />
</a>
</p>
<p align="center">
<b>Alerting open source pour votre stack existante</b>
</p>
<p align="center">
<a href="https://github.com/ccfos/nightingale/releases"><img alt="Latest release" src="https://img.shields.io/github/v/release/ccfos/nightingale" /></a>
<a href="https://github.com/ccfos/nightingale/blob/main/LICENSE"><img alt="Apache-2.0 license" src="https://img.shields.io/badge/license-Apache--2.0-blue" /></a>
<a href="https://github.com/ccfos/nightingale/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/ccfos/nightingale" /></a>
<a href="https://hub.docker.com/r/flashcatcloud/nightingale"><img alt="Docker pulls" src="https://img.shields.io/docker/pulls/flashcatcloud/nightingale" /></a>
<a href="https://join.slack.com/t/n9e/shared_invite/zt-480klxytf-P9qm3C1M87kDmRPp_H30Kw"><img alt="Join the Nightingale Slack community" src="https://img.shields.io/badge/Slack-join%20the%20community-brightgreen" /></a>
</p>
<p align="center">
<a href="#quick-start">Démarrage rapide</a> ·
<a href="https://n9e.github.io/docs">Documentation</a> ·
<a href="https://n9e.github.io/download">Téléchargement</a> ·
<a href="https://github.com/ccfos/nightingale/releases">Versions</a> ·
<a href="#community">Communauté</a>
</p>
[English](https://github.com/ccfos/nightingale/blob/main/README.md) | [中文](https://github.com/ccfos/nightingale/blob/main/README_zh.md)
Nightingale réunit les règles d'alerte, le traitement des événements et le routage des notifications en un seul endroit. Connectez Prometheus, VictoriaMetrics, Elasticsearch, Loki, ClickHouse et d'autres sources de données que vous exploitez déjà, puis envoyez les alertes vers Slack, PagerDuty et les outils existants de votre équipe.
**Auto-hébergé · Apache-2.0 · Agent IA intégré · Serveur MCP**

## Pourquoi Nightingale ?
- **Donnez aux équipes la responsabilité de leurs alertes.** Organisez les règles en groupes métier, attribuez des permissions d'équipe et gérez les règles et les paramètres de notification via l'interface et l'API.
- **Regroupez une alerting dispersée en un seul endroit.** Évaluez les règles sur des sources de données de métriques, de logs et SQL tout en conservant vos collecteurs, votre stockage et vos tableaux de bord Grafana existants.
- **Comprenez ce qui est arrivé à une alerte.** Inspectez les enregistrements d'évaluation des règles, les événements historiques et les résultats de notification pour suivre une requête jusqu'à sa livraison.
## Démarrage rapide
Avec Git et Docker Compose installés, démarrez la stack d'évaluation incluse :
```bash
git clone https://github.com/ccfos/nightingale.git
cd nightingale/docker/compose-bridge
docker compose up -d
```
Cela démarre Nightingale, MySQL, Redis, VictoriaMetrics et Categraf. Ouvrez [http://localhost:17000](http://localhost:17000) et connectez-vous avec **`root` / `root.2020`**.
Pour obtenir votre première alerte :
1. **Connectez une source de données.** Ajoutez votre point de terminaison compatible Prometheus existant, ou utilisez `http://victoriametrics:8428` pour l'instance VictoriaMetrics de cette stack Compose.
2. **Créez une règle d'alerte.** Choisissez un groupe métier et une source de données, puis saisissez une expression PromQL. Pour un test qui se déclenche toujours, utilisez `vector(1) > 0` et définissez la durée à `0`.
3. **Configurez la livraison.** Mettez en place un canal de notification, créez une règle de notification et attachez-la à la règle d'alerte. Vérifiez que la notification de test arrive, puis désactivez l'alerte de test.
La stack Compose utilise des identifiants d'exemple et expose les ports des services pour une évaluation locale. Modifiez les identifiants et vérifiez l'accès réseau avant de déployer sur un hôte partagé ou public. Consultez les [options de déploiement](#deployment) pour d'autres façons d'exécuter Nightingale.
## Comment il s'intègre dans votre stack
Nightingale interroge vos sources de données, évalue les conditions d'alerte, traite les événements et achemine les notifications. Vos données existantes restent dans leurs stockages actuels.
Conservez Grafana pour la visualisation et votre plateforme d'astreinte pour la planification, l'escalade et la réponse aux incidents. Nightingale inclut également des tableaux de bord pour les équipes qui souhaitent explorer les données parallèlement à leurs alertes.
Vous démarrez sans stack de supervision ? La configuration autonome inclut une TSDB embarquée optionnelle pour les petits déploiements à instance unique. [Categraf](https://github.com/flashcatcloud/categraf) est un collecteur optionnel pour les hôtes, les middlewares, les bases de données et les équipements réseau.
## Capacités clés
| Capacité | Ce que vous pouvez faire |
| --- | --- |
| Alerting multi-sources de données | Utilisez PromQL, des requêtes de logs ou du SQL pour définir les conditions. Appliquez une règle à plusieurs instances d'un même type de source de données. |
| Appropriation par les équipes | Regroupez les règles et les tableaux de bord par groupe métier, attribuez des permissions d'équipe et connectez OIDC, OAuth2, LDAP ou CAS pour la connexion. |
| Traitement et routage des événements | Mettez en sourdine les notifications, abonnez-vous aux alertes, enrichissez ou réécrivez les labels et acheminez les événements via des pipelines conditionnels. |
| Enregistrements d'exécution des alertes | Consultez les requêtes et résultats d'évaluation, les événements actifs et historiques, ainsi que les enregistrements de livraison des notifications. |
| Intégrations réutilisables | Démarrez avec des configurations de collecteurs, des règles d'alerte et des tableaux de bord fournis. Vérifiez les requêtes et les seuils pour votre environnement avant de les activer. |
| Évaluation distribuée | Répartissez les règles entre les moteurs d'alerting et utilisez `n9e-edge` pour évaluer les alertes au plus près des sources de données distantes. |
Les intégrations de notification incluent **Slack, PagerDuty, Discord, Email, Telegram, Mattermost, Jira et Jira Service Management**, avec des webhooks HTTP et des scripts pour des destinations personnalisées. Consultez la [référence des canaux de notification natifs](https://github.com/ccfos/nightingale/blob/main/doc/api/notify-channel-native.md) pour les détails de configuration.
Pour les réponses automatisées, connectez [ibex](https://github.com/flashcatcloud/ibex) afin d'exécuter des scripts de remédiation prédéfinis lorsqu'une alerte se déclenche.
<a id="-mcp-server"></a>
<a id="ai-assistant-and-mcp"></a>
## Agent IA intégré
Nightingale inclut un agent IA que vous pouvez utiliser directement dans l'interface web. L'agent s'exécute au sein de Nightingale, appelle des outils pour inspecter vos données de supervision et votre configuration, et mène à bien des tâches en plusieurs étapes.
- **Enquêter sur les alertes.** Interroger les métriques et les journaux associés, inspecter les hôtes concernés et expliquer les résultats à l'aide des données récupérées.
- **Résoudre les problèmes du processus d'alerte.** Inspecter les règles, les journaux d'évaluation, les paramètres de mise en sourdine, le traitement des événements et les résultats de notification pour déterminer pourquoi une alerte ne s'est pas déclenchée ou n'a pas atteint sa destination.
- **Créer et mettre à jour la configuration.** Construire des règles d'alerte et des tableaux de bord, générer du PromQL et du SQL, et configurer les règles de notification, les mises en sourdine et les abonnements par conversation. Les outils intégrés pour la mise à jour des règles d'alerte et des tableaux de bord existants présentent les modifications proposées pour confirmation.
- **L'étendre avec des Skills.** Les Skills fournis couvrent les workflows de supervision courants. Ajoutez les procédures, la documentation de référence et les scripts de votre équipe en tant que Skills personnalisés, y compris les Skills importés depuis Git.
Par exemple :
> Pourquoi cette alerte s'est-elle déclenchée ? Vérifie les métriques et les journaux de l'hôte concerné autour de l'heure de déclenchement.
> Crée une alerte d'utilisation de la mémoire pour les hôtes de production et notifie notre équipe sur Slack.
Configurez un point de terminaison de modèle pour commencer. L'agent prend en charge les API compatibles OpenAI, Claude, Gemini et les modèles auto-hébergés compatibles. Vous choisissez le service de modèle et les identifiants ; l'alerte de base fonctionne indépendamment de l'agent.
[Configuration du fournisseur de modèle](https://github.com/ccfos/nightingale/blob/main/doc/api/ai-llm-config.md) · [Gestion des Skills](https://github.com/ccfos/nightingale/blob/main/doc/api/ai-skill.md) · [Skills fournis](https://github.com/ccfos/nightingale/blob/main/aiagent/skill/embedded/builtin)
### Connecter des agents externes
- **MCP** permet aux assistants externes d'appeler les outils de Nightingale. Le serveur s'exécute au sein de Nightingale à l'adresse `/mcp`, expose par défaut des outils de lecture et applique les permissions d'API existantes de l'appelant. Les outils d'écriture nécessitent une configuration explicite. Voir [Configuration de MCP](https://github.com/ccfos/nightingale/blob/main/doc/api/mcp-server.md).
- **A2A** permet à un autre agent de déléguer une tâche à l'agent intégré de Nightingale. Voir [Intégration A2A](https://github.com/ccfos/nightingale/blob/main/doc/api/a2a-integration.md).
## Captures d'écran du produit
Gérer les règles d'alerte par source de données et groupe métier :

## Déploiement
| Option | Pour commencer |
| --- | --- |
| Évaluation locale avec Docker Compose | [Pile Compose incluse](https://github.com/ccfos/nightingale/blob/main/docker/compose-bridge/docker-compose.yaml) |
| Binaires Linux pour amd64 et arm64 | [Téléchargements des versions](https://github.com/ccfos/nightingale/releases) et [référence de configuration](https://github.com/ccfos/nightingale/blob/main/etc/config.toml) |
| Kubernetes | [Chart Helm et instructions d'installation](https://github.com/flashcatcloud/n9e-helm) |
Pour la production, épinglez une version, configurez les identifiants et TLS, sauvegardez la base de données de métadonnées et surveillez les échecs d'évaluation des règles et de notification. Plusieurs instances de Nightingale partagent une base de données de métadonnées et Redis ; utilisez un stockage de séries temporelles externe pour un déploiement multi-instances. La TSDB intégrée stocke les données sur le disque local d'une seule instance.
Consultez la [documentation](https://n9e.github.io/docs), le [guide d'installation](https://n9e.github.io/docs/install/overview), les [notes de version](https://github.com/ccfos/nightingale/releases) et la [politique de sécurité](https://github.com/ccfos/nightingale/blob/main/SECURITY.md) pour plus d'informations et les versions prises en charge.
## FAQ
**Dois-je remplacer mes collecteurs ou migrer mes données de supervision ?**
Non. Nightingale peut interroger directement vos sources de données existantes. Conservez vos exporters et vos collecteurs. Categraf et la TSDB intégrée sont disponibles lorsque vous avez besoin de collecte ou de stockage local.
**Puis-je importer des règles d'alerte Prometheus existantes ?**
Oui. L'import de règles prend en charge le YAML Prometheus, y compris les expressions, les durées, les labels et les annotations. Vérifiez les règles converties et reconfigurez le routage des notifications dans Nightingale. L'import ne constitue pas une conversion complète de `alertmanager.yml` ; exécutez les deux systèmes en parallèle pendant l'évaluation avant de basculer les notifications.
**Puis-je gérer les règles via Git et CI ?**
Les règles peuvent être exportées au format JSON et créées ou mises à jour via l'API HTTP, ce qui vous permet de construire un workflow autour d'une configuration versionnée. Nightingale ne fournit actuellement pas d'historique intégré des révisions de règles ni de retour à des révisions antérieures.
**L'IA est-elle obligatoire, et où vont les requêtes vers le modèle ?**
L'alerting fonctionne sans IA. L'assistant intégré envoie les prompts et les données qu'il utilise à votre point de terminaison de modèle configuré ; vous pouvez utiliser un modèle hébergé dans votre propre réseau. Les clients MCP externes utilisent leurs propres paramètres de modèle. Les identifiants du service de modèle et les coûts d'utilisation sont gérés par vous.
**Nightingale fournit-il une planification d'astreinte et une escalade ?**
Connectez une plateforme d'astreinte telle que PagerDuty pour les plannings, les politiques d'escalade et la réponse aux incidents. Nightingale gère l'évaluation des règles, le traitement des événements et le routage des notifications.
## Communauté
Les questions, les rapports de bugs, les améliorations de la documentation et les contributions sont les bienvenus en anglais.
- [GitHub Discussions](https://github.com/ccfos/nightingale/discussions) — posez des questions et partagez des idées.
- [GitHub Issues](https://github.com/ccfos/nightingale/issues) — signalez des bugs et demandez des fonctionnalités. Indiquez la version, la méthode de déploiement et les étapes de reproduction.
- [Slack](https://join.slack.com/t/n9e/shared_invite/zt-480klxytf-P9qm3C1M87kDmRPp_H30Kw) — rejoignez la communauté.
- [Rapports d'adoption](https://github.com/ccfos/nightingale/issues/897) — découvrez comment d'autres utilisent Nightingale et partagez votre propre expérience.
- [Politique de sécurité](https://github.com/ccfos/nightingale/blob/main/SECURITY.md) — signalez les vulnérabilités en privé et consultez le support des versions.
Pour les changements substantiels, ouvrez une issue pour discuter de l'approche avant de soumettre une pull request. Veuillez respecter le [Code de conduite](https://github.com/ccfos/nightingale/blob/main/CODE_OF_CONDUCT.md).
Nightingale a été initialement développé chez DiDi et donné à CCF ODC en 2022. Découvrez la [gouvernance du projet](https://github.com/ccfos/nightingale/blob/main/doc/community-governance.md), les [committers](https://github.com/ccfos/nightingale/blob/main/doc/committers.md) et les [contributeurs](https://github.com/ccfos/nightingale/graphs/contributors).
<a href="https://github.com/ccfos/nightingale/graphs/contributors">
<img alt="Nightingale contributors" src="https://contrib.rocks/image?repo=ccfos/nightingale" />
</a>
## Stargazers au fil du temps
[](https://star-history.dera.page/#ccfos/nightingale&Date)
## Licence
Nightingale est disponible sous la [Apache License 2.0](https://github.com/ccfos/nightingale/blob/main/LICENSE).
<img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=3f539666-22f5-468d-914d-1e344945d3d8" alt="" />
