L'opérateur Prometheus fournit le déploiement et la gestion natifs Kubernetes de Prometheus et des composants de surveillance associés. Le but de ce projet est de simplifier et d'automatiser la configuration d'une pile de surveillance basée sur Prometheus pour les clusters Kubernetes.
L'opérateur Prometheus inclut, sans s'y limiter, les fonctionnalités suivantes :
Ressources personnalisées Kubernetes : utilisez les ressources personnalisées Kubernetes pour déployer et gérer Prometheus, Alertmanager et les composants associés.
Configuration de déploiement simplifiée : configurez les principes fondamentaux de Prometheus tels que les versions, la persistance, les politiques de rétention et les réplicas à partir d'une ressource Kubernetes native.
Configuration de la cible Prometheus : générez automatiquement des configurations de cibles de surveillance basées sur des requêtes d'étiquettes Kubernetes familières ; pas besoin d'apprendre un langage de configuration spécifique à Prometheus.
Pour une introduction à Prometheus Operator, consultez le guide de démarrage.
L'opérateur lui-même est considéré comme étant prêt à produire. Veuillez vous référer aux versions de définition de ressource personnalisée (CRD) pour connaître l'état de chaque CRD :
monitoring.coreos.com/v1
: CRD et API stables , les modifications sont apportées de manière rétrocompatible.
monitoring.coreos.com/v1beta1
: CRD et API instables , des changements peuvent survenir mais l'équipe s'efforce de les éviter. Nous encourageons l'utilisation en production pour les utilisateurs qui acceptent le risque de rupture des modifications.
monitoring.coreos.com/v1alpha1
: CRD et API instables , des changements peuvent survenir fréquemment et nous suggérons d'éviter son utilisation dans des environnements critiques.
L'opérateur Prometheus utilise des ressources personnalisées Kubernetes pour simplifier le déploiement et la configuration de Prometheus, d'Alertmanager et des composants de surveillance associés.
kube-prometheus fournit des exemples de configurations pour une pile complète de surveillance de cluster basée sur Prometheus et l'opérateur Prometheus. Cela inclut le déploiement de plusieurs instances Prometheus et Alertmanager, des exportateurs de métriques tels que node_exporter pour collecter les métriques des nœuds, la configuration de la cible de scrape reliant Prometheus à divers points de terminaison de métriques et des exemples de règles d'alerte pour la notification des problèmes potentiels dans le cluster.
Le graphique Helm prometheus-community/kube-prometheus-stack fournit un ensemble de fonctionnalités similaire à kube-prometheus. Ce graphique est maintenu par la communauté Prometheus. Pour plus d'informations, veuillez consulter le fichier Lisez-moi du graphique.
L'opérateur Prometheus nécessite au moins la version Kubernetes 1.16.0
. Si vous débutez avec Prometheus Operator, il est fortement recommandé d’utiliser la dernière version stable.
Une fonctionnalité essentielle de l'opérateur Prometheus consiste à surveiller le serveur API Kubernetes pour détecter les modifications apportées à des objets spécifiques et à garantir que les déploiements Prometheus actuels correspondent à ces objets. L'Opérateur agit sur les Définitions de Ressources Personnalisées (CRD) suivantes :
Prometheus
, qui définit un déploiement Prometheus souhaité.
PrometheusAgent
, qui définit un déploiement Prometheus souhaité, mais exécuté en mode Agent.
Alertmanager
, qui définit un déploiement Alertmanager souhaité.
ThanosRuler
, qui définit le déploiement souhaité de Thanos Ruler.
ServiceMonitor
, qui spécifie de manière déclarative comment les groupes de services Kubernetes doivent être surveillés. L'opérateur génère automatiquement une configuration de scrape Prometheus en fonction de l'état actuel des objets dans le serveur API.
PodMonitor
, qui spécifie de manière déclarative comment un groupe de pods doit être surveillé. L'opérateur génère automatiquement une configuration de scrape Prometheus en fonction de l'état actuel des objets dans le serveur API.
Probe
, qui spécifie de manière déclarative comment les groupes d'entrées ou de cibles statiques doivent être surveillés. L'opérateur génère automatiquement la configuration de scrape Prometheus en fonction de la définition.
ScrapeConfig
, qui spécifie de manière déclarative les configurations de scrape à ajouter à Prometheus. Cette CustomResourceDefinition aide à récupérer les ressources en dehors du cluster Kubernetes.
PrometheusRule
, qui définit un ensemble souhaité de règles d'alerte et/ou d'enregistrement Prometheus. L'opérateur génère un fichier de règles, qui peut être utilisé par les instances Prometheus.
AlertmanagerConfig
, qui spécifie de manière déclarative les sous-sections de la configuration Alertmanager, permettant le routage des alertes vers des récepteurs personnalisés et la définition de règles d'interdiction.
L'opérateur Prometheus détecte automatiquement les modifications apportées au serveur API Kubernetes par rapport à l'un des objets ci-dessus et garantit que les déploiements et les configurations correspondants sont synchronisés.
Pour en savoir plus sur les CRD introduits par l'opérateur Prometheus, consultez la page de conception.
Pour éviter que des règles d'alerte et d'enregistrement Prometheus non valides provoquent des échecs dans une instance Prometheus déployée, un webhook d'admission est fourni pour valider les ressources PrometheusRule
lors de la création ou de la mise à jour initiale.
Pour plus d'informations sur cette fonctionnalité, consultez le guide de l'utilisateur.
Remarque : ce démarrage rapide ne fournit pas une pile de surveillance complète ; si c'est ce que vous recherchez, consultez le projet kube-prometheus. Si vous voulez la pile entière, mais que vous avez déjà appliqué le bundle.yaml
, supprimez d'abord le bundle ( kubectl delete -f bundle.yaml
).
Pour essayer rapidement uniquement l'opérateur Prometheus dans un cluster, choisissez une version et exécutez la commande suivante qui déploie l'opérateur dans l'espace de noms default
:
kubectl créer -f bundle.yaml
Si vous souhaitez déployer l'opérateur Prometheus dans un espace de noms différent, vous avez également besoin de kustomize
:
NAMESPACE=my_namespace kustomize edit set namespace $NAMESPACE && kubectl create -k .
Remarque : assurez-vous d'adapter l'espace de noms dans ClusterRoleBinding si vous déployez dans un espace de noms autre que l'espace de noms par défaut.
Pour exécuter l'opérateur en dehors d'un cluster :
faire scripts/run-external.sh
Pour supprimer l'opérateur et Prometheus, supprimez d'abord toutes les ressources personnalisées que vous avez créées dans chaque espace de noms. L'opérateur arrêtera et supprimera automatiquement les pods Prometheus et Alertmanager, ainsi que les ConfigMaps associés.
for n in $(kubectl get namespaces -o jsonpath={..metadata.name}); faire kubectl delete --all --namespace=$n prometheus,servicemonitor,podmonitor,alertmanagerdone
Après quelques minutes, vous pouvez continuer et supprimer l'opérateur lui-même.
kubectl supprimer -f bundle.yaml
L'opérateur crée automatiquement des services dans chaque espace de noms dans lequel vous avez créé des ressources Prometheus ou Alertmanager et définit trois définitions de ressources personnalisées. Vous pouvez les nettoyer maintenant.
for n in $(kubectl get namespaces -o jsonpath={..metadata.name}); faire kubectl delete --ignore-not-found --namespace=$n service prometheus-operated alertmanager-operateddonekubectl delete --ignore-not-found customresourcedefinitions prometheuses.monitoring.coreos.com servicemonitors.monitoring.coreos.com podmonitors.monitoring.coreos.com alertmanagers.monitoring.coreos.com prometheusrules.monitoring.coreos.com alertmanagerconfigs.monitoring.coreos.com scrapeconfigs.monitoring.coreos.com
Voir TEST
Voir CONTRIBUTION.
Si vous trouvez une vulnérabilité de sécurité liée à l'opérateur Prometheus, veuillez ne pas la signaler en ouvrant un problème GitHub, mais veuillez plutôt envoyer un e-mail aux responsables du projet trouvé dans le fichier MAINTAINERS.md.
Consultez la documentation de dépannage pour connaître les problèmes courants et les questions fréquemment posées (FAQ).
Le logo de l'organisation prometheus-operator a été créé et contribué par Bianca Cheng Costanzo.