Cette rubrique fournit des informations de référence pour le module Prometheus.
À propos de Prometheus et Altertmanager
Prometheus (https://prometheus.io/) est un système et un système de surveillance des services. Prometheus collecte des mesures à partir de cibles configurées à des intervalles donnés, évalue les expressions de règle et affiche les résultats. Alertmanager est utilisé pour déclencher des alertes si certaines conditions sont observées comme vraies.
Pour installer le module Prometheus :
Composants Prometheus
Le module Prometheus installe sur un cluster TKG les conteneurs répertoriés dans le tableau. Le module extrait les conteneurs du registre public VMware spécifié dans le référentiel de modules.
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. |
Valeurs de données Prometheus
Vous trouverez ci-dessous un exemple de fichier prometheus-data-values.yaml
.
Notez les points suivants :
- L'entrée est activée (ingress: enabled: true).
- L'entrée est configurée pour les URL se terminant par /alertmanager/ (alertmanagerprefix:) et / (prometheus_prefix:).
- Le nom de domaine complet de Prometheus est
prometheus.system.tanzu
(virtual_host_fqdn:). - Fournissez votre propre certificat personnalisé dans la section Entrée (tls.crt, tls.key, ca.crt).
- La PVC pour Alertmanager est de 2 Gio. Fournissez le
storageClassName
pour la stratégie de stockage par défaut. - La PVC pour Prometheus est de 20 Gio. Fournissez le
storageClassName
pour la stratégie de stockage vSphere.
namespace: prometheus-monitoring alertmanager: config: alertmanager_yml: | global: {} receivers: - name: default-receiver templates: - '/etc/alertmanager/templates/*.tmpl' route: group_interval: 5m group_wait: 10s receiver: default-receiver repeat_interval: 3h deployment: replicas: 1 rollingUpdate: maxSurge: 25% maxUnavailable: 25% updateStrategy: Recreate pvc: accessMode: ReadWriteOnce storage: 2Gi storageClassName: default service: port: 80 targetPort: 9093 type: ClusterIP ingress: alertmanager_prefix: /alertmanager/ alertmanagerServicePort: 80 enabled: true prometheus_prefix: / prometheusServicePort: 80 tlsCertificate: ca.crt: | -----BEGIN CERTIFICATE----- MIIFczCCA1ugAwIBAgIQTYJITQ3SZ4BBS9UzXfJIuTANBgkqhkiG9w0BAQsFADBM ... w0oGuTTBfxSMKs767N3G1q5tz0mwFpIqIQtXUSmaJ+9p7IkpWcThLnyYYo1IpWm/ ZHtjzZMQVA== -----END CERTIFICATE----- tls.crt: | -----BEGIN CERTIFICATE----- MIIHxTCCBa2gAwIBAgITIgAAAAQnSpH7QfxTKAAAAAAABDANBgkqhkiG9w0BAQsF ... YYsIjp7/f+Pk1DjzWx8JIAbzItKLucDreAmmDXqk+DrBP9LYqtmjB0n7nSErgK8G sA3kGCJdOkI0kgF10gsinaouG2jVlwNOsw== -----END CERTIFICATE----- tls.key: | -----BEGIN PRIVATE KEY----- MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDOGHT8I12KyQGS ... l1NzswracGQIzo03zk/X3Z6P2YOea4BkZ0Iwh34wOHJnTkfEeSx6y+oSFMcFRthT yfFCZUk/sVCc/C1a4VigczXftUGiRrTR -----END PRIVATE KEY----- virtual_host_fqdn: prometheus.system.tanzu kube_state_metrics: deployment: replicas: 1 service: port: 80 targetPort: 8080 telemetryPort: 81 telemetryTargetPort: 8081 type: ClusterIP node_exporter: daemonset: hostNetwork: false updatestrategy: RollingUpdate service: port: 9100 targetPort: 9100 type: ClusterIP prometheus: pspNames: "vmware-system-restricted" config: alerting_rules_yml: | {} alerts_yml: | {} prometheus_yml: | global: evaluation_interval: 1m scrape_interval: 1m scrape_timeout: 10s rule_files: - /etc/config/alerting_rules.yml - /etc/config/recording_rules.yml - /etc/config/alerts - /etc/config/rules scrape_configs: - job_name: 'prometheus' scrape_interval: 5s static_configs: - targets: ['localhost:9090'] - job_name: 'kube-state-metrics' static_configs: - targets: ['prometheus-kube-state-metrics.prometheus.svc.cluster.local:8080'] - job_name: 'node-exporter' static_configs: - targets: ['prometheus-node-exporter.prometheus.svc.cluster.local:9100'] - job_name: 'kubernetes-pods' kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] action: keep regex: true - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] action: replace target_label: __metrics_path__ regex: (.+) - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] action: replace regex: ([^:]+)(?::\d+)?;(\d+) replacement: $1:$2 target_label: __address__ - action: labelmap regex: __meta_kubernetes_pod_label_(.+) - source_labels: [__meta_kubernetes_namespace] action: replace target_label: kubernetes_namespace - source_labels: [__meta_kubernetes_pod_name] action: replace target_label: kubernetes_pod_name - job_name: kubernetes-nodes-cadvisor kubernetes_sd_configs: - role: node relabel_configs: - action: labelmap regex: __meta_kubernetes_node_label_(.+) - replacement: kubernetes.default.svc:443 target_label: __address__ - regex: (.+) replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor source_labels: - __meta_kubernetes_node_name target_label: __metrics_path__ scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token - job_name: kubernetes-apiservers kubernetes_sd_configs: - role: endpoints relabel_configs: - action: keep regex: default;kubernetes;https source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_service_name - __meta_kubernetes_endpoint_port_name scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token alerting: alertmanagers: - scheme: http static_configs: - targets: - alertmanager.prometheus.svc:80 - kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__meta_kubernetes_namespace] regex: default action: keep - source_labels: [__meta_kubernetes_pod_label_app] regex: prometheus action: keep - source_labels: [__meta_kubernetes_pod_label_component] regex: alertmanager action: keep - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_probe] regex: .* action: keep - source_labels: [__meta_kubernetes_pod_container_port_number] regex: action: drop recording_rules_yml: | groups: - name: kube-apiserver.rules interval: 3m rules: - expr: |2 ( ( sum(rate(apiserver_request_duration_seconds_count{job="kubernetes-apiservers",verb=~"LIST|GET"}[1d])) - ( ( sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[1d])) or vector(0) ) + sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="namespace",le="0.5"}[1d])) + sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="cluster",le="5"}[1d])) ) ) + # errors sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"LIST|GET",code=~"5.."}[1d])) ) / sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"LIST|GET"}[1d])) labels: verb: read record: apiserver_request:burnrate1d - expr: |2 ( ( # too slow sum(rate(apiserver_request_duration_seconds_count{job="kubernetes-apiservers",verb=~"LIST|GET"}[1h])) - ( ( sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[1h])) or vector(0) ) + sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="namespace",le="0.5"}[1h])) + sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="cluster",le="5"}[1h])) ) ) + # errors sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"LIST|GET",code=~"5.."}[1h])) ) / sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"LIST|GET"}[1h])) labels: verb: read record: apiserver_request:burnrate1h - expr: |2 ( ( # too slow sum(rate(apiserver_request_duration_seconds_count{job="kubernetes-apiservers",verb=~"LIST|GET"}[2h])) - ( ( sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[2h])) or vector(0) ) + sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="namespace",le="0.5"}[2h])) + sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="cluster",le="5"}[2h])) ) ) + # errors sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"LIST|GET",code=~"5.."}[2h])) ) / sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"LIST|GET"}[2h])) labels: verb: read record: apiserver_request:burnrate2h - expr: |2 ( ( # too slow sum(rate(apiserver_request_duration_seconds_count{job="kubernetes-apiservers",verb=~"LIST|GET"}[30m])) - ( ( sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[30m])) or vector(0) ) + sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="namespace",le="0.5"}[30m])) + sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="cluster",le="5"}[30m])) ) ) + # errors sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"LIST|GET",code=~"5.."}[30m])) ) / sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"LIST|GET"}[30m])) labels: verb: read record: apiserver_request:burnrate30m - expr: |2 ( ( # too slow sum(rate(apiserver_request_duration_seconds_count{job="kubernetes-apiservers",verb=~"LIST|GET"}[3d])) - ( ( sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[3d])) or vector(0) ) + sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="namespace",le="0.5"}[3d])) + sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="cluster",le="5"}[3d])) ) ) + # errors sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"LIST|GET",code=~"5.."}[3d])) ) / sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"LIST|GET"}[3d])) labels: verb: read record: apiserver_request:burnrate3d - expr: |2 ( ( # too slow sum(rate(apiserver_request_duration_seconds_count{job="kubernetes-apiservers",verb=~"LIST|GET"}[5m])) - ( ( sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[5m])) or vector(0) ) + sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="namespace",le="0.5"}[5m])) + sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="cluster",le="5"}[5m])) ) ) + # errors sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"LIST|GET",code=~"5.."}[5m])) ) / sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"LIST|GET"}[5m])) labels: verb: read record: apiserver_request:burnrate5m - expr: |2 ( ( # too slow sum(rate(apiserver_request_duration_seconds_count{job="kubernetes-apiservers",verb=~"LIST|GET"}[6h])) - ( ( sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[6h])) or vector(0) ) + sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="namespace",le="0.5"}[6h])) + sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="cluster",le="5"}[6h])) ) ) + # errors sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"LIST|GET",code=~"5.."}[6h])) ) / sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"LIST|GET"}[6h])) labels: verb: read record: apiserver_request:burnrate6h - expr: |2 ( ( # too slow sum(rate(apiserver_request_duration_seconds_count{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[1d])) - sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE",le="1"}[1d])) ) + sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1d])) ) / sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[1d])) labels: verb: write record: apiserver_request:burnrate1d - expr: |2 ( ( # too slow sum(rate(apiserver_request_duration_seconds_count{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[1h])) - sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE",le="1"}[1h])) ) + sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1h])) ) / sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[1h])) labels: verb: write record: apiserver_request:burnrate1h - expr: |2 ( ( # too slow sum(rate(apiserver_request_duration_seconds_count{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[2h])) - sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE",le="1"}[2h])) ) + sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[2h])) ) / sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[2h])) labels: verb: write record: apiserver_request:burnrate2h - expr: |2 ( ( # too slow sum(rate(apiserver_request_duration_seconds_count{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[30m])) - sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE",le="1"}[30m])) ) + sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[30m])) ) / sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[30m])) labels: verb: write record: apiserver_request:burnrate30m - expr: |2 ( ( # too slow sum(rate(apiserver_request_duration_seconds_count{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[3d])) - sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE",le="1"}[3d])) ) + sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[3d])) ) / sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[3d])) labels: verb: write record: apiserver_request:burnrate3d - expr: |2 ( ( # too slow sum(rate(apiserver_request_duration_seconds_count{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[5m])) - sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE",le="1"}[5m])) ) + sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[5m])) ) / sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[5m])) labels: verb: write record: apiserver_request:burnrate5m - expr: |2 ( ( # too slow sum(rate(apiserver_request_duration_seconds_count{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[6h])) - sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE",le="1"}[6h])) ) + sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[6h])) ) / sum(rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[6h])) labels: verb: write record: apiserver_request:burnrate6h - expr: | sum by (code,resource) (rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"LIST|GET"}[5m])) labels: verb: read record: code_resource:apiserver_request_total:rate5m - expr: | sum by (code,resource) (rate(apiserver_request_total{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[5m])) labels: verb: write record: code_resource:apiserver_request_total:rate5m - expr: | histogram_quantile(0.99, sum by (le, resource) (rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET"}[5m]))) > 0 labels: quantile: "0.99" verb: read record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile - expr: | histogram_quantile(0.99, sum by (le, resource) (rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"POST|PUT|PATCH|DELETE"}[5m]))) > 0 labels: quantile: "0.99" verb: write record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile - expr: |2 sum(rate(apiserver_request_duration_seconds_sum{subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod) / sum(rate(apiserver_request_duration_seconds_count{subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod) record: cluster:apiserver_request_duration_seconds:mean5m - expr: | histogram_quantile(0.99, sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod)) labels: quantile: "0.99" record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile - expr: | histogram_quantile(0.9, sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod)) labels: quantile: "0.9" record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile - expr: | histogram_quantile(0.5, sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod)) labels: quantile: "0.5" record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile - interval: 3m name: kube-apiserver-availability.rules rules: - expr: |2 1 - ( ( # write too slow sum(increase(apiserver_request_duration_seconds_count{verb=~"POST|PUT|PATCH|DELETE"}[30d])) - sum(increase(apiserver_request_duration_seconds_bucket{verb=~"POST|PUT|PATCH|DELETE",le="1"}[30d])) ) + ( # read too slow sum(increase(apiserver_request_duration_seconds_count{verb=~"LIST|GET"}[30d])) - ( ( sum(increase(apiserver_request_duration_seconds_bucket{verb=~"LIST|GET",scope=~"resource|",le="0.1"}[30d])) or vector(0) ) + sum(increase(apiserver_request_duration_seconds_bucket{verb=~"LIST|GET",scope="namespace",le="0.5"}[30d])) + sum(increase(apiserver_request_duration_seconds_bucket{verb=~"LIST|GET",scope="cluster",le="5"}[30d])) ) ) + # errors sum(code:apiserver_request_total:increase30d{code=~"5.."} or vector(0)) ) / sum(code:apiserver_request_total:increase30d) labels: verb: all record: apiserver_request:availability30d - expr: |2 1 - ( sum(increase(apiserver_request_duration_seconds_count{job="kubernetes-apiservers",verb=~"LIST|GET"}[30d])) - ( # too slow ( sum(increase(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[30d])) or vector(0) ) + sum(increase(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="namespace",le="0.5"}[30d])) + sum(increase(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers",verb=~"LIST|GET",scope="cluster",le="5"}[30d])) ) + # errors sum(code:apiserver_request_total:increase30d{verb="read",code=~"5.."} or vector(0)) ) / sum(code:apiserver_request_total:increase30d{verb="read"}) labels: verb: read record: apiserver_request:availability30d - expr: |2 1 - ( ( # too slow sum(increase(apiserver_request_duration_seconds_count{verb=~"POST|PUT|PATCH|DELETE"}[30d])) - sum(increase(apiserver_request_duration_seconds_bucket{verb=~"POST|PUT|PATCH|DELETE",le="1"}[30d])) ) + # errors sum(code:apiserver_request_total:increase30d{verb="write",code=~"5.."} or vector(0)) ) / sum(code:apiserver_request_total:increase30d{verb="write"}) labels: verb: write record: apiserver_request:availability30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="LIST",code=~"2.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="GET",code=~"2.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="POST",code=~"2.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="PUT",code=~"2.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="PATCH",code=~"2.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="DELETE",code=~"2.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="LIST",code=~"3.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="GET",code=~"3.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="POST",code=~"3.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="PUT",code=~"3.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="PATCH",code=~"3.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="DELETE",code=~"3.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="LIST",code=~"4.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="GET",code=~"4.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="POST",code=~"4.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="PUT",code=~"4.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="PATCH",code=~"4.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="DELETE",code=~"4.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="LIST",code=~"5.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="GET",code=~"5.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="POST",code=~"5.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="PUT",code=~"5.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="PATCH",code=~"5.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code, verb) (increase(apiserver_request_total{job="kubernetes-apiservers",verb="DELETE",code=~"5.."}[30d])) record: code_verb:apiserver_request_total:increase30d - expr: | sum by (code) (code_verb:apiserver_request_total:increase30d{verb=~"LIST|GET"}) labels: verb: read record: code:apiserver_request_total:increase30d - expr: | sum by (code) (code_verb:apiserver_request_total:increase30d{verb=~"POST|PUT|PATCH|DELETE"}) labels: verb: write record: code:apiserver_request_total:increase30d rules_yml: | {} deployment: configmapReload: containers: args: - --volume-dir=/etc/config - --webhook-url=http://127.0.0.1:9090/-/reload containers: args: - --storage.tsdb.retention.time=42d - --config.file=/etc/config/prometheus.yml - --storage.tsdb.path=/data - --web.console.libraries=/etc/prometheus/console_libraries - --web.console.templates=/etc/prometheus/consoles - --web.enable-lifecycle replicas: 1 rollingUpdate: maxSurge: 25% maxUnavailable: 25% updateStrategy: Recreate pvc: accessMode: ReadWriteOnce storage: 20Gi storageClassName: default service: port: 80 targetPort: 9090 type: ClusterIP pushgateway: deployment: replicas: 1 service: port: 9091 targetPort: 9091 type: ClusterIP
Configuration Prometheus
La configuration Prometheus est définie dans le fichier
prometheus-data-values.yaml
. Le tableau répertorie et décrit les paramètres disponibles.
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 |
Les annotations sur les espaces permettent un contrôle précis du processus de scraping. Ces annotations doivent faire partie des métadonnées de l'groupe. Elles n'auront aucun effet si elles sont définies sur d'autres objets, tels que Services ou DaemonSets.
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é). |
Le manifeste DaemonSet ci-dessous demandera à Prometheus d'effectuer le scraping de tous ses espaces sur le port 9102.
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