首页 > 其他分享 >Prometheus + Grafana(八)系统监控之Kafka

Prometheus + Grafana(八)系统监控之Kafka

时间:2022-11-10 18:01:17浏览次数:68  
标签:exporter 系统监控 prometheus kafka Prometheus https Kafka com grafana

前言

第一种:JMX

https://help.aliyun.com/document_detail/141108.html?spm=a2c4g.11186623.6.621.12bb4dea7EyM9F

第二种:kafka_exporter

本文就是采用第二种方式实现,相比JMX,优势在于不需要消耗 JVM资源,指标收集时间从分钟级别降到秒级别,便于大规模集群的监控。

 

技术架构

 

图片引用:https://zhuanlan.zhihu.com/p/57704357

 

安装kafka_exporter

注:1个kafka集群只需要1个exporter,在集群上的任意1台服务器部署。

  • 上传解压

从 https://github.com/danielqsj/kafka_exporter 下载并传kafka_exporter-1.2.0.linux-amd64.tar安装包并解压到/usr/local目录

wget https://github.com/danielqsj/kafka_exporter/releases/download/v1.2.0/kafka_exporter-1.2.0.linux-amd64.tar.gz
tar -xvf kafka_exporter-1.2.0.linux-amd64.tar
cd kafka_exporter-1.2.0.linux-amd64/
  • 配置

使用默认配置

  • 启动

进入根目录下,输入以下命令:

cd /usr/local/kafka_exporter-1.2.0.linux-amd64
nohup ./kafka_exporter --kafka.server=172.16.10.93:9092 &

启动成功后,可以访问 http://172.16.10.93:9308/metrics/ ,(IP和端口要改成相应环境的)

看抓取的信息如下:

 

 

Prometheus配置

  • 配置

修改prometheus组件的prometheus.yml加入kafka监控:

vi /usr/local/prometheus-2.15.1/prometheus.yml

 

  • 启动验证

先kill掉Prometheus进程,用以下命令重启它,然后查看targets:

cd /usr/local/prometheus-2.15.1
nohup ./prometheus --config.file=prometheus.yml &

注:State=UP,说明成功

 

Grafana配置

  • 导入仪表盘模板

通过浏览器访问:http://grafana服务器IP:3000

 添加数据源,选择prometheus,填入prometheus服务器IP端口,点击保存

 导入监控图表

输入7589,光标往下移,如下图

图表数据就出来了

 以上仪表盘导入后再结合自身业务修改过的最终仪表盘:

  • 预警指标

序号

预警名称

预警规则

描述

1

Broker数量预警

当Broker数量达到阈值【<3】时进行预警

 

2

消费延迟预警

当积压的消息数量达到阈值【>1000】时进行预警

 

3

失效副本分区预警

当失效副本分区数量达到阈值【>0】时进行预警

 

 

  • Grafana仪表盘参考:

  1. https://grafana.com/grafana/dashboards/7589 (推介)
  2. https://grafana.com/grafana/dashboards/9018 (参考-新的)
  3. https://grafana.com/grafana/dashboards/9947(参考-新的)
  4. https://grafana.com/grafana/dashboards/10973(JMX-阿里云)
  5. https://www.menina.cn/article/88
  6. https://cloud.tencent.com/developer/news/377416
 

其它

  • 注册系统服务开机自动启动
复制代码
## 准备配置文件
cat <<\EOF >/etc/systemd/system/kafka_exporter.service
[Unit]
Description=Elasticsearch stats exporter for Prometheus
Documentation=Prometheus exporter for various metrics about ElasticSearch, written in Go.

[Service]
ExecStart=/usr/local/kafka_exporter/kafka_exporter --kafka.server=192.168.50.16:9092

[Install]
WantedBy=multi-user.target
EOF


## 启动并设置为开机自动启动
systemctl daemon-reload
systemctl enable kafka_exporter.service
systemctl stop kafka_exporter.service
systemctl start kafka_exporter.service
systemctl status kafka_exporter.service




报警规则:

cat kafka_prometheusRule.yaml 
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  labels:
    prometheus: k8s
    role: alert-rules
  name: kafka-prometheus-rules
  namespace: monitoring
spec:
  groups:
  - name: kafka.rules
    rules:
    - alert: KafkaTopicsReplicas
      expr: sum(kafka_topic_partition_in_sync_replica) by (topic) < 1
      for: 1m
      labels:
        severity: critical
      annotations:
        title: 'Kafka topics replicas less than 3'
        description: "Topic: {{ $labels.topic }} partition less than 3, Current Value: {{ $value }}\n  VALUE = {{ $value }}\n  LABELS: {{ $labels }}"

    - alert: KafkaConsumersGroupLag
      expr: sum(kafka_consumergroup_lag) by (consumergroup) > 50
      for: 1m
      labels:
        severity: critical
      annotations:
        title: 'Kafka consumers group 消费滞后'
        description: "Kafka consumers group 消费滞后 (Lag > 50), Lag值: {{ $value }}\n  VALUE = {{ $value }}\n  LABELS: {{ $labels }}"
        
    - alert: KafkaConsumersTopicLag
      expr: sum(kafka_consumergroup_lag) by (topic) > 50
      for: 1m
      labels:
        severity: critical
      annotations:
        title: 'Kafka Topic 消费滞后'
        description: "Kafka Topic 消费滞后 (Lag > 50), Lag值: {{ $value }}\n  VALUE = {{ $value }}\n  LABELS: {{ $labels }}"

  

标签:exporter,系统监控,prometheus,kafka,Prometheus,https,Kafka,com,grafana
From: https://www.cnblogs.com/weifeng1463/p/16877908.html

相关文章

  • ✍75 Kafka安装及使用
    一.Docker安装https://blog.csdn.net/ch_improve/article/details/1142689151.下载#下载zookeeper镜像dockerpullwurstmeister/zookeeper#下载kafka镜像doc......
  • Kafka问题收集
    Kafka问题收集kafka分区分配策略干趴面试官系列|请你简述一下Kafka中的分区分配生产者发送消息分区分配策略kafka里的partitioner(分区器)来负责客户端生产层面的负......
  • Kafka:Producer异步发送与回调
    ​​pom.xml​​:<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-inst......
  • Kafka Java客户端Stream API
    KafkaStream概念及初识高层架构图KafkaStream是ApacheKafka从0.10版本引入的一个新Feature,它提供了对存储于Kafka内的数据进行流式处理和分析的功能。简而言之,KafkaStre......
  • kafka 客户端之producer API发送消息(自定义负载均衡实现)与负载均衡调用源码分析
    背景:​​kafka客户端之producerAPI发送消息以及简单源码分析​​已经介绍了producer的异步发送和异步回调发送消息的基本使用,但是都是使用内置的负载均衡策略。kafka的负......
  • kafka 客户端之producer API发送消息以及简单源码分析
    背景:我使用docker-compose搭建的kafka服务​kafka的简单介绍以及docker-compose部署单主机Kafka集群​​KafkaAPI简单介绍kafka除了用于管理和管理任务的命令行工具,Kafka......
  • kafka Java客户端之 consumer API 消费消息
    背景:我使用docker-compose搭建的kafka服务​kafka的简单介绍以及docker-compose部署单主机Kafka集群​​使用consumerAPI消费指定Topic里面的消息首先我们需要使用AdminA......
  • Prometheus使用指南
    一、介绍1.基本概念prometheus是一种时间序列的数据库,适合应用于监控以及告警,但是不适合100%的准确计费,因为采集的数据不一定很准确,主要是作为监控以及收集内存、CPU、硬盘......
  • php kafka的使用
    生产者<?php$conf=newRdKafka\Conf();$conf->setDrMsgCb(function($kafka,$message){file_put_contents("./dr_cb.log",var_export($message,true).PHP_EO......
  • Kafka 可观测最佳实践
    概述Kafka是由LinkedIn开发一个分布式的基于发布订阅模式的消息队列,是一个实时数据处理系统,可以横向扩展。与RabbitMQ、RockerMQ等中间件一样拥有几大特点:异步处......