zoukankan      html  css  js  c++  java
  • Prometheus监控k8s中使用exporter的服务

    一、监控使用exporter暴露metrics信息的服务

      对于一些应用如:kafka、redis或者mysql等,其需要使用exporter来暴露本身的metrics信息。这些服务的监控,可以使用prometheus operator中的servicemonitor来匹配该服务的exporter的service,达到采集metrics的目的。

      现对kafka进行数据采集和监控

      kafka_exporter地址:https://github.com/danielqsj/kafka_exporter

      安装kafka_exporter

      kafka-exporter.yaml 

    apiVersion: v1
    kind: Service
    metadata:
      name: kafka-exporter
      namespace: monitoring
      labels:
        k8s-app: kafka-exporter
    spec:
      selector:
        k8s-app: kafka-exporter
      ports:
      - name: kafka-exporter
        port: 9308
        protocol: TCP
      type: ClusterIP
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: kafka-exporter
      namespace: monitoring
      labels:
        k8s-app: kafka-exporter
    spec:
      replicas: 1
      selector:
        matchLabels:
          k8s-app: kafka-exporter
      template:
        metadata:
          labels:
            k8s-app: kafka-exporter
        spec:
          containers:
          - name: kafka-exporter
            image: danielqsj/kafka-exporter:latest
            imagePullPolicy: IfNotPresent
            args: ["--kafka.server=kafka-0.kafka-headless.public-service:9092"]
            resources:
              requests:
                memory: 100M
            volumeMounts:
            - name: tz-config
              mountPath: /etc/localtime
              readOnly: true
          nodeSelector:
            monitor: "true"
          volumes:
            - name: tz-config
              hostPath:
                path: /usr/share/zoneinfo/Asia/Shanghai
    • 创建了kafka_exporter的service和deployment,service用于和Prometheus servicemonitor进行匹配,采集数据
    • args:Kafka_exporter启动参数,为k8s集群中kafka的地址

    查看

    # kubectl get svc,deploy -n monitoring -l k8s-app=kafka-exporter
    NAME                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
    service/kafka-exporter   ClusterIP   10.98.228.115   <none>        9308/TCP   50m
    
    NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/kafka-exporter   1/1     1            1           49m

    测试

    # curl 10.98.228.115:9308/metrics | more
    
    
    # TYPE go_gc_duration_seconds summary
    1086k  go_gc_duration_seconds{quantile="0"} 7.7719e-05
     go_gc_duration_seconds{quantile="0.25"} 0.00010556
      go_gc_duration_seconds{quantile="0.5"} 0.0001406
     0 go_gc_duration_seconds{quantile="0.75"} 0.00019177
    --go_gc_duration_seconds{quantile="1"} 0.001047939
    :-go_gc_duration_seconds_sum 0.004194563
    -:go_gc_duration_seconds_count 21
    --# HELP go_goroutines Number of goroutines that currently exist.
     -# TYPE go_goroutines gauge
    -go_goroutines 11
    ...
    • kafka中有topic时,exporter才能采集更多的数据

    二、配置servicemonitor

      prometheus-serviceMonitorKafka.yaml

    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      labels:
        k8s-app: kafka-exporter
      name: kafka-exporter
      namespace: monitoring
    spec:
      endpoints:
      - interval: 30s
        port: kafka-exporter
        scheme: http
        tlsConfig:
          insecureSkipVerify: false
      jobLabel: k8s-app
      namespaceSelector:
        matchNames:
        - monitoring
      selector:
        matchLabels:
          k8s-app: kafka-exporter
    • 该servicemonitor匹配的是 monitoring这个namespace下,label为k8s-app=kafka-exporter这个service

    查看Prometheus

  • 相关阅读:
    Java 9 揭秘(9. 打破模块封装)
    Java 9 揭秘(8. JDK 9重大改变)
    好书分享 ——《深度工作》
    Java 9 揭秘(7. 创建自定义运行时映像)
    Java 9 揭秘(6. 封装模块)
    如何更好地管理你的精力,时间和专注力实现最佳表现
    这是您一直期待的所有iOS 11功能的屏幕截图
    我为什么不敢也不想写自己的经验和想法?
    无聊? 现在你知道为什么了!
    Java 9 揭秘(5. 实现服务)
  • 原文地址:https://www.cnblogs.com/bigberg/p/14010534.html
Copyright © 2011-2022 走看看