kubernetes prometheus抓取pod内的metrics
来源:原创
时间:2021-04-21
作者:脚本小站
分类:云原生
通用方式:
prometheus提供了 kubernetes_sd_config 自动发现功能,可以抓取kubernetes集群内的各种metrics指标,node、service、pod、endpoints、ingress官方文档如下:
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config
一、在prometheus中添加如下配置:如果安装的是prometheus-operator或其他集成好的插件下面的配置默认是有的。
- job_name: kubernetes-pods scrape_interval: 1m scrape_timeout: 10s metrics_path: /metrics scheme: http kubernetes_sd_configs: - api_server: null role: pod namespaces: names: [] relabel_configs: - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] separator: ; regex: "true" replacement: $1 action: keep - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] separator: ; regex: (.+) target_label: __metrics_path__ replacement: $1 action: replace - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] separator: ; regex: ([^:]+)(?::\d+)?;(\d+) target_label: __address__ replacement: $1:$2 action: replace - separator: ; regex: __meta_kubernetes_pod_label_(.+) replacement: $1 action: labelmap - source_labels: [__meta_kubernetes_namespace] separator: ; regex: (.*) target_label: kubernetes_namespace replacement: $1 action: replace - source_labels: [__meta_kubernetes_pod_name] separator: ; regex: (.*) target_label: kubernetes_pod_name replacement: $1 action: replace
二、自动发现规则配置好后如何让prometheus抓取pod内的metrics指标呢,抓取的路径端口等信息如何指定呢,这就要在deployments中的spec.template.metadata.annotations中指定了。示例如下:
apiVersion: apps/v1 kind: Deployment metadata: labels: app: test name: test namespace: default spec: replicas: 1 selector: matchLabels: app: test template: metadata: annotations: prometheus.io/path: /metrics # 定义路径 prometheus.io/port: "80" # 定义端口 prometheus.io/scheme: http # 使用的协议 prometheus.io/scrape: "true" # 是否抓取 labels: app: test spec: containers: - image: zhuqiyang/php7.2:0.2 imagePullPolicy: IfNotPresent name: test
定义好后prometheus即可抓取pod内的metrics指标数据了,在prometheus的targets页面即可看到job名称为 kubernetes-pods的target。
springboot开发的java应用:
可使用 eureka_sd_config 自动发现抓取pod的metrics指标,可以使用如下prometheus的配置来获取指标数据。
- job_name: 'kubernetes-pods-eureka' metrics_path: /actuator/prometheus basic_auth: username: 'user' password: '123456' eureka_sd_configs: - server: 'http://eureka.default.svc.cluster.local/eureka' relabel_configs: - source_labels: - __meta_eureka_app_name separator: ; regex: (.*) target_label: appname replacement: $1 action: replace - action: labelmap regex: __meta_eureka_app_instance_(.+) - regex: metadata_user_(.+) action: labeldrop
配置好后即可在targets页面看到target。