当前位置: 首页 > news >正文

Grafana Prometheus 通过JMX监控kafka 【2023最新方式】

第三方kafka exporter方案

目前网上关于使用Prometheus 监控kafka的大部分资料都是使用一个第三方的
kafka exporter,他的原理大概就是启动一个kafka客户端,获取kafka服务器的信息,然后提供一些metric接口供Prometheus使用,随意它能展示的监控信息比较有限,只有每个主题的分区数,每秒/分钟消息数,消费组的lag数。但是kafka本身的JMX有提供500+的监控信息可以进行监控,当然不是说这这么监控指标都很重要,相比kafka exporter直接使用JMX可监控的选项会更多。
在这里插入图片描述

Prometheus官方方案

Prometheus官方提供的jmx_exporter可以将JMX转换为Prometheus Metrics格式。

Prometheus JMX exporter使用方式选择

jmx_exporter提供两种用法:

  • 一种是启动独立的进程。JVM 启动时指定参数,暴露 JMX 的 RMI 接口,JMX_Exporter 调用 RMI 获取 JVM 运行时状态数据,转换为 Prometheus metrics 格式,并暴露端口让 Prometheus 采集。
  • 一种是JVM进程内启动,通过java agent的形式运行,进程内读取 JVM 运行时状态数据,转换为 Prometheus metrics 格式,并暴露端口让 Prometheus 采集。官方比较推荐使用这种方式。

使用JMX exporter监控kafka

在kafka-server-start.sh最上面添加下面的代码:

export KAFKA_OPTS="-javaagent:/opt/kafka_2.11-1.1.0/bin/jmx_prometheus_javaagent-0.19.0.jar=9990:/opt/kafka_2.11-1.1.0/bin/kafka-jmx.yml"

jmx_exporter官网下载最新的jmx_prometheus_javaagent-0.19.0.jar包。

kafka-jmx.yml

lowercaseOutputName: truerules:
# Special cases and very specific rules
- pattern : kafka.server<type=(.+), name=(.+), clientId=(.+), topic=(.+), partition=(.*)><>Valuename: kafka_server_$1_$2type: GAUGElabels:clientId: "$3"topic: "$4"partition: "$5"
- pattern : kafka.server<type=(.+), name=(.+), clientId=(.+), brokerHost=(.+), brokerPort=(.+)><>Valuename: kafka_server_$1_$2type: GAUGElabels:clientId: "$3"broker: "$4:$5"
- pattern : kafka.coordinator.(\w+)<type=(.+), name=(.+)><>Valuename: kafka_coordinator_$1_$2_$3type: GAUGE# Generic per-second counters with 0-2 key/value pairs
- pattern: kafka.(\w+)<type=(.+), name=(.+)PerSec\w*, (.+)=(.+), (.+)=(.+)><>Countname: kafka_$1_$2_$3_totaltype: COUNTERlabels:"$4": "$5""$6": "$7"
- pattern: kafka.(\w+)<type=(.+), name=(.+)PerSec\w*, (.+)=(.+)><>Countname: kafka_$1_$2_$3_totaltype: COUNTERlabels:"$4": "$5"
- pattern: kafka.(\w+)<type=(.+), name=(.+)PerSec\w*><>Countname: kafka_$1_$2_$3_totaltype: COUNTER- pattern: kafka.server<type=(.+), client-id=(.+)><>([a-z-]+)name: kafka_server_quota_$3type: GAUGElabels:resource: "$1"clientId: "$2"- pattern: kafka.server<type=(.+), user=(.+), client-id=(.+)><>([a-z-]+)name: kafka_server_quota_$4type: GAUGElabels:resource: "$1"user: "$2"clientId: "$3"# Generic gauges with 0-2 key/value pairs
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+), (.+)=(.+)><>Valuename: kafka_$1_$2_$3type: GAUGElabels:"$4": "$5""$6": "$7"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+)><>Valuename: kafka_$1_$2_$3type: GAUGElabels:"$4": "$5"
- pattern: kafka.(\w+)<type=(.+), name=(.+)><>Valuename: kafka_$1_$2_$3type: GAUGE# Emulate Prometheus 'Summary' metrics for the exported 'Histogram's.
#
# Note that these are missing the '_sum' metric!
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+), (.+)=(.+)><>Countname: kafka_$1_$2_$3_counttype: COUNTERlabels:"$4": "$5""$6": "$7"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.*), (.+)=(.+)><>(\d+)thPercentilename: kafka_$1_$2_$3type: GAUGElabels:"$4": "$5""$6": "$7"quantile: "0.$8"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+)><>Countname: kafka_$1_$2_$3_counttype: COUNTERlabels:"$4": "$5"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.*)><>(\d+)thPercentilename: kafka_$1_$2_$3type: GAUGElabels:"$4": "$5"quantile: "0.$6"
- pattern: kafka.(\w+)<type=(.+), name=(.+)><>Countname: kafka_$1_$2_$3_counttype: COUNTER
- pattern: kafka.(\w+)<type=(.+), name=(.+)><>(\d+)thPercentilename: kafka_$1_$2_$3type: GAUGElabels:quantile: "0.$4"	

配置好kafka-server-start.sh后还需要重启kafka。

Prometheus配置

在Prometheus的prometheus.yml添加如下内容。注意端口号为KAFKA_OPTS配置的端口。

- job_name: "kafka_jmx"metrics_path: /metricsstatic_configs:- targets: ['192.168.249.1:9990','192.168.249.2:9990','192.168.249.3:9990']

配置完成后重新加载Prometheus配置文件就可以了。

grafana 配置

通过上面配置后,可以在grafan中找到对应的面板直接来用。

https://grafana.com/grafana/dashboards/18276-kafka-dashboard/

效果

效果

相关文章:

Grafana Prometheus 通过JMX监控kafka 【2023最新方式】

第三方kafka exporter方案 目前网上关于使用Prometheus 监控kafka的大部分资料都是使用一个第三方的 kafka exporter&#xff0c;他的原理大概就是启动一个kafka客户端&#xff0c;获取kafka服务器的信息&#xff0c;然后提供一些metric接口供Prometheus使用&#xff0c;随意它…...

发布游戏,进行打包。(Unity)

做到这里&#xff0c;我们的项目基本功能已经完成了&#xff0c;如果你还想使项目功能更加完善&#xff0c;可以自己思考如何补充&#xff0c;充分发挥并进行优化使效果达到更加美好。 首先呢&#xff0c;我们这里是说打包Window电脑游戏&#xff0c;我们直接点击菜单栏文件-&…...

我的C++待办事项

2023年8月17日 内存管理部分 学习智能指针 写一篇关于怎么在Linux中安装和使用vclgrind的博客&#xff08;2023年8月17日下午完成&#xff09; 拍一个关于在Linux中安装和使用vclgrind的视频 在Windows上怎么检测内存泄漏 怎么使用Address Sanitizer 在Linux上如何使用gc…...

浙大数据结构第七周之Saving James Bond - Hard Version

题目详情&#xff1a; This time let us consider the situation in the movie "Live and Let Die" in which James Bond, the worlds most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of a lake f…...

线程同步条件变量

为何要线程同步 在线程互斥中外面解决了多线程访问共享资源所会造成的问题。 这篇文章主要是解决当多线程互斥后引发的新的问题&#xff1a;线程饥饿的问题。 什么是线程饥饿&#xff1f;互斥导致了多线程对临界区访问只能改变为串行&#xff0c;这样访问临界资源的代码只能…...

jeecgboot-vue3 查询区 label 文字居左实现

以系统管理中的系统角色界面为例 操作步骤 1. 通过路由或者工具找到当前代码所在的文件 src/views/system/role/index.vue 2. 找到 useListPage 调用&#xff0c;fromConfig 对象加入 labelWidth 和 rowProps 属性 formConfig: {labelWidth: 65, // 设置所有的label宽rowPr…...

CentOS系统环境搭建(五)——Centos7安装maven

centos系统环境搭建专栏&#x1f517;点击跳转 Centos7安装maven 下载压缩包 maven下载官网 解压 压缩包放置到/usr/local tar -xvf apache-maven-3.9.2-bin.tar.gz配置环境变量 vim /etc/profile在最下面追加 MAVEN_HOME/usr/local/apache-maven-3.9.2 export PATH${MAV…...

.eslintrc配置

ESLint 标准规则 /*** AlloyTeam ESLint 规则** 包含所有 ESLint 规则* 使用 babel-eslint 作为解析器** fixable 表示此配置支持 --fix* off 表示此配置被关闭了&#xff0c;并且后面说明了关闭的原因*/module.exports {parser: babel-eslint,parserOptions: {ecmaVersion: 2…...

LangChain手记 Models,Prompts and Parsers

整理并翻译自DeepLearning.AILangChain的官方课程&#xff1a;Models,Prompts and Parsers&#xff08;源码可见&#xff09; 模型&#xff0c;提示词和解析器&#xff08;Models, Prompts and Parsers&#xff09; 模型&#xff1a;大语言模型提示词&#xff1a;构建传递给模…...

Cannot resolve plugin ... maven插件和依赖无法下载解决方法

将 maven/conf/settings.xml 配置文件中的mirror修改成如下即可 <?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"…...

【skynet】skynet 服务间通信

写在前面 skynet 服务之间有自己的一套高效通信 API 。本文给出简单的示例。 文章目录 写在前面准备工作编写代码运行结果 准备工作 首先要有一个编译好&#xff0c;而且工作正常的 skynet 。 编写代码 在 skynet/example 目录编写一个配置文件&#xff0c;两个代码文件。 …...

Flink的Standalone部署实战

在Flink是通用的框架&#xff0c;以混合和匹配的方式支持部署不同场景&#xff0c;而Standalone单机部署方便快速部署&#xff0c;记录本地部署过程&#xff0c;方便备查。 环境要求 1&#xff09;JDK1.8及以上 2&#xff09;flink-1.14.3 3&#xff09;CentOS7 Flink相关信…...

open cv学习 (一)像素的操作

open cv 入门 像素的操作 demo1 import cv2 import os import numpy as np# 1、读取图像 # imread()方法# 设置图像的路径 Path "./img.png" # 设置读取颜色类型默认是1代表彩色图 0 代表灰度图 # 彩色图 flag 1 # 灰度图 #flag 0# 读取图像&#xff0c;返回值…...

基于C#的消息处理的应用程序 - 开源研究系列文章

今天讲讲基于C#里的基于消息处理的应用程序的一个例子。 我们知道&#xff0c;Windows操作系统的程序是基于消息处理的。也就是说&#xff0c;程序接收到消息代码定义&#xff0c;然后根据消息代码定义去处理对应的操作。前面有一个博文例子( C#程序的启动显示方案(无窗口进程发…...

C语言刷题指南(一)

&#x1f4d9;作者简介&#xff1a; 清水加冰&#xff0c;目前大二在读&#xff0c;正在学习C/C、Python、操作系统、数据库等。 &#x1f4d8;相关专栏&#xff1a;C语言初阶、C语言进阶、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &am…...

VMware虚拟机Ubuntu无法连接网络的解决方法

一、解决办法 网络适配器设置 终端依次执行下面命令即可 sudo nmcli networking off sudo nmcli networking onsudo service network-manager start #或者 sudo service NetworkManager start成功出现这个图标&#xff0c;即代表网络连接成功。...

基于CentOS 7 部署社区版Haproxy

HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的一个开源软件&#xff0c;是一款具 备高并发(一万以上)、高性能的TCP和HTTP负载均衡器&#xff0c;支持基于cookie的持久性&#xff0c;自动故障切换&#xff0c;支 持正则表达式及web状态统计。 目录 1…...

Git和GitHub

文章目录 1.Git介绍2. 常用命令3. Git分支操作4. Git团队协作机制5. GitHub操作6. IDEA集成Git7.IDEA操作GitHub8. Gitee 1.Git介绍 Git免费的开源的分布式版本控制系统&#xff0c;可以快速高效从小到大的各种项目 Git易于学习&#xff0c;占地面积小&#xff0c;性能快。它…...

spring入门基本介绍及注入方式---详细介绍

一&#xff0c;spring的简介 Spring是一个开源框架&#xff0c;它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。 提供了许多功能强大且易于使用的特性&#xff0c;使得开发者能够更加轻松地构建可维护且可扩展的应用程序&#xff0c;简单来说: Spring使用基…...

神经网络基础-神经网络补充概念-24-随机初始化

由来 在神经网络的训练过程中&#xff0c;权重和偏差的初始值对模型的性能和训练过程的收敛速度都有影响。随机初始化是一种常用的权重和偏差初始值设置方法&#xff0c;它有助于打破对称性&#xff0c;避免网络陷入局部最优解。 概念 当所有权重和偏差都被设置为相同的初始…...

OpenClaw插件系统:让AI能力无限扩展

前言 前面入我们已经掌握了OpenClaw的基本用法&#xff1a;安装部署、飞书接入、人设配置、Skill扩展。 但如果你想让OpenClaw接入更多平台、集成更多能力怎么办&#xff1f; 答案是&#xff1a;插件系统。 插件是OpenClaw的核心扩展机制。通过插件&#xff0c;你可以&…...

构建智能投资决策中枢:TradingAgents-CN多维度金融分析框架实战指南

构建智能投资决策中枢&#xff1a;TradingAgents-CN多维度金融分析框架实战指南 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 破解投资决策困境…...

Java突变测试终极指南:Pitest如何提升你的代码质量

Java突变测试终极指南&#xff1a;Pitest如何提升你的代码质量 【免费下载链接】pitest State of the art mutation testing system for the JVM 项目地址: https://gitcode.com/gh_mirrors/pi/pitest 突变测试是Java开发中革命性的质量保障技术&#xff0c;而Pitest&am…...

OpenClaw+GLM-4.7-Flash:个人旅行计划自动生成与优化

OpenClawGLM-4.7-Flash&#xff1a;个人旅行计划自动生成与优化 1. 为什么需要AI旅行助手&#xff1f; 去年夏天&#xff0c;我计划带家人去云南旅行时&#xff0c;花了整整三个晚上对比机票价格、筛选酒店、计算景点间的交通时间。当我在凌晨两点盯着Excel表格里混乱的日期和…...

计算机毕业设计:懂车帝车质网汽车数据分析平台 Django框架 Scrapy爬虫 可视化 车辆 懂车帝大数据 数据分析 机器学习(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ > &#x1f345;想要获取完整文章或者源码&#xff0c;或者代做&#xff0c;拉到文章底部即可与…...

3步颠覆直播保存方式:抖音直播下载神器让精彩内容永久留存

3步颠覆直播保存方式&#xff1a;抖音直播下载神器让精彩内容永久留存 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾经为错过心仪主播的直播而惋惜&#xff1f;是否遇到过想要保存的直播内容在结束…...

从零开始深度学习:PyTorch 2.8镜像环境配置与验证教程

从零开始深度学习&#xff1a;PyTorch 2.8镜像环境配置与验证教程 1. 为什么选择PyTorch 2.8镜像&#xff1f; 深度学习环境配置一直是让开发者头疼的问题&#xff0c;特别是当需要GPU加速时&#xff0c;PyTorch版本、CUDA工具包、显卡驱动之间的兼容性问题常常让人望而却步。…...

手把手教你用FastBlur打造高级感UI:从对话框背景到沉浸式音乐播放器的完整实现

用FastBlur打造高级UI的实战指南&#xff1a;从对话框到音乐播放器的设计进化 毛玻璃效果早已从iOS的视觉语言演变为现代移动应用设计的通用元素。这种半透明模糊效果不仅能提升界面层次感&#xff0c;还能在不分散用户注意力的情况下创造视觉焦点。本文将带你深入Android平台实…...

如何通过FCEUX实现NES游戏的完美模拟?超实用指南

如何通过FCEUX实现NES游戏的完美模拟&#xff1f;超实用指南 【免费下载链接】fceux FCEUX, a NES Emulator 项目地址: https://gitcode.com/gh_mirrors/fc/fceux 5个步骤3个技巧&#xff0c;让你快速掌握NES模拟器 核心价值&#xff1a;重温和探索经典游戏的最佳选择 …...

提升效率:用快马一键生成网络应用用户认证api模块

最近在开发一个网络应用时&#xff0c;遇到了用户认证模块的重复开发问题。每次新建项目都要从头写注册登录逻辑&#xff0c;不仅耗时还容易出错。后来发现了InsCode(快马)平台的智能生成功能&#xff0c;帮我快速解决了这个问题。 用户认证模块的核心需求 网络应用中&#xff…...