prometheus监控Kafka (kafka_exporter和 jmx_exporter)

一、Kafka_exporter 监控 Kafka

1、kafka的安装方法参考:https://blog.csdn.net/u010533742/article/details/136616708

2、kafka_exporter部暑(指定版本为1.7)

mkdir /data/kafka_exporter -p
cat > /data/kafka_exporter/start.sh << 'EOF'
#!/bin/bash
docker rm -f kafka_exporter
cd `dirname $0`

docker run -d \
--name kafka_exporter \
--restart=always \
--network host \
-v /etc/localtime:/etc/localtime:ro \
danielqsj/kafka-exporter:v1.7.0 \
--web.listen-address :9308 \
--sasl.enabled \
--sasl.mechanism plain \
--kafka.server 192.168.11.192:9092 \
--sasl.username=alice \
--sasl.password=alice \
--log.level info \
--web.telemetry-path /metrics 
EOF

kafka_exporter metrics的访问方法
http://192.168.11.192:9308/metrics

3、配置prometheus

#添加自动发现脚本
cat >> /data/prometheus/conf/prometheus.yml << 'EOF'
#kafka自动发现
  - job_name: 'kafka'
    file_sd_configs:
      - files:
        - /etc/prometheus/sd_config/kafka.yaml
        refresh_interval: 5s
    relabel_configs:
      - source_labels: [__address__]
        regex: (.*)
        target_label: instance
        replacement: $1
      - source_labels: [__address__]
        regex: (.*):(.*)
        target_label: ip
        replacement: $1
      - source_labels: [__address__]
        regex: (.*):(.*)
        target_label: __address__
        replacement: $1:9308
EOF
#自动发现配置
cat > /data/prometheus/conf/sd_config/kafka.yaml << 'EOF'
#kafka自动发现
- labels:
    type: kafka
  targets:
  - 192.168.11.192:9092
  - 192.168.11.193:9092
  - 192.168.11.194:9092
EOF

访问 http://192.168.11.221:9090
在这里插入图片描述

4、配置grafana

grafanaid: 7589

在这里插入图片描述

自定义图表,请参考:https://blog.csdn.net/qq_34864753/article/details/103953385

5、警报规则

cat > /data/prometheus/conf/rules/kafka.rules  << 'EOF'
groups:
- name: kafka-监控告警    
  rules:
  - alert: 告警!Kafka Topics 副本数少于3
    expr: sum(kafka_topic_partition_in_sync_replica) by (topic) < 3
    for: 0m
    labels:
      severity: 严重告警
    annotations:
      summary: "{{ $labels.instance }} Kafka topics 副本数少于3"
      description: "Kafka topic 分区不同步\n  当前值 = {{ $value }}"

  - alert: 告警!KafkaConsumersGroup
    expr: sum(kafka_consumergroup_lag) by (consumergroup) > 50
    for: 1m
    labels:
      severity: 严重告警
    annotations:
      summary: "{{ $labels.instance }} Kafka consumers group"
      description: "Kafka consumers group\n  当前值 = {{ $value }}"
EOF

二、 jmx_exporter 监控kafka_kraft

1、下载kakfa_kraft的jmx配置

mkdir /data/kafka/etc -p
cd /data/kafka/etc/
wget https://raw.githubusercontent.com/prometheus/jmx_exporter/main/example_configs/kafka-kraft-3_0_0.yml

2、下载jmx_exporter插件

cd /data/kafka/
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.20.0/jmx_prometheus_javaagent-0.20.0.jar

3、启动kafka,并加载jmx_exporter插件

mkdir /data/kafka/etc -p

cat > /data/kafka/start.sh << 'EOF'
#!/bin/bash
cd `dirname $0`

docker rm -f kafka

docker run -d \
--name kafka \
--restart=always \
--net host \
-e KAFKA_NODE_ID=0 \
-e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.11.100:9092 \
-e KAFKA_HEAP_OPTS="-Xmx512m -Xms512m" \
-e KAFKA_OPTS="-javaagent:/opt/jmx_prometheus_javaagent-0.20.0.jar=9999:/opt/kafka-kraft-3_0_0.yml" \
-e KAFKA_CFG_PROCESS_ROLES=broker,controller \
-e KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER \
-e KAFKA_CFG_SASL_MECHANISM_CONTROLLER_PROTOCOL=PLAIN \
-e KAFKA_CONTROLLER_USER=contr0ller \
-e KAFKA_CONTROLLER_PASSWORD=Contr0ller#XXXX \
-e KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:SASL_PLAINTEXT,CONTROLLER:SASL_PLAINTEXT \
-e KAFKA_CFG_LISTENERS=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093 \
-e KAFKA_ENABLE_KRAFT=yes \
-e KAFKA_KRAFT_CLUSTER_ID="Aqvf7RVETX-DInZbNUXXXX" \
-e KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@192.168.11.100:9093 \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-e KAFKA_TLS_CLIENT_AUTH=none \
-e KAFKA_CFG_SASL_ENABLED_MECHANISMS=PLAIN \
-e KAFKA_CLIENT_LISTENER_NAME=PLAINTEXT \
-e KAFKA_CLIENT_USERS=gohangout \
-e KAFKA_CLIENT_PASSWORDS=Gohangout#XXXX \
-e KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true \
-v `pwd`/etc/sasl_config.properties:/opt/bitnami/kafka/config/sasl_config.properties \
-v `pwd`/etc/kafka-kraft-3_0_0.yml:/opt/kafka-kraft-3_0_0.yml \
-v `pwd`/jmx_prometheus_javaagent-0.20.0.jar:/opt/jmx_prometheus_javaagent-0.20.0.jar \
-v `pwd`/data:/bitnami/kafka/ \
-v /etc/localtime:/etc/localtime \
bitnami/kafka:3.7.0
EOF

bash /data/kafka/start.sh

4、测试插件是否可用

curl http://192.168.11.100:9999/metrics

5、配置prometheus

prometheus.yml

  - job_name: 'kafka-jmx'
    file_sd_configs:
      - files:
        - /etc/prometheus/sd_config/kafka-jmx.yaml
        refresh_interval: 5s
    relabel_configs:
      - source_labels: [__address__]
        regex: (.*)
        target_label: instance
        replacement: $1
      - source_labels: [__address__]
        regex: (.*):(.*)
        target_label: ip
        replacement: $1
      - source_labels: [__address__]
        regex: (.*):(.*)
        target_label: __address__
        replacement: $1:9999

kafka-jmx.yaml

- labels:
    type: kafka-jmx
  targets:
  - 192.168.11.100:9092
  - 192.168.11.101:9092
  - 192.168.11.102:9092

6、下载grafana_dashboard

id: 11962
在这里插入图片描述
id: 18276
在这里插入图片描述

7、rules(jmx_exporter)

cat >kafka_jmx.rules <<'EOF'
groups:
- name: kafka-jmx-监控告警
  rules:
  - alert: 告警!Kafka 复制分区不足
    expr: kafka_server_replicamanager_underreplicatedpartitions > 0
    for: 1m
    labels:
      severity: 严重告警
    annotations:
      description: "{{ $labels.instance }} Kafka 复制分区不足,当前值 = {{ $value }}"

  - alert: 告警!Kafka Controller 大于 1
    expr: sum(kafka_controller_kafkacontroller_activecontrollercount) by (instance,ip) > 1
    for: 1m
    labels:
      severity: 严重告警
    annotations:
      description: "{{ $labels.instance }} Kafka Controller数量,当前值 = {{ $value }}"

  - alert: 告警!Kafka 离线分区数
    expr: kafka_controller_kafkacontroller_offlinepartitionscount > 0
    for: 1m
    labels:
      severity: 严重告警
    annotations:
      description: "{{ $labels.instance }} Kafka 离线分区数,当前值 = {{ $value }}"
EOF
### 回答1: 可以使用Prometheus的Windows Exporter监控Windows批处理脚本,该Exporter会收集服务器上的性能指标,并将其发送到Prometheus服务器,以便Prometheus可以对其进行监控。 ### 回答2: Prometheus是一种开源的监控解决方案,Windows_exporterPrometheus的一个工具,用于监控Windows操作系统的指标。要使用Windows_exporter监控批处理脚本,可以按照以下步骤进行操作: 1. 下载和安装Windows_exporter:访问Windows_exporter的GitHub页面,下载最新的可执行文件。 2. 配置Windows_exporter:在Windows_exporter的安装目录下,创建一个配置文件(如windows_exporter.yml),并配置要监控的批处理脚本的相关信息,例如脚本的路径等。 3. 启动Windows_exporter:使用管理员权限打开命令提示符,并导航到Windows_exporter的安装目录,执行以下命令启动Windows_exporter: ``` windows_exporter.exe --collector.batchfile.path="Path\to\script.bat" --config.windows_exporter.yml ``` 其中,--collector.batchfile.path参数指定要监控的批处理脚本的路径,--config.windows_exporter.yml参数指定配置文件的路径。 4. 配置Prometheus:在Prometheus的配置文件(prometheus.yml)中添加一个新的job,用于抓取Windows_exporter提供的指标。示例如下: ```yaml - job_name: 'windows' static_configs: - targets: ['localhost:9182'] ``` 其中,'localhost:9182'是Windows_exporter默认的监听地址,可根据实际情况进行修改。 5. 重启Prometheus:保存并关闭Prometheus的配置文件,重启Prometheus服务,使其能够加载新的配置。 6. 查看监控指标:访问Prometheus的Web界面,可以通过查询PromQL语句来查看和分析批处理脚本的监控指标。例如,查询批处理脚本执行次数的指标可以使用以下PromQL语句: ``` script_batchfile_total{job="windows"} ``` 通过这些步骤,您可以使用Windows_exporter监控批处理脚本,并通过Prometheus来收集和分析这些监控指标。 ### 回答3: Prometheus是一个开源的监控系统,可以用于监控各种应用、服务和服务器。Windows_exporterPrometheus的一个插件,可以用于监控Windows系统的各种指标。 要使用windows_exporter监控批处理脚本,首先需要在Windows系统上安装和配置Prometheus和windows_exporter。可以到Prometheus官方网站上下载最新版本的Prometheus,并按照文档中的步骤进行安装和配置。 安装好Prometheus后,需要下载并安装windows_exporter。在windows_exporter的GitHub页面上可以找到最新的发布版本。下载后,将windows_exporter解压到一个合适的目录。 接下来,需要创建一个用于监控批处理脚本的配置文件。在Prometheus的配置文件(prometheus.yml)中添加以下内容: ```yaml scrape_configs: - job_name: 'my_batch_scripts' static_configs: - targets: ['localhost:9182'] ``` 其中,job_name可以自定义,targets是windows_exporter的默认监听端口。 保存并关闭配置文件后,需要启动Prometheus和windows_exporter。在命令行中导航到Prometheus的安装目录,执行以下命令启动Prometheus: ``` prometheus.exe --config.file=prometheus.yml ``` 再打开一个新的命令行窗口,导航到windows_exporter的安装目录,执行以下命令启动windows_exporter: ``` windows_exporter.exe ``` 启动后,Prometheus将开始收集和存储windows_exporter提供的所有指标。可以通过Prometheus的Web界面(默认为localhost:9090)查看和查询这些指标。 接下来,可以根据批处理脚本的需要,编写相关的指标规则和警报规则。通过Prometheus的查询语言和警报规则语言,可以实现对批处理脚本的监控和告警。 总结来说,要使用windows_exporter监控批处理脚本,需要安装和配置Prometheus和windows_exporter,创建一个用于批处理脚本的配置文件,启动Prometheus和windows_exporter,并进行指标和警报规则的配置。通过Prometheus的Web界面进行监控和查询。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值