当前位置:   article > 正文

Kafka JMX指标&消费者积压等监控体系构建

kafka jmx指标

针对于非kerberos环境非SSL环境的kafka version 0.11&2.5,其他版本有略微差异,没有大的改变

一、kafka部署时添加

将下面的jar包跟yaml配置文件都放在kafka的bin目录下

1、jmx_prometheus_javaagent-0.15.0.jar下载

这个jar包是prometheus 提供的 jmx_exporter ,作用是来收集 kafka 暴露的jmx指标。
jar包可以与下面的yaml文件进行配合,从而自己修改指标名称大小写、name等格式的转换(看自己需求)

我自己kafka集群是2.5版本
用的是jmx_prometheus_javaagent-0.15.0.jar版本

2、kafka.yaml下载

在这里插入图片描述
他有很多技术组件的jmx指标配置文件

我自己kafka集群是2.5版本,对kafka-2_0_0.yml进行了些改造
我的配置文件kafka.yaml
如下

lowercaseOutputName: true
rules:
# Special cases and very specific rules
- pattern : kafka.server<type=(.+), name=(.+), clientId=(.+), topic=(.+), partition=(.*)><>Value
  name: kafka_server_$1_$2
  type: GAUGE
  labels:
    clientId: "$3"
    topic: "$4"
    partition: "$5"
- pattern : kafka.server<type=(.+), name=(.+), clientId=(.+), brokerHost=(.+), brokerPort=(.+)><>Value
  name: kafka_server_$1_$2
  type: GAUGE
  labels:
    clientId: "$3"
    broker: "$4:$5"

- pattern : kafka.server<type=KafkaRequestHandlerPool, name=RequestHandlerAvgIdlePercent><>OneMinuteRate
  name: kafka_server_kafkarequesthandlerpool_requesthandleravgidlepercent_total
  type: GAUGE

- pattern : kafka.server<type=socket-server-metrics, clientSoftwareName=(.+), clientSoftwareVersion=(.+), listener=(.+), networkProcessor=(.+)><>connections
  name: kafka_server_socketservermetrics_connections
  type: GAUGE
  labels:
    client_software_name: "$1"
    client_software_version: "$2"
    listener: "$3"
    network_processor: "$4"

- pattern : 'kafka.server<type=socket-server-metrics, listener=(.+), networkProcessor=(.+)><>(.+):'
  name: kafka_server_socketservermetrics_$3
  type: GAUGE
  labels:
    listener: "$1"
    network_processor: "$2"

# Count and Value
- pattern: kafka.(.*)<type=(.+), name=(.+), (.+)=(.+), (.+)=(.+)><>(Count|Value)
  name: kafka_$1_$2_$3
  labels:
    "$4": "$5"
    "$6": "$7"
- pattern: kafka.(.*)<type=(.+), name=(.+), (.+)=(.+)><>(Count|Value)
  name: kafka_$1_$2_$3
  labels:
    "$4": "$5"
- pattern: kafka.(.*)<type=(.+), name=(.+)><>(Count|Value)
  name: kafka_$1_$2_$3

# Percentile
- pattern: kafka.(.*)<type=(.+), name=(.+), (.+)=(.*), (.+)=(.+)><>(\d+)thPercentile
  name: kafka_$1_$2_$3
  type: GAUGE
  labels:
    "$4": "$5"
    "$6": "$7"
    quantile: "0.$8"
- pattern: kafka.(.*)<type=(.+), name=(.+), (.+)=(.*)><>(\d+)thPercentile
  name: kafka_$1_$2_$3
  type: GAUGE
  labels:
    "$4": "$5"
    quantile: "0.$6"
- pattern: kafka.(.*)<type=(.+), name=(.+)><>(\d+)thPercentile
  name: kafka_$1_$2_$3
  type: GAUGE
  labels:
    quantile: "0.$4"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69

3、放到bin目录下

将上面的jar包跟yaml配置文件都放在kafka的bin目录下
放到其他路径下也行,相应的底下启动配置时要写对路径

二、修改kafka启动脚本

配合kafka启动脚本,修改 bin/kafka_server_start.sh,添加常量,只需要在一个broker实例中添加即可,我这边在集群里每一个broker实例都做了步骤一的操作,并修改了kafka启动脚本

 export JMX_PORT="9999"
 export KAFKA_OPTS="-javaagent:$base_dir/jmx_prometheus_javaagent-0.15.0.jar=9991:$base_dir/kafka.yaml"

  • 1
  • 2
  • 3

注意如果步骤一中你下载的jar跟配置文件不在bin下,则要修改KAFKA_OPTS中对应的路径

在这里插入图片描述
9991为当前broker通过jar跟yaml暴露出来的jmx指标端口

三、验证broker是否暴露jmx成功

curl http://broker_1:9991/jmx | head -n 10
curl http://broker_2:9991/jmx | head -n 10
curl http://broker_3:9991/jmx | head -n 10
是否能够返回jmx指标

四、部署消费者积压等指标

步骤一二三中,我们其实发现无法通过jmx指标获取到每个主题所有的消费者Lag积压情况

我们需要引入kafka_exporter进行暴露这个指标以及主题&消费者其他指标详情

1、下载kafka_exporter

https://github.com/danielqsj/kafka_exporter/releases

在release版本中下载自己需要的版本
我使用的是kafka_exporter-1.2.0.linux-amd64版本
听说这个东西好像有支持kerberos环境kafka的版本,没验证过
在这里插入图片描述

2、部署机器

随便一台可以访问kafka集群的物理机
注意:只需要一台机器即可(集群内外都可以)
我这边用的是主机名为exporter_host的物理机
解压进入文件后,我这边加了很多start脚本,每一个脚本对应一个kafka集群,每一个脚本暴露一个端口,到时候在用Prometheus进行收集这些端口暴露的集群指标
在这里插入图片描述

cat start_test.sh

nohup ./kafka_exporter --kafka.server=broker_1:9092 --kafka.version=2.5.0 --log.level=info > kafka_exporter_test.log  --web.listen-address=:9307 &
  • 1
  • 2
  • 3

3、验证kafka_exporter是否启动成功

curl http://exporter_host:9307/metrics | head -n 10
是否能够返回metrics指标

五、指标用Prometheus收集

部署Prometheus&alertManager

自行百度,物理机部署以及k8s部署都行
如果需要依据Prometheus的rules文件来进行告警的话也可以部署alertManager
我这边是alertManager+prometheus上了云,比较方便,干净又卫生

1、Prometheus配置文件

1.1、prometheus.yml

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

rule_files:
  - /etc/prometheus/rules.yml
alerting:
  alertmanagers:
  - static_configs:
    - targets: ["localhost:9093"]
scrape_configs:
  
  - job_name: 'kafka_exporter-dev'
    static_configs:
      - targets: ['exporter_host:9307']
  - job_name: 'kafka'
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
    - targets: ['broker_1:9991',
                'broker_2:9991', 
                'broker_3:9991']
      labels:
        env: "dev"
        group: "kafka-CDMP-dev"
        cluster_name: "kafka-CDMP-dev"
        namespace: "kafka-CDMP-dev"
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

1.2、rules.yml

如果有告警需求可以咨询我

六、Grafana展示

以上五步骤,把kafka的jmx以及exporter都暴露出来了
我们就可以选择各种各样的dashboard进行grafana展示了

1、jmx的dashBoard

confluent公司里面的挺多,可以参考用

白嫖真香哈,我用的dashboard是将confluent公司的kafka-overview.json魔改了的(也弄了份apache hadoop jmx的dashboard,因为市面上都是HDP或者CDH发行版指标的dashboard,与apache暴露的指标还是不一样)

1.1、展示

在这里插入图片描述

2、kafka_exporter的dashBoard

https://grafana.com/grafana/dashboards/7589

2.1、展示

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/670588
推荐阅读
相关标签
  

闽ICP备14008679号