国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

收藏備用小知識:使用 JMX 監(jiān)控 Kafka 和 Zookeeper

安全 應(yīng)用安全
jmx 監(jiān)控數(shù)據(jù)采集的關(guān)鍵點(diǎn),其實(shí)是這個 rules 的最佳實(shí)踐,也就是說,對于某個 Java 應(yīng)用,你具體要采集哪些指標(biāo),這是真經(jīng)驗(yàn),真正有價值的東西。

JVM 默認(rèn)會通過 JMX 的方式暴露基礎(chǔ)指標(biāo),很多中間件也會通過 JMX 的方式暴露業(yè)務(wù)指標(biāo),比如 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 管理擴(kuò)展的簡稱,是一種為 Java 應(yīng)用程序植入管理功能的框架。Java 類程序經(jīng)常使用 JMX 暴露監(jiān)控指標(biāo)數(shù)據(jù),也可以通過 JMX 來控制 Java 類程序,典型的比如通過 JMX 觸發(fā)程序 GC。

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

更新信息可以參考 JMX Specification。非本文重點(diǎn)。

JMX-Exporter 簡介

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

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

JMX-Exporter 安裝

因?yàn)?JMX-Exporter 是個 jar 包,所以安裝非常簡單,只需要把 jar 包下載到服務(wù)器上就可以了。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 指標(biāo)非常非常多,我們不需要全部采集,只需要采集我們關(guān)心的指標(biāo)即可。所以,我們需要配置文件來告訴 JMX-Exporter,我們需要采集哪些指標(biāo)。

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

使用 JMX 監(jiān)控 Zookeeper

實(shí)際上,新版 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-env.sh
SERVER_JVMFLAGS="-javaagent:/opt/jmx-exporter/jmx-exporter.jar=7070:/etc/jmx-exporter/zookeeper.yml"

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

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

$ netstat -tlnp | grep 7070
tcp        0      0 0.0.0.0:7070            0.0.0.0:*               LISTEN      892/java

$ curl -s localhost:7070/metrics | head
# HELP jvm_threads_current Current thread count of a JVM
# TYPE jvm_threads_current gauge
jvm_threads_current 16.0
# HELP jvm_threads_daemon Daemon thread count of a JVM
# TYPE jvm_threads_daemon gauge
jvm_threads_daemon 12.0
# HELP jvm_threads_peak Peak thread count of a JVM
# TYPE jvm_threads_peak gauge
jvm_threads_peak 16.0
# HELP jvm_threads_started_total Started thread count of a JVM

可以看到,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,然后導(dǎo)出 KAFKA_OPTS 環(huán)境變量即可。

$ export KAFKA_OPTS='-javaagent:/opt/jmx-exporter/jmx-exporter.jar=7071:/etc/jmx-exporter/kafka.yml'
$ /opt/kafka_2.11-0.10.1.0/bin/kafka-server-start.sh /opt/kafka_2.11-0.10.1.0/conf/server.properties

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

$ netstap -tlnp | grep 7071
tcp6       0      0 :::7071                 :::*                    LISTEN      19288/java

$ curl -s localhost:7071 | grep -i kafka | head
# HELP kafka_server_replicafetchermanager_minfetchrate Attribute exposed for management (kafka.server<type=ReplicaFetcherManager, name=MinFetchRate, clientId=Replica><>Value)
# TYPE kafka_server_replicafetchermanager_minfetchrate untyped
kafka_server_replicafetchermanager_minfetchrate{clientId="Replica",} 0.0
# HELP kafka_network_requestmetrics_totaltimems Attribute exposed for management (kafka.network<type=RequestMetrics, name=TotalTimeMs, request=OffsetFetch><>Count)
# TYPE kafka_network_requestmetrics_totaltimems untyped
kafka_network_requestmetrics_totaltimems{request="OffsetFetch",} 0.0
kafka_network_requestmetrics_totaltimems{request="JoinGroup",} 0.0
kafka_network_requestmetrics_totaltimems{request="DescribeGroups",} 0.0
kafka_network_requestmetrics_totaltimems{request="LeaveGroup",} 0.0
kafka_network_requestmetrics_totaltimems{request="GroupCoordinator",} 0.0

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

...
[Service]
Restart=on-failure
Environment=KAFKA_OPTS=-javaagent:/opt/jmx-exporter/jmx-exporter.jar=7071:/etc/jmx-exporter/kafka.yml
ExecStart=/opt/kafka/bin/kafka-server-start.sh /etc/kafka/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
TimeoutStopSec=600
User=kafka
...

加餐

使用 jmx-exporter jar 包的時候,會引用一個配置文件,不同的 Java 應(yīng)用可能會通過 jmx 的方式暴露特別多的監(jiān)控指標(biāo),顯然,我們不需要采集所有,具體要采集哪些指標(biāo),就是靠 jmx-exporter jar 包引用的那個配置文件決定的。我們來看一下 /etc/jmx-exporter/zookeeper.yml 的內(nèi)容:

rules:
  # replicated Zookeeper
  - pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+)><>(\\w+)"
    name: "zookeeper_$2"
    type: GAUGE
  - pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+)><>(\\w+)"
    name: "zookeeper_$3"
    type: GAUGE
    labels:
      replicaId: "$2"
  - pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+), name2=(\\w+)><>(Packets\\w+)"
    name: "zookeeper_$4"
    type: COUNTER
    labels:
      replicaId: "$2"
      memberType: "$3"
  - pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+), name2=(\\w+)><>(\\w+)"
    name: "zookeeper_$4"
    type: GAUGE
    labels:
      replicaId: "$2"
      memberType: "$3"
  - pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+), name2=(\\w+), name3=(\\w+)><>(\\w+)"
    name: "zookeeper_$4_$5"
    type: GAUGE
    labels:
      replicaId: "$2"
      memberType: "$3"
  # standalone Zookeeper
  - pattern: "org.apache.ZooKeeperService<name0=StandaloneServer_port(\\d+)><>(\\w+)"
    type: GAUGE
    name: "zookeeper_$2"
  - pattern: "org.apache.ZooKeeperService<name0=StandaloneServer_port(\\d+), name1=InMemoryDataTree><>(\\w+)"
    type: GAUGE
    name: "zookeeper_$2"

這個配置文件里定義了一堆 rules,每個 rule 由四部分組成:pattern、name、type、labels,其中 pattern 是一個正則表達(dá)式,用來匹配 MBean 的 object name(什么是 MBean,什么是 object name 可以自行 Google,這里暫不展開),如果匹配到了就采集對應(yīng)的 MBean 的數(shù)據(jù),否則就不采集。type 是指定了數(shù)據(jù)類型,labels 是指定了標(biāo)簽,標(biāo)簽值是來自 pattern 中提取到的正則數(shù)據(jù)。

所以,jmx 監(jiān)控數(shù)據(jù)采集的關(guān)鍵點(diǎn),其實(shí)是這個 rules 的最佳實(shí)踐,也就是說,對于某個 Java 應(yīng)用,你具體要采集哪些指標(biāo),這是真經(jīng)驗(yàn),真正有價值的東西。

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

責(zé)任編輯:武曉燕 來源: SRETalk
相關(guān)推薦

2024-09-03 10:35:31

JMXJava框架

2019-10-09 16:08:21

PythonPython教程Python 開發(fā)

2023-03-16 17:19:50

開源OCR識別項(xiàng)目

2022-11-10 07:41:00

sshLinux

2024-07-01 13:58:07

2019-09-12 08:03:56

MySQL索引數(shù)據(jù)庫

2021-04-28 18:28:44

KafkaZookeeper

2024-10-17 16:41:57

KafkaZooKeeper

2025-03-25 07:54:15

2024-01-30 08:43:26

IF 語句JavaScripJS

2023-09-04 00:05:27

JMX管理組件

2022-05-10 15:24:34

KafkaZooKeeperKafka Raft

2024-03-26 15:21:43

2020-05-14 10:26:27

KafkaSpark數(shù)據(jù)

2013-07-29 04:46:48

iOS開發(fā)iOS開發(fā)學(xué)習(xí)iOS小知識

2018-08-22 10:14:01

2018-08-19 09:15:25

MongoDBGo 微服務(wù)

2009-01-15 09:02:27

JMXJBossJMX監(jiān)控

2022-07-20 09:05:06

Python編程語言

2022-07-20 00:15:48

SQL數(shù)據(jù)庫編程語言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

日韩精品一区二区免费| 中文字幕亚洲视频| 欧美影院久久久| 波多野结衣中文在线| 国产精品人人做人人爽人人添| 久久99蜜桃综合影院免费观看| 一区二区导航| 久久天堂av综合合色| 九九精品调教| 九九久久综合网站| 国产精品一级在线观看| 这里只有精品丝袜| 中文字幕av一区二区三区四区| 国产精品揄拍500视频| 99久久精品国产网站| 欧美色网在线| 漂亮人妻被中出中文字幕| 日韩精品亚洲精品| 国产精品久久久久白浆| 日韩成人午夜精品| 永久免费毛片在线播放不卡| 2020色愉拍亚洲偷自拍| 欧美区一区二| 富二代精品短视频| 久久免费少妇高潮久久精品99| 欧美在线视频二区| 水莓100国产免费av在线播放| 亚洲码欧美码一区二区三区| 日本一区二区三区视频| 久久久www免费人成精品| 亚洲图片小说在线| av在线网址观看| 亚洲国产另类 国产精品国产免费| 日韩系列在线| 国语自产精品视频在免费| 国产黄在线播放| 日韩精品在线一区| 成人影欧美片| 亚洲国产精品黑人久久久| 亚洲综合在线网站| 亚洲五月六月丁香激情| 国产大片一区| 亚洲熟妇无码一区二区三区导航| 亚洲男人的天堂在线观看| 伊人网在线播放| 久久精品视频在线免费观看| av综合电影网站| 久久久久北条麻妃免费看| 黄色三级中文字幕| 久久影音资源网| 加勒比在线日本| 欧美日韩一区二区免费在线观看| h网站视频在线观看| 日韩第一页在线| 亚洲区小说区| 热久久精品免费视频| 国产99精品国产| 亚洲精品中文字幕无码蜜桃| 亚洲精品videosex极品| 国内精品模特av私拍在线观看| av大全在线| 在线不卡一区二区| 免费在线观看的毛片| 欧美色手机在线观看| 成人在线免费公开观看视频| 欧美一级二级三级蜜桃| 色综合久久久| 亚洲一区二区三区视频| 国产成人午夜高潮毛片| 88av在线| 亚洲美女av在线| 国产探花在线精品| 综合视频免费看| 一区二区免费在线| 女人高潮被爽到呻吟在线观看| 欧美在线观看视频| 国产一区二区三区高清播放| 在线小视频网址| xvideos亚洲人网站| 欧美激情1区2区3区| 欧洲av无码放荡人妇网站| 欧美日韩国产首页在线观看| 在线综合色站| www.午夜色| 福利视频导航一区| 国产精品一区二区三区www| 国产精品大全| 国产精品成人午夜| 末成年女av片一区二区下载| 亚洲va码欧洲m码| 国产人久久人人人人爽| 性爱视频在线播放| 国产免费一区二区三区在线能观看 | 先锋影音一区二区| 国产精品二区三区| 18成人在线观看| 亚洲1234区| 久草精品电影| 亚洲国产色一区| 日本99精品| 中文字幕一区二区中文字幕| 欧美日韩综合视频网址| 美女扒开腿让男人桶爽久久动漫| 日本三级福利片| 欧美日韩亚洲丝袜制服| 国产一区二区三区四区五区 | 97在线资源在| 亚洲欧美第一页| 久久久精品五月天| 免费成人av电影| 日韩av免费看| 国产欧美精品一区aⅴ影院| 日本电影欧美片| 欧美久久久久久久| 欧美综合视频在线观看| 国产精品一区二区av日韩在线| 成年人免费在线播放| 国产亚洲精品激情久久| 久久久精品性| 欧美尤物美女在线| 国产欧美精品一区二区三区| 亚洲国产aⅴ天堂久久| 亚洲第一二三区| 成视频免费在线看| 欧美高跟鞋交xxxxxhd| 91蝌蚪porny九色| 欧美性生活一级| 婷婷五月综合缴情在线视频| 亚洲男女自偷自拍图片另类| 裸体在线国模精品偷拍| 福利写真视频网站在线| 明星裸体视频一区二区| 成人黄色午夜影院| 欧美专区在线| a毛片在线看免费观看| 欧美精品亚洲精品| 欧美一级二级三级蜜桃| 在线亚洲成人| 成人日韩欧美| 香蕉精品视频在线| 亚洲视频在线播放| av一二三不卡影片| 亚洲精品在线播放| 国产精品视频一区二区图片| 欧美在线观看一区二区三区| 一区二区免费在线| 精品久久久久久久| 亚洲另类春色校园小说| 国产精品一线| 成熟老妇女视频| 午夜免费久久久久| 亚洲国产一区二区视频| 日韩av专区| 日韩av视屏| 国产精品美女诱惑| 欧美成人精品二区三区99精品| 日日夜夜免费精品| 免费观看一级欧美片| 可以看毛片的网址| 欧美精品在线观看| 中文字幕一区在线观看| 希岛爱理一区二区三区| 好操啊在线观看免费视频| 日韩欧美三级一区二区| 亚洲欧洲在线视频| 国产香蕉久久精品综合网| 国产一区二区电影在线观看| 91大神xh98hx在线播放| 国产精品久久久久9999爆乳| 奇米一区二区三区四区久久| 欧美性色xo影院| 国产呦精品一区二区三区网站| www.豆豆成人网.com| 黄色美女网站在线观看| 91制片厂免费观看| 91精品国产精品| 91精品国产综合久久久蜜臀图片 | 国产精品黄视频| 91精品国产aⅴ一区二区| 成人av午夜电影| 香蕉视频国产精品| 中文不卡1区2区3区| 4kfree性满足欧美hd18| 精品乱色一区二区中文字幕| 精品国产一区av| 欧美在线观看视频一区二区 | japanese色系久久精品| 香蕉视频免费在线播放| av免费看网址| 91九色偷拍| 久久精品国产亚洲精品2020| 欧美色视频日本高清在线观看| 国产一区二区三区四| 日韩成人精品一区| 写真福利精品福利在线观看| 天堂成人在线| 中文字幕乱码人妻综合二区三区 | 精品国产a毛片| 亚洲一区二区四区蜜桃| 国产寡妇亲子伦一区二区|