123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- ---
- kind: ConfigMap
- apiVersion: v1
- metadata:
- labels:
- app: prometheus
- name: prometheus-config
- namespace: monitoring
- data:
- prometheus.yml: |
- # A scrape configuration for running Prometheus on a Kubernetes cluster.
- # This uses separate scrape configs for cluster components (i.e. 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.
- global:
- scrape_interval: 15s
- scrape_timeout: 10s
- evaluation_interval: 1m
- scrape_configs:
- - 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/kubernetes.io/serviceaccount/ca.crt
- # 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/kubernetes.io/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 (e.g. 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/kubernetes.io/serviceaccount/ca.crt
- bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- kubernetes_sd_configs:
- - role: node
- relabel_configs:
- - action: labelmap
- regex: __meta_kubernetes_node_label_(.+)
- - target_label: __address__
- replacement: kubernetes.default.svc: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/kubernetes.io/serviceaccount/ca.crt
- bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- kubernetes_sd_configs:
- - role: node
- relabel_configs:
- - action: labelmap
- regex: __meta_kubernetes_node_label_(.+)
- - target_label: __address__
- replacement: kubernetes.default.svc: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:
- #
- # * `prometheus.io/scrape`: Only scrape services that have a value of `true`
- # * `prometheus.io/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.
- # * `prometheus.io/path`: If the metrics path is not `/metrics` override this.
- # * `prometheus.io/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 pods
- #
- # The relabeling allows the actual pod scrape endpoint to be configured via the
- # following annotations:
- #
- # * `prometheus.io/scrape`: Only scrape pods that have a value of `true`
- # * `prometheus.io/path`: If the metrics path is not `/metrics` override this.
- # * `prometheus.io/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'
- # if you want to use metrics on jobs, set the below field to
- # true to prevent Prometheus from setting the `job` label
- # automatically.
- honor_labels: false
- kubernetes_sd_configs:
- - role: pod
- # skip verification so you can do HTTPS to pods
- tls_config:
- insecure_skip_verify: true
- # make sure your labels are in order
- relabel_configs:
- # these labels tell Prometheus to automatically attach source
- # pod and namespace information to each collected sample, so
- # that they'll be exposed in the custom metrics API automatically.
- - source_labels: [__meta_kubernetes_namespace]
- action: replace
- target_label: namespace
- - source_labels: [__meta_kubernetes_pod_name]
- action: replace
- target_label: pod
- # these labels tell Prometheus to look for
- # prometheus.io/{scrape,path,port} annotations to configure
- # how to scrape
- - 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__
- - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scheme]
- action: replace
- target_label: __scheme__
- regex: (.+)
|