最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

使用 JMX-Exporter 監(jiān)控 Kafka 和 Zookeeper

2023-06-20 10:53 作者:SRETalk  | 我要投稿

JVM 默認會通過 JMX 的方式暴露基礎指標,很多中間件也會通過 JMX 的方式暴露業(yè)務指標,比如 Kafka、Zookeeper、ActiveMQ、Cassandra、Spark、Tomcat、Flink 等等。掌握了 JMX 監(jiān)控方式,就掌握了一批程序的監(jiān)控方式。本節(jié)介紹 JMX-Exporter 的使用,利用 JMX-Exporter 把 JMX 監(jiān)控數(shù)據(jù)暴露為 Prometheus 可識別的格式。

JMX

JMX(Java Management Extensions)是 Java 管理擴展的簡稱,是一種為 Java 應用程序植入管理功能的框架。Java 類程序經(jīng)常使用 JMX 暴露監(jiān)控指標數(shù)據(jù),也可以通過 JMX 來控制 Java 類程序,典型的比如通過 JMX 觸發(fā)程序 GC。

Java 程序里,某個類如果實現(xiàn)了 MBean 接口,那么這個類就可以通過 JMX 來讀取和修改這個類的屬性,也可以調(diào)用這個類的方法。JMX 通過 MBeanServer 來管理 MBean,MBeanServer 是一個管理器,它可以管理多個 MBean,每個 MBean 都有一個 ObjectName,用來唯一標識這個 MBean。

更新信息可以參考?JMX Specification(?https://docs.oracle.com/javase/8/docs/technotes/guides/jmx/index.html)。非本文重點。

JMX-Exporter?簡介

JMX-Exporter 是 Prometheus 社區(qū)提供的一個工具,用來把 JMX 暴露的監(jiān)控指標數(shù)據(jù)轉(zhuǎn)換為 Prometheus 可識別的格式。JMX-Exporter 通過 HTTP 服務的方式暴露監(jiān)控指標數(shù)據(jù),Prometheus 通過 HTTP 協(xié)議來拉取監(jiān)控指標數(shù)據(jù)。

JMX-Exporter 就是個 jar 包,以 javaagent(何為 javaagent,需要讀者自行 Google) 的方式運行,和業(yè)務 Java(或 Scala) 程序運行在一個 JVM 虛擬機里。有了 JMX-Exporter,業(yè)務程序無需暴露 JMX 端口了,JMX-Exporter 會把 JMX 暴露的監(jiān)控指標數(shù)據(jù)轉(zhuǎn)換為 Prometheus 可識別的格式,然后通過 HTTP 只讀方式暴露出去,也更為安全。

JMX-Exporter 安裝

因為 JMX-Exporter 是個 jar 包,所以安裝非常簡單,只需要把 jar 包下載到服務器上就可以了。JMX-Exporter 的下載地址是?https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/,下載最新版本的 jar 包即可。

比如我們把下載的 jar 包放在?/opt/jmx-exporter?目錄,另外,建立?/etc/jmx-exporter?目錄放置 JMX-Exporter 所需配置文件。像 Kafka,暴露的 JMX 指標非常非常多,我們不需要全部采集,只需要采集我們關心的指標即可。所以,我們需要配置文件來告訴 JMX-Exporter,我們需要采集哪些指標。

JMX-Exporter 提供了很多樣例配置,地址在這里:https://github.com/prometheus/jmx_exporter/tree/main/example_configs。

使用 JMX 監(jiān)控 Zookeeper

實際上,新版 Zookeeper 已經(jīng)直接暴露了 Prometheus 協(xié)議的監(jiān)控數(shù)據(jù),無需通過 JMX 方式采集了。另外,Zookeeper 還提供了四字命令的監(jiān)控數(shù)據(jù)采集方式,比如 Categraf 的?input.zookeeper?插件就是采用的這種方式。

不過,本文主要是演示 JMX 的方式,所以還是使用 JMX 的方式來采集 Zookeeper 的監(jiān)控數(shù)據(jù)。

首先,從?https://github.com/prometheus/jmx_exporter/tree/main/example_configs?這里找到 Zookeeper 的配置樣例文件,下載到?/etc/jmx-exporter/zookeeper.yml。然后把 jmx-exporter 的 jar 包作為 javaagent 啟動參數(shù)加入 Zookeeper 的啟動命令即可。

Zookeeper 有個 zookeeper-env.sh 控制 Zookeeper 的啟動參數(shù),我們在這里加入 javaagent 啟動參數(shù),然后重啟 Zookeeper 即可。上例是把 JMX-Exporter 的 HTTP 服務端口設置為 7070,可以根據(jù)實際情況修改,配置文件指定為?/etc/jmx-exporter/zookeeper.yml。

OK,現(xiàn)在可以測試了,先看 7070 端口是否在監(jiān)聽,如果在監(jiān)聽,就可以請求這個端口的?/metrics?接口采集 Prometheus 協(xié)議的監(jiān)控數(shù)據(jù)了。

可以看到,Zookeeper 的監(jiān)控數(shù)據(jù)已經(jīng)暴露出來了,接下來就可以采集這些數(shù)據(jù)了,抓取 Prometheus 協(xié)議的監(jiān)控數(shù)據(jù)有很多方式,可以直接使用 Prometheus 自身來抓取,也可以通過 Categraf 的 input.prometheus 插件來抓取,也可以通過 vmagent 來抓取,大家自行決策即可。

使用 JMX 監(jiān)控 Kafka

從 JMX-Exporter 提供的樣例配置目錄,下載 kafka.yml,然后導出 KAFKA_OPTS 環(huán)境變量即可。

上例中,我們把端口換成了7071,配置文件指定為?/etc/jmx-exporter/kafka.yml。測試一下端口是否成功監(jiān)聽:

一切正常哈,如果你的 Kafka 是通過 systemd 運行的,可以類似下面的方式來配置 kafka.service 文件:

文章主要翻譯了?https://alex.dzyoba.com/blog/jmx-exporter/?并加入了一些個人理解。enjoy…make a better world :)


使用 JMX-Exporter 監(jiān)控 Kafka 和 Zookeeper的評論 (共 條)

分享到微博請遵守國家法律
深圳市| 克拉玛依市| 隆子县| 林西县| 惠来县| 清流县| 顺平县| 镇远县| 永宁县| 洪雅县| 林芝县| 西林县| 天台县| 墨玉县| 萍乡市| 灯塔市| 景德镇市| 荃湾区| 玉山县| 绥中县| 杂多县| 诏安县| 丘北县| 上虞市| 九寨沟县| 苍山县| 珠海市| 攀枝花市| 忻州市| 九寨沟县| 湖北省| 来宾市| 英超| 合阳县| 雷州市| 渭源县| 达尔| 郧西县| 绥滨县| 兴国县| 阿拉尔市|