Cette rubrique décrit comment déployer l'extension TKG v1.3.1 pour Prometheus. Prometheus est un système et un système de surveillance des services. Il collecte des mesures auprès de cibles configurées à intervalles donnés, évalue les expressions de règle, affiche les résultats et peut déclencher des alertes si certaines conditions sont observées comme vraies. Alertmanager gère les alertes générées par Prometheus et les achemine vers leurs points de terminaison de réception. Déployez l'extension TKG pour Prometheus afin de collecter et d'afficher des mesures pour les clusters Tanzu Kubernetes.
Configuration requise pour l'extension
- Provisionner un cluster. Reportez-vous à la section Workflow de provisionnement de clusters Tanzu Kubernetes à l'aide de TKGS v1alpha2 API.
Note : Pour installer l'extension Prometheus, vous devez déployer un cluster qui utilise le domaine de service par défaut (
cluster.local
). - Connectez-vous au cluster. Reportez-vous à la section Se connecter à un cluster Tanzu Kubernetes en tant qu'utilisateur vCenter Single Sign-On.
- Télécharger le bundle d'extensions TKG 1.3.1 sur l'hôte client sur lequel vous exécutez kubectl.
- Applications requises pour l'installation des extensions TKG sur le cluster Tanzu Kubernetes cible.
Déployer l'extension Prometheus
Conteneur | Type de ressource | Réplicas | Description |
---|---|---|---|
prometheus-alertmanager |
Déploiement | 1 | Gère les alertes envoyées par les applications clientes, telles que le serveur Prometheus. |
prometheus-cadvisor |
DaemonSet | 5 | Analyse et expose les données d'utilisation des ressources et de performances des conteneurs en cours d'exécution. |
prometheus-kube-state-metrics |
Déploiement | 1 | Surveille l'état et la capacité du nœud, la conformité de l'ensemble de réplicas, l'état de l'espace, de la tâche et du croobob, ainsi que les demandes de ressources et les limitations. |
prometheus-node-exporter |
DaemonSet | 5 | Exportateur de mesures matérielles et de système d'exploitation exposées par les noyaux. |
prometheus-pushgateway |
Déploiement | 1 | Service qui vous permet de transférer des mesures à partir de tâches pour lesquelles le scraping est impossible. |
prometheus-server |
Déploiement | 1 | Fournit des fonctionnalités essentielles, notamment le scraping, le traitement des règles et les alertes. |
- Vérifiez que vous avez rempli chacune des conditions préalables de l'extension. Reportez-vous à la section Configuration requise pour l'extension.
- Remplacez le répertoire par celui de l'extension Prometheus.
cd /tkg-extensions-v1.3.1+vmware.1/extensions/monitoring/prometheus
- Créez l'espace de noms
tanzu-system-monitoring
, ainsi que le compte de service et les objets de rôle Prometheus.kubectl apply -f namespace-role.yaml
- Créez un fichier de valeurs de données Prometheus.
L'exemple de fichier de valeurs de données fournit la configuration minimale.
cp prometheus-data-values.yaml.example prometheus-data-values.yaml
- Configurez l'extension Prometheus en mettant à jour
prometheus-data-values.yaml
. Pour obtenir une description des champs et des options, reportez-vous à la section Configurer l'extension Prometheus.Si le cluster n'est pas provisioné avec une classe de stockage persistant par défaut, vous pouvez le spécifier dans le fichier de valeurs de données. Assurez-vous également que l'espace de noms dispose de suffisamment de stockage pour les réclamations de volume persistant.monitoring: prometheus_server: image: repository: projects.registry.vmware.com/tkg/prometheus pvc: storage_class: vwt-storage-policy storage: "8Gi" alertmanager: image: repository: projects.registry.vmware.com/tkg/prometheus pvc: storage_class: vwt-storage-policy storage: "8Gi" ...
- Créez le secret Prometheus à l'aide du fichier
prometheus-data-values
.kubectl create secret generic prometheus-data-values --from-file=values.yaml=prometheus-data-values.yaml -n tanzu-system-monitoring
Le secret
prometheus-data-values
est créé dans l'espace de nomstanzu-system-monitoring
. Effectuez la vérification à l'aide de la commandekubectl get secrets -n tanzu-system-monitoring
. - Déployez l'extension Prometheus.
kubectl apply -f prometheus-extension.yaml
En cas de réussite, l'application Prometheus est créée :
app.kappctrl.k14s.io/prometheus created
. - Vérifiez l'état de l'application Prometheus.
kubectl get app prometheus -n tanzu-system-monitoring
L'état doit passer deReconciling
àReconcile succeeded
. Si l'état estReconcile failed
, reportez-vous à la section Dépannage. - Affichez des informations détaillées sur l’application Prometheus.
kubectl get app prometheus -n tanzu-system-monitoring -o yaml
- Effectuez la vérification des DaemonSets Prometheus.
kubectl get daemonsets -n tanzu-system-monitoring
- Vérifiez les déploiements Prometheus.
kubectl get deployments -n tanzu-system-monitoring
Dépanner le déploiement Prometheus
En cas d'échec du déploiement ou du rapprochement, exécutez kubectl get pods -A
pour afficher l'état des espaces. Dans des conditions normales, les espaces doivent être à l'état Running
. Si l'état est ImagePullBackOff
ou ImageCrashLoopBackOff
, l'image de conteneur n'a pas pu être extraite du registre. Vérifiez l'URL dans les valeurs de données et les fichiers YAML de l'extension, et assurez-vous qu'elles sont correctes.
name-XXXX
est le nom d'espace unique lorsque vous exécutez
kubectl get pods -A
:
kubectl logs pod/prometheus-alertmanager-XXXXX -c prometheus-alertmanager -n tanzu-system-monitoring
kubectl logs pod/prometheus-server-XXXXX -c prometheus-server -n tanzu-system-monitoring
Mettre à jour l'extension Prometheus
Mettez à jour la configuration d'une extension Prometheus qui est déployée sur un cluster Tanzu Kubernetes.
- Obtenez des valeurs de données Prometheus à partir du secret.
kubectl get secret prometheus-data-values -n tanzu-system-monitoring -o 'go-template={{ index .data "values.yaml" }}' | base64 -d > prometheus-data-values.yaml
- Mettez à jour le secret des valeurs de données Prometheus.
kubectl create secret generic prometheus-data-values --from-file=values.yaml=prometheus-data-values.yaml -n tanzu-system-monitoring -o yaml --dry-run | kubectl replace -f-
L'extension Prometheus sera rapprochée des valeurs de données mises à jour.Note : Par défaut, kapp-controller synchronise les applications toutes les 5 minutes. La mise à jour doit prendre effet en 5 minutes ou moins. Si vous souhaitez que la mise à jour prenne effet immédiatement, modifiezsyncPeriod
dansprometheus-extension.yaml
à une valeur inférieure et appliquez l'extension Fluent Bit à l'aide dekubectl apply -f prometheus-extension.yaml
. - Vérifiez l'état de l'extension.
kubectl get app prometheus -n tanzu-system-monitoring
L'état doit être
Reconcile Succeeded
une fois que Prometheus est mise à jour. - Affichez l'état détaillé et résolvez les problèmes.
kubectl get app prometheus -n tanzu-system-monitoring -o yaml
Supprimer l'extension Prometheus
- Remplacez le répertoire par celui de l'extension Prometheus.
cd /extensions/monitoring/prometheus/
- Supprimez l'application Prometheus.
kubectl delete app prometheus -n tanzu-system-monitoring
Résultat attendu :
app.kappctrl.k14s.io "prometheus" deleted
- Vérifiez que l'application Prometheus est supprimée.
kubectl get app prometheus -n tanzu-system-monitoring
Résultat attendu :
apps.kappctrl.k14s.io "prometheus" not found
- Supprimez l'espace de noms
tanzu-system-monitoring
, ainsi que le compte de service et les objets de rôle Prometheus.Avertissement : N’effectuez pas cette étape si Grafana est déployé.kubectl delete -f namespace-role.yaml
- Si vous souhaitez redéployer Prometheus, supprimez le secret
prometheus-data-values
.kubectl delete secret prometheus-data-values -n tanzu-system-monitoring
Résultat attendu :
secret "prometheus-data-values" deleted
Mettre à niveau l'extension Prometheus
- Exportez le configmap Prometheus et enregistrez-le en tant que sauvegarde.
kubectl get configmap prometheus -n tanzu-system-monitoring -o 'go-template={{ index .data "prometheus.yaml" }}' > prometheus-configmap.yaml
- Supprimez le déploiement Prometheus existant. Reportez-vous à la section Supprimer l'extension Prometheus.
- Déployez l'extension Prometheus. Reportez-vous à la section Déployer l'extension Prometheus.
Configurer l'extension Prometheus
/extensions/monitoring/prometheus/prometheus-data-values.yaml
.
Paramètre | Description | Type | Par défaut |
---|---|---|---|
monitoring.namespace | Espace de noms dans lequel Prometheus sera déployé | string | tanzu-system-monitoring |
monitoring.create_namespace | L'indicateur permet de savoir s'il faut créer l'espace de noms spécifié par monitoring.namespace | booléen | false |
monitoring.prometheus_server.config.prometheus_yaml | Détails de la configuration du moniteur de cluster Kubernetes à transmettre à Prometheus | Fichier yaml | prometheus.yaml |
monitoring.prometheus_server.config.alerting_rules_yaml | Règles d'alerte détaillées définies dans Prometheus | Fichier yaml | alerting_rules.yaml |
monitoring.prometheus_server.config.recording_rules_yaml | Règles d'enregistrement détaillées définies dans Prometheus | Fichier yaml | recording_rules.yaml |
monitoring.prometheus_server.service.type | Type de service pour exposer Prometheus. Valeurs prises en charge : ClusterIP | string | ClusterIP |
monitoring.prometheus_server.enable_alerts.kubernetes_api | Activer l'alerte SLO pour l'API Kubernetes dans Prometheus | booléen | true |
monitoring.prometheus_server.sc.aws_type | Type AWS défini pour storageclass sur AWS | string | gp2 |
monitoring.prometheus_server.sc.aws_fsType | Type de système de fichiers AWS défini pour storageclass sur AWS | string | ext4 |
monitoring.prometheus_server.sc.allowVolumeExpansion | Définir si l'extension de volume est autorisée pour storageclass sur AWS | booléen | true |
monitoring.prometheus_server.pvc.annotations | Annotations de classe de stockage | mappage | {} |
monitoring.prometheus_server.pvc.storage_class | Classe de stockage à utiliser pour la réclamation de volume persistant. Par défaut, cette valeur est nulle, et le provisionneur par défaut est utilisé | string | null |
monitoring.prometheus_server.pvc.accessMode | Définissez le mode d'accès pour la réclamation de volume persistant. Valeurs prise en charge : ReadWriteOnce, ReadOnlyMany, ReadWriteMany | string | ReadWriteOnce |
monitoring.prometheus_server.pvc.storage | Définir la taille de stockage pour la réclamation de volume persistant | string | 8Gi |
monitoring.prometheus_server.deployment.replicas | Nombre de réplicas Prometheus | entier | 1 |
monitoring.prometheus_server.image.repository | Emplacement du référentiel avec l'image Prometheus. La valeur par défaut est le registre VMware public. Modifiez cette valeur si vous utilisez un référentiel privé (par exemple, un environnement air-gapped). | string | projects.registry.vmware.com/tkg/prometheus |
monitoring.prometheus_server.image.name | Nom de l'image Prometheus | string | prometheus |
monitoring.prometheus_server.image.tag | Balise d'image Prometheus. Il peut être nécessaire de mettre à jour cette valeur si vous mettez à niveau la version. | string | v2.17.1_vmware.1 |
monitoring.prometheus_server.image.pullPolicy | Stratégie d'extraction d'image Prometheus | string | IfNotPresent |
monitoring.alertmanager.config.slack_demo | Configuration des notifications Slack pour Alertmanager | string | slack_demo: name: slack_demo slack_configs: - api_url: https://hooks.slack.com channel: '#alertmanager-test' |
monitoring.alertmanager.config.email_receiver | Configuration des notifications par e-mail pour Alertmanager | string | email_receiver: name: email-receiver email_configs: - to: [email protected] send_resolved: false from: [email protected] smarthost: smtp.eample.com:25 require_tls: false |
monitoring.alertmanager.service.type | Type de service pour exposer Alertmanager. Valeurs prises en charge : ClusterIP | string | ClusterIP |
monitoring.alertmanager.image.repository | Emplacement du référentiel avec l'image Alertmanager. La valeur par défaut est le registre VMware public. Modifiez cette valeur si vous utilisez un référentiel privé (par exemple, un environnement air-gapped). | string | projects.registry.vmware.com/tkg/prometheus |
monitoring.alertmanager.image.name | Nom de l'image Alertmanager | string | alertmanager |
monitoring.alertmanager.image.tag | Balise d'image Alertmanager. Il peut être nécessaire de mettre à jour cette valeur si vous mettez à niveau la version. | string | v0.20.0_vmware.1 |
monitoring.alertmanager.image.pullPolicy | Stratégie d'extraction d'image Alertmanager | string | IfNotPresent |
monitoring.alertmanager.pvc.annotations | Annotations de classe de stockage | mappage | {} |
monitoring.alertmanager.pvc.storage_class | Classe de stockage à utiliser pour la réclamation de volume persistant. Par défaut, cette valeur est nulle et le provisionneur par défaut est utilisé. | string | null |
monitoring.alertmanager.pvc.accessMode | Définissez le mode d'accès pour la réclamation de volume persistant. Valeurs prise en charge : ReadWriteOnce, ReadOnlyMany, ReadWriteMany | string | ReadWriteOnce |
monitoring.alertmanager.pvc.storage | Définir la taille de stockage pour la réclamation de volume persistant | string | 2Gi |
monitoring.alertmanager.deployment.replicas | Nombre de réplicas Alertmanager | entier | 1 |
monitoring.kube_state_metrics.image.repository | Référentiel contenant l'image kube-state-metrics. La valeur par défaut est le registre VMware public. Modifiez cette valeur si vous utilisez un référentiel privé (par exemple, un environnement air-gapped). | string | projects.registry.vmware.com/tkg/prometheus |
monitoring.kube_state_metrics.image.name | Nom de l'image kube-state-metrics | string | kube-state-metrics |
monitoring.kube_state_metrics.image.tag | Balise d'image kube-state-metrics. Il peut être nécessaire de mettre à jour cette valeur si vous mettez à niveau la version. | string | v1.9.5_vmware.1 |
monitoring.kube_state_metrics.image.pullPolicy | Stratégie d'extraction d'image kube-state-metrics | string | IfNotPresent |
monitoring.kube_state_metrics.deployment.replicas | Nombre de réplicas kube-state-metrics | entier | 1 |
monitoring.node_exporter.image.repository | Référentiel contenant l'image de l'exportateur de nœuds. La valeur par défaut est le registre VMware public. Modifiez cette valeur si vous utilisez un référentiel privé (par exemple, un environnement air-gapped). | string | projects.registry.vmware.com/tkg/prometheus |
monitoring.node_exporter.image.name | Nom de l'image du exportateur de nœuds | string | node-exporter |
monitoring.node_exporter.image.tag | Balise d'image de l'exportateur de nœuds. Il peut être nécessaire de mettre à jour cette valeur si vous mettez à niveau la version. | string | v0.18.1_vmware.1 |
monitoring.node_exporter.image.pullPolicy | Stratégie d'extraction d'image node-exporter | string | IfNotPresent |
monitoring.node_exporter.hostNetwork | Si cette valeur est définie sur hostNetwork: true , l'espace peut utiliser l'espace de noms réseau et les ressources réseau du nœud. |
booléen | false |
monitoring.node_exporter.deployment.replicas | Nombre de réplicas node-exporter | entier | 1 |
monitoring.pushgateway.image.repository | Référentiel contenant l'image pushgateway. La valeur par défaut est le registre VMware public. Modifiez cette valeur si vous utilisez un référentiel privé (par exemple, un environnement air-gapped). | string | projects.registry.vmware.com/tkg/prometheus |
monitoring.pushgateway.image.name | Nom de l'image pushgateway | string | pushgateway |
monitoring.pushgateway.image.tag | Balise d'image pushgateway. Il peut être nécessaire de mettre à jour cette valeur si vous mettez à niveau la version. | string | v1.2.0_vmware.1 |
monitoring.pushgateway.image.pullPolicy | Stratégie d'extraction d'image pushgateway | string | IfNotPresent |
monitoring.pushgateway.deployment.replicas | Nombre de réplicas pushgateway | entier | 1 |
monitoring.cadvisor.image.repository | Référentiel contenant l'image cadvisor. La valeur par défaut est le registre VMware public. Modifiez cette valeur si vous utilisez un référentiel privé (par exemple, un environnement air-gapped). | string | projects.registry.vmware.com/tkg/prometheus |
monitoring.cadvisor.image.name | Nom de l'image cadvisor | string | cadvisor |
monitoring.cadvisor.image.tag | Balise d'image cadvisor. Il peut être nécessaire de mettre à jour cette valeur si vous mettez à niveau la version. | string | v0.36.0_vmware.1 |
monitoring.cadvisor.image.pullPolicy | Stratégie d'extraction d'image cadvisor | string | IfNotPresent |
monitoring.cadvisor.deployment.replicas | Nombre de réplicas cadvisor | entier | 1 |
monitoring.ingress.enabled | Activer/désactiver l'entrée pour Prometheus et Alertmanager | booléen | false Pour utiliser l'entrée, définissez ce champ sur |
monitoring.ingress.virtual_host_fqdn | Nom d'hôte pour accéder à Prometheus et Alertmanager | string | prometheus.system.tanzu |
monitoring.ingress.prometheus_prefix | Préfixe de chemin d'accès pour Prometheus | string | / |
monitoring.ingress.alertmanager_prefix | Préfixe de chemin d'accès pour Alertmanager | string | /alertmanager/ |
monitoring.ingress.tlsCertificate.tls.crt | Certificat facultatif pour entrée si vous souhaitez utiliser votre propre certificat TLS. Un cert auto-signé est généré par défaut | string | Certificat généré |
monitoring.ingress.tlsCertificate.tls.key | Clé privée de certificat facultatif pour entrée si vous souhaitez utiliser votre propre certificat TLS. | string | Clé de certificat généré |
Paramètre | Description | Type | Par défaut |
---|---|---|---|
evaluation_interval | Fréquence d'évaluation des règles | durée | 1 min |
scrape_interval | Fréquence de scraping des cibles | durée | 1 min |
scrape_timeout | Délai d'attente avant expiration d'une demande de scraping | durée | 10 s |
rule_files | Les fichiers de règle spécifient une liste de globs. Les règles et les alertes sont lues à partir de tous les fichiers correspondants | Fichier yaml | |
scrape_configs | Liste des configurations de scraping. | liste | |
job_name | Nom de la tâche attribué aux métriques de scraping par défaut | string | |
kubernetes_sd_configs | Liste des configurations de détection de services Kubernetes. | liste | |
relabel_configs | Liste des configurations de relabel cibles. | liste | |
action | Action à effectuer en fonction de la correspondance regex. | string | |
regex | Expression régulière par rapport à laquelle la valeur extraite est mises en correspondance. | string | |
source_labels | Les étiquettes source sélectionnent des valeurs à partir d'étiquettes existantes. | string | |
scheme | Configure le schéma de protocole utilisé pour les demandes. | string | |
tls_config | Configure les paramètres TLS de la demande de scraping. | string | |
ca_file | Certificat CA avec qui valider le certificat du serveur API. | filename | |
insecure_skip_verify | Désactivez la validation du certificat de serveur. | booléen | |
bearer_token_file | Informations d'authentification facultatives du fichier de jeton de support. | filename | |
replacement | Valeur de remplacement par rapport à laquelle un remplacement regex est effectué si l'expression régulière correspond. | string | |
target_label | Étiquette dans laquelle la valeur résultante est écrite dans une action de remplacement. | string |
Paramètre | Description | Type | Par défaut |
---|---|---|---|
resolve_timeout | « ResolveTimeout » est la valeur par défaut utilisée par Alertmanager si l'alerte n'inclut pas « EndsAt » | durée | 5 min |
smtp_smarthost | Hôte SMTP par lequel les e-mails sont envoyés. | durée | 1 min |
slack_api_url | URL du Webhook Slack. | string | global.slack_api_url |
pagerduty_url | URL pagerduty à laquelle envoyer les demandes d'API. | string | global.pagerduty_url |
modèles | Fichiers à partir desquels les définitions de modèles de notifications personnalisées sont lues | chemin d'accès du fichier | |
group_by | grouper les alertes par étiquette | string | |
group_interval | Définir le temps d'attente avant l'envoi d'une notification concernant les nouvelles alertes ajoutées à un groupe | durée | 5 min |
group_wait | Délai d'attente initiale avant l'envoi d'une notification pour un groupe d'alertes | durée | 30 s |
repeat_interval | Délai d'attente avant de renvoyer une notification si elle a déjà été correctement envoyée pour une alerte | durée | 4 h |
receivers | Liste de récepteurs de notification. | liste | |
severity | Gravité de l'incident. | string | |
channel | Canal ou utilisateur auquel envoyer des notifications. | string | |
html | Corps HTML de la notification par e-mail. | string | |
text | Corps du texte de la notification par e-mail. | string | |
send_resolved | Notifier ou non les alertes résolues. | filename | |
email_configs | Configurations pour l'intégration des e-mails | booléen |
Annotation d'un espace | Description |
---|---|
prometheus.io/scrape |
La configuration par défaut effectuera le scraping de tous les espaces et, si elle est définie sur « false », cette annotation exclura l'espace du processus de scraping. |
prometheus.io/path |
Si le chemin des métriques n'est pas « /metrics », définissez-le avec cette annotation. |
prometheus.io/port |
Effectuez le scraping de l'espace sur le port indiqué au lieu des ports déclarés de l'espace (la cible par défaut est sans port si aucun n'est déclaré). |
apiVersion: apps/v1beta2 # for versions before 1.8.0 use extensions/v1beta1 kind: DaemonSet metadata: name: fluentd-elasticsearch namespace: weave labels: app: fluentd-logging spec: selector: matchLabels: name: fluentd-elasticsearch template: metadata: labels: name: fluentd-elasticsearch annotations: prometheus.io/scrape: 'true' prometheus.io/port: '9102' spec: containers: - name: fluentd-elasticsearch image: gcr.io/google-containers/fluentd-elasticsearch:1.20