kubernetes 部署prometheus笔记 (二)

时间:2025-05-13 07:07:06
  • apiVersion: v1
  • kind: ConfigMap
  • metadata:
  • name: prometheus-server-conf
  • labels:
  • name: prometheus-server-conf
  • namespace: kube-system
  • data:
  • : |-
  • global:
  • scrape_interval: 30s
  • evaluation_interval: 30s
  • # A scrape configuration for running Prometheus on a Kubernetes cluster.
  • # This uses separate scrape configs for cluster components (. API server, node)
  • # and services to allow each to use different authentication configs.
  • #
  • # Kubernetes labels will be added as Prometheus labels on metrics via the
  • # `labelmap` relabeling action.
  • #
  • # If you are using Kubernetes 1.7.2 or earlier, please take note of the comments
  • # for the kubernetes-cadvisor job; you will need to edit or remove this job.
  • # Scrape config for API servers.
  • #
  • # Kubernetes exposes API servers as endpoints to the default/kubernetes
  • # service so this uses `endpoints` role and uses relabelling to only keep
  • # the endpoints associated with the default/kubernetes service using the
  • # default named port `https`. This works for single API server deployments as
  • # well as HA API server deployments.
  • scrape_configs:
  • - job_name: "prometheus"
  • static_configs:
  • - targets: ['localhost:9090']
  • - job_name: 'kubernetes-apiservers'
  • kubernetes_sd_configs:
  • - role: endpoints
  • # Default to scraping over https. If required, just disable this or change to
  • # `http`.
  • scheme: https
  • # This TLS & bearer token file config is used to connect to the actual scrape
  • # endpoints for cluster components. This is separate to discovery auth
  • # configuration because discovery & scraping are two separate concerns in
  • # Prometheus. The discovery auth config is automatic if Prometheus runs inside
  • # the cluster. Otherwise, more config options have to be provided within the
  • # <kubernetes_sd_config>.
  • tls_config:
  • ca_file: /var/run/secrets//serviceaccount/
  • # If your node certificates are self-signed or use a different CA to the
  • # master CA, then disable certificate verification below. Note that
  • # certificate verification is an integral part of a secure infrastructure
  • # so this should only be disabled in a controlled environment. You can
  • # disable certificate verification by uncommenting the line below.
  • #
  • # insecure_skip_verify: true
  • bearer_token_file: /var/run/secrets//serviceaccount/token
  • # Keep only the default/kubernetes service endpoints for the https port. This
  • # will add targets for each API server which Kubernetes adds an endpoint to
  • # the default/kubernetes service.
  • relabel_configs:
  • - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
  • action: keep
  • regex: default;kubernetes;https
  • # Scrape config for nodes (kubelet).
  • #
  • # Rather than connecting directly to the node, the scrape is proxied though the
  • # Kubernetes apiserver. This means it will work if Prometheus is running out of
  • # cluster, or can't connect to nodes for some other reason (. because of
  • # firewalling).
  • - job_name: 'kubernetes-nodes'
  • # Default to scraping over https. If required, just disable this or change to
  • # `http`.
  • scheme: https
  • # This TLS & bearer token file config is used to connect to the actual scrape
  • # endpoints for cluster components. This is separate to discovery auth
  • # configuration because discovery & scraping are two separate concerns in
  • # Prometheus. The discovery auth config is automatic if Prometheus runs inside
  • # the cluster. Otherwise, more config options have to be provided within the
  • # <kubernetes_sd_config>.
  • tls_config:
  • ca_file: /var/run/secrets//serviceaccount/
  • bearer_token_file: /var/run/secrets//serviceaccount/token
  • kubernetes_sd_configs:
  • - role: node
  • relabel_configs:
  • - action: labelmap
  • regex: __meta_kubernetes_node_label_(.+)
  • - target_label: __address__
  • replacement: :443
  • - source_labels: [__meta_kubernetes_node_name]
  • regex: (.+)
  • target_label: __metrics_path__
  • replacement: /api/v1/nodes/${1}/proxy/metrics
  • # Scrape config for Kubelet cAdvisor.
  • #
  • # This is required for Kubernetes 1.7.3 and later, where cAdvisor metrics
  • # (those whose names begin with 'container_') have been removed from the
  • # Kubelet metrics endpoint. This job scrapes the cAdvisor endpoint to
  • # retrieve those metrics.
  • #
  • # In Kubernetes 1.7.0-1.7.2, these metrics are only exposed on the cAdvisor
  • # HTTP endpoint; use "replacement: /api/v1/nodes/${1}:4194/proxy/metrics"
  • # in that case (and ensure cAdvisor's HTTP server hasn't been disabled with
  • # the --cadvisor-port=0 Kubelet flag).
  • #
  • # This job is not necessary and should be removed in Kubernetes 1.6 and
  • # earlier versions, or it will cause the metrics to be scraped twice.
  • - job_name: 'kubernetes-cadvisor'
  • # Default to scraping over https. If required, just disable this or change to
  • # `http`.
  • scheme: https
  • # This TLS & bearer token file config is used to connect to the actual scrape
  • # endpoints for cluster components. This is separate to discovery auth
  • # configuration because discovery & scraping are two separate concerns in
  • # Prometheus. The discovery auth config is automatic if Prometheus runs inside
  • # the cluster. Otherwise, more config options have to be provided within the
  • # <kubernetes_sd_config>.
  • tls_config:
  • ca_file: /var/run/secrets//serviceaccount/
  • bearer_token_file: /var/run/secrets//serviceaccount/token
  • kubernetes_sd_configs:
  • - role: node
  • relabel_configs:
  • - action: labelmap
  • regex: __meta_kubernetes_node_label_(.+)
  • - target_label: __address__
  • replacement: :443
  • - source_labels: [__meta_kubernetes_node_name]
  • regex: (.+)
  • target_label: __metrics_path__
  • replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
  • # Scrape config for service endpoints.
  • #
  • # The relabeling allows the actual service scrape endpoint to be configured
  • # via the following annotations:
  • #
  • # * `/scrape`: Only scrape services that have a value of `true`
  • # * `/scheme`: If the metrics endpoint is secured then you will need
  • # to set this to `https` & most likely set the `tls_config` of the scrape config.
  • # * `/path`: If the metrics path is not `/metrics` override this.
  • # * `/port`: If the metrics are exposed on a different port to the
  • # service then set this appropriately.
  • - job_name: 'kubernetes-service-endpoints'
  • kubernetes_sd_configs:
  • - role: endpoints
  • relabel_configs:
  • - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
  • action: keep
  • regex: true
  • - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
  • action: replace
  • target_label: __scheme__
  • regex: (https?)
  • - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
  • action: replace
  • target_label: __metrics_path__
  • regex: (.+)
  • - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
  • action: replace
  • target_label: __address__
  • regex: ([^:]+)(?::\d+)?;(\d+)
  • replacement: $1:$2
  • - action: labelmap
  • regex: __meta_kubernetes_service_label_(.+)
  • - source_labels: [__meta_kubernetes_namespace]
  • action: replace
  • target_label: kubernetes_namespace
  • - source_labels: [__meta_kubernetes_service_name]
  • action: replace
  • target_label: kubernetes_name
  • # Example scrape config for probing services via the Blackbox Exporter.
  • #
  • # The relabeling allows the actual service scrape endpoint to be configured
  • # via the following annotations:
  • #
  • # * `/probe`: Only probe services that have a value of `true`
  • - job_name: 'kubernetes-services'
  • metrics_path: /probe
  • params:
  • module: [http_2xx]
  • kubernetes_sd_configs:
  • - role: service
  • relabel_configs:
  • - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_probe]
  • action: keep
  • regex: true
  • - source_labels: [__address__]
  • target_label: __param_target
  • - target_label: __address__
  • replacement: :9115
  • - source_labels: [__param_target]
  • target_label: instance
  • - action: labelmap
  • regex: __meta_kubernetes_service_label_(.+)
  • - source_labels: [__meta_kubernetes_namespace]
  • target_label: kubernetes_namespace
  • - source_labels: [__meta_kubernetes_service_name]
  • target_label: kubernetes_name
  • # Example scrape config for probing ingresses via the Blackbox Exporter.
  • #
  • # The relabeling allows the actual ingress scrape endpoint to be configured
  • # via the following annotations:
  • #
  • # * `/probe`: Only probe services that have a value of `true`
  • - job_name: 'kubernetes-ingresses'
  • metrics_path: /probe
  • params:
  • module: [http_2xx]
  • kubernetes_sd_configs:
  • - role: ingress
  • relabel_configs:
  • - source_labels: [__meta_kubernetes_ingress_annotation_prometheus_io_probe]
  • action: keep
  • regex: true
  • - source_labels: [__meta_kubernetes_ingress_scheme,__address__,__meta_kubernetes_ingress_path]
  • regex: (.+);(.+);(.+)
  • replacement: ${1}://${2}${3}
  • target_label: __param_target
  • - target_label: __address__
  • replacement: :9115
  • - source_labels: [__param_target]
  • target_label: instance
  • - action: labelmap
  • regex: __meta_kubernetes_ingress_label_(.+)
  • - source_labels: [__meta_kubernetes_namespace]
  • target_label: kubernetes_namespace
  • - source_labels: [__meta_kubernetes_ingress_name]
  • target_label: kubernetes_name
  • # Example scrape config for pods
  • #
  • # The relabeling allows the actual pod scrape endpoint to be configured via the
  • # following annotations:
  • #
  • # * `/scrape`: Only scrape pods that have a value of `true`
  • # * `/path`: If the metrics path is not `/metrics` override this.
  • # * `/port`: Scrape the pod on the indicated port instead of the
  • # pod's declared ports (default is a port-free target if none are declared).
  • - 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
  • scrape_interval: 10s
  • scrape_timeout: 10s
  • scheme: https # remove if you want to scrape metrics on insecure port
  • tls_config:
  • ca_file: /var/run/secrets//serviceaccount/
  • bearer_token_file: /var/run/secrets//serviceaccount/token
  • kubernetes_sd_configs:
  • - role: node
  • relabel_configs:
  • - action: labelmap
  • regex: __meta_kubernetes_node_label_(.+)
  • # Only for Kubernetes ^1.7.3.
  • # See: /prometheus/prometheus/issues/2916
  • - target_label: __address__
  • replacement: :443
  • - source_labels: [__meta_kubernetes_node_name]
  • regex: (.+)
  • target_label: __metrics_path__
  • replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
  • metric_relabel_configs:
  • - action: replace
  • source_labels: [id]
  • regex: '^/machine\.slice/machine-rkt\\x2d([^\\]+)\\.+/([^/]+)\.service$'
  • target_label: rkt_container_name
  • replacement: '${2}-${1}'
  • - action: replace
  • source_labels: [id]
  • regex: '^/system\.slice/(.+)\.service$'
  • target_label: systemd_service_name
  • replacement: '${1}'