k8s-prometheus 数据采集(node redis kubelet等)

apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
  namespace: kube-ops
data:
  prometheus.yml: |
    global:
      scrape_interval: 20s
      scrape_timeout: 20s
    scrape_configs:
    - job_name: 'prometheus'
      static_configs:
      - targets: ['localhost:9090']
    - job_name: traefik
      static_configs:
        - targets: ['traefik-ingress-service.kube-system.svc.cluster.local:8080']
    - job_name: redis
      static_configs:
        - targets: ['redis:9121']
    - job_name: 'kubernetes-nodes'
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - source_labels: [__address__]
        regex: '(.*):10250'
        replacement: '${1}:9100'
        target_label: __address__
        action: replace
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
    - job_name: 'kubelet'
      scheme: https
      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

下面是解释每个字段意思:

- job_name: 'kubelet'
  # 通过https访问apiserver,通过apiserver的api获取数据
  scheme: https
  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
          
  #以k8s的角色(role)来定义收集,比如node,service,pod,endpoints,ingress等等 
  kubernetes_sd_configs:
  # 从k8s的node对象获取数据
  - role: node
  relabel_configs:
  # 用新的前缀代替原label name前缀,没有replacement的话功能就是去掉label_name前缀
  # 例如:以下两句的功能就是将__meta_kubernetes_node_label_kubernetes_io_hostname
  # 变为kubernetes_io_hostname
  - action: labelmap
    regex: __meta_kubernetes_node_label_(.+)
  # replacement中的值将会覆盖target_label中指定的label name的值,
  # 即__address__的值会被替换为kubernetes.default.svc:443
  - target_label: __address__
    replacement: kubernetes.default.svc:443
    #replacement: 10.142.21.21:6443
  # 获取__meta_kubernetes_node_name的值
  - source_labels: [__meta_kubernetes_node_name]
    #匹配一个或多个任意字符,将上述source_labels的值生成变量
    regex: (.+)
    # 将# replacement中的值将会覆盖target_label中指定的label name的值,
    # 即__metrics_path__的值会被替换为/api/v1/nodes/${1}/proxy/metrics,
    # 其中${1}的值会被替换为__meta_kubernetes_node_name的值
    target_label: __metrics_path__
    replacement: /api/v1/nodes/${1}/proxy/metrics
  #or:
  #- source_labels: [__address__]
  #  regex: '(.*):10250'
  #  replacement: '${1}:4194'
  #  target_label: __address__
  #- source_labels: [__meta_kubernetes_node_label_role]
  #  action: replace
  #  target_label: role
原文地址:https://www.cnblogs.com/fuyuteng/p/11168853.html