首页 > 其他分享 >使用Grafana + jmx 监控 kafka3.5 的过程

使用Grafana + jmx 监控 kafka3.5 的过程

时间:2023-10-20 16:55:05浏览次数:55  
标签:jmx name kafka3.5 pattern labels kafka GAUGE Grafana type

使用Grafana + jmx 监控 kafka3.5 的过程


摘要

周五一边进行数据库监控, 同时想着部署一套监控系统.
能够监控一下kafka等中间件
结果不想自己遇到了很多坑. 
下午有同事语音告诉自己一些排查问题的方式与方法.
自己又多花了半个小时才将数据捞出来.
感觉自己对很多工具的使用还是不够体系, 需要加强学习.
但是还是需要多学习和多记录的

StudyFrom

https://blog.csdn.net/LCBUSHIHAHA/article/details/132216491
https://grafana.com/grafana/dashboards/18276-kafka-dashboard/

需要注意的是 两者其实是一套机制.
问题的原因其实在于 3.5的kafka可能是与这个文档存在兼容性问题的. 

部署方式

注意 我这边kafka的安装目录是 /usr/kafka 所以后面脚本比较简洁
下载jmx的文件到 /usr/kafka的目录下面

jmx_prometheus_javaagent-0.19.0.jar
然后创建一个配置文件 /usr/kafka/config.yaml 

还需要修改一下启动文件
我这边的就是 /usr/kafka/bin/kafka-server-start.sh 
可以在文件的最前面增加上:
export KAFKA_OPTS=-javaagent:/usr/kafka/jmx_prometheus_javaagent-0.19.0.jar=19092:/usr/kafka/config.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.coordinator.(\w+)<type=(.+), name=(.+)><>Value
  name: kafka_coordinator_$1_$2_$3
  type: GAUGE

# Generic per-second counters with 0-2 key/value pairs
- pattern: kafka.(\w+)<type=(.+), name=(.+)PerSec\w*, (.+)=(.+), (.+)=(.+)><>Count
  name: kafka_$1_$2_$3_total
  type: COUNTER
  labels:
    "$4": "$5"
    "$6": "$7"
- pattern: kafka.(\w+)<type=(.+), name=(.+)PerSec\w*, (.+)=(.+)><>Count
  name: kafka_$1_$2_$3_total
  type: COUNTER
  labels:
    "$4": "$5"
- pattern: kafka.(\w+)<type=(.+), name=(.+)PerSec\w*><>Count
  name: kafka_$1_$2_$3_total
  type: COUNTER

- pattern: kafka.server<type=(.+), client-id=(.+)><>([a-z-]+)
  name: kafka_server_quota_$3
  type: GAUGE
  labels:
    resource: "$1"
    clientId: "$2"

- pattern: kafka.server<type=(.+), user=(.+), client-id=(.+)><>([a-z-]+)
  name: kafka_server_quota_$4
  type: GAUGE
  labels:
    resource: "$1"
    user: "$2"
    clientId: "$3"

# Generic gauges with 0-2 key/value pairs
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+), (.+)=(.+)><>Value
  name: kafka_$1_$2_$3
  type: GAUGE
  labels:
    "$4": "$5"
    "$6": "$7"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+)><>Value
  name: kafka_$1_$2_$3
  type: GAUGE
  labels:
    "$4": "$5"
- pattern: kafka.(\w+)<type=(.+), name=(.+)><>Value
  name: kafka_$1_$2_$3
  type: GAUGE

# Emulate Prometheus 'Summary' metrics for the exported 'Histogram's.
#
# Note that these are missing the '_sum' metric!
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+), (.+)=(.+)><>Count
  name: kafka_$1_$2_$3_count
  type: COUNTER
  labels:
    "$4": "$5"
    "$6": "$7"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.*), (.+)=(.+)><>(\d+)thPercentile
  name: kafka_$1_$2_$3
  type: GAUGE
  labels:
    "$4": "$5"
    "$6": "$7"
    quantile: "0.$8"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+)><>Count
  name: kafka_$1_$2_$3_count
  type: COUNTER
  labels:
    "$4": "$5"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.*)><>(\d+)thPercentile
  name: kafka_$1_$2_$3
  type: GAUGE
  labels:
    "$4": "$5"
    quantile: "0.$6"
- pattern: kafka.(\w+)<type=(.+), name=(.+)><>Count
  name: kafka_$1_$2_$3_count
  type: COUNTER
- pattern: kafka.(\w+)<type=(.+), name=(.+)><>(\d+)thPercentile
  name: kafka_$1_$2_$3
  type: GAUGE
  labels:
    quantile: "0.$4"

重启添加相关prometheus

修改好配置文件和config.yaml 后需要重启kafka
然后修改prometheus 的配置文件
增加对应的job 

需要注意, 这里面一个job 对应一套kafka, 我这边是single的节点, 所以比较简单一些. 
  - job_name: 'kafka203'
    metrics_path: /metrics
    static_configs:
    - targets: ["192.168.254.203:19092"]
      labels:
        instance: kafka203
注意ip地址和端口的对应关系, 重启或者是刷新prometheus 
就可以进行验证了 可以通过
prometheus的界面进行验证
http://192.168.255.xx:port/targets?search=
可以通过show more 的方式进行查看
打开链接 验证可以监控到jmx的相关信息. 

导入grafana的面板

ID为: 18276
需要注意, 因为缺少一个必备的 变量, 直接引入时无法使用的.
而且貌似 3.5和jmx0.19 的版本缺少了一个必备的变量参数, 建议可以修改grafana 的这个 18276 的配置, 修改变量进行 修改为 

settings -> Variables -> 点击kafka_job_name -> 选择 select variable type 修改为custom

->在 custom options  输入自己在prometheus 里面定义的job_name 
-> 比如我这边是kafka203,kafka204 通过 逗号进行分割. 

总结

再次进入grafana 查看kafka相关的信息
能够展示出一些基本的kafka信息.

本次处理过程中, 没注意到这里面的问题. 
其实prometheus 里面是可以 进行查询和验证的. 

代码能力是必须得有的, 而且必须有细心和慢慢查询的能力. 

标签:jmx,name,kafka3.5,pattern,labels,kafka,GAUGE,Grafana,type
From: https://www.cnblogs.com/jinanxiaolaohu/p/17777503.html

相关文章

  • Grafana监控OracleDB的完整过程
    背景两年前曾经写过一个进行Oracle监控的简单blog但是周天晚上尝试进行处理时发现很不完整了.很多数据获取不到.晚上又熬夜了好久进行处理.感觉还是需要总结一下,不然就忘记了获取镜像还是使用docker的方式来暴露Oracle的服务使用的镜像为:dockerpullghcr.io/iamseth/or......
  • 图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(下)
    一、环境介绍本文环境,以及本文所采用数据库为GreatSQL8.0.32-24$cat/etc/system-releaseRedHatEnterpriseLinuxServerrelease7.9(Maipo)$uname-aLinuxgip3.10.0-1160.el7.x86_64#1SMPTueAug1814:50:17EDT2020x86_64x86_64x86_64GNU/Linux$ldd--......
  • Grafana 10 新特性解读:体验与协作全面提升
    作者:徽泠(苏墨馨)为了庆祝Grafana的10年里程碑,GrafanaLabs推出了Grafana10,这个具有纪念意义的版本强调增强用户体验,使各种开发人员更容易使用。Grafanav10.0.x为开发者与企业展示卓越的新功能、可视化与协作能力,其中还包括:更新Panel面板更新Dashboard更新导航栏......
  • grafana api创建dashboard 记录
    目录jsonmodel导入申请apikey创建dashboard删除dashboardjsonmodel导入直接在ui通过jsonmodel导入,开发自己用还好,但对非开发人员不太友好,故考虑通过api后台自动创建apidoc:https://grafana.com/docs/grafana/v9.3/developers/http_api/dashboard/申请apikey$curl......
  • grafana升级的问题
    1.8.5.27版本无法使用alter告警,无法添加通知通道报错Error:failedtosaveandapplyAlertmanagerconfiguration:UNIQUEconstraintfailed:alert_configuration.org_id2升级到10.0.1版本之后出现问题1)ldap用户无法分配权限2)普通用户无法看到管理员制作的图表......
  • Grafana导入 json 文件的 dashboard 错误 Templating Failed to upgrade legacy queri
    前言编辑或者修改后的dashboard保存为json文件,在其他环境导入使用,报错FailedtoupgradelegacyqueriesDatasourcexxxxxxxwasnotfound,无法显示监控数据问题原因为:从其他grafana导出的dashboardjson文件中,数据源是写的固定的,如果当前要显示的监控数据的数据源名称......
  • Grafana监控数据库性能
    软件版本grafana 7.5.3influxdb  1.7.11  influxdb-1.7.11.x86_64.rpmPython3.7.9下载地址:https://www.python.org/downloads/Python3安装模块,下载地址:https://pypi.org/#pip3listPackageVersion---------------------------certifi......
  • 图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)
    一、环境介绍本文环境,以及本文所采用数据库为GreatSQL8.0.32-24$cat/etc/system-releaseRedHatEnterpriseLinuxServerrelease7.9(Maipo)$uname-aLinuxgip3.10.0-1160.el7.x86_64#1SMPTueAug1814:50:17EDT2020x86_64x86_64x86_64GNU/Linux$ldd--......
  • Prometheus+Grafana+Jmeter监控服务器资源及中间件(超详细)
    一、Prometheus&node_exporter&Grafana的原理Prometheus:Prometheus是一个开源的系统监控和报警工具包,它负责定时从各种数据源(如NodeExporter)中获取指标数据,并将其存储在自己的时间序列数据库中。Prometheus支持灵活的查询和报警功能,用户可以方便地对这些指标数据进行查询......
  • Jmeter+Influxdb+Grafana平台监控性能测试过程(三种方式)
    一、Jmeter自带插件监控下载地址:https://jmeter-plugins.org/install/Install/安装:下载后文件为jmeter-plugins-manager-1.3.jar,将其放入jmeter安装目录下的lib/ext目录,然后重启jmeter,即可。启动Jmeter,测试计划-->选择监听器jp@gc-TransactionsperSecond、jp@gc-Respons......