使用-监控-收藏备用小知识-和-Kafka-Zookeeper-JMX (手机使用监控)

教程大全 2025-07-09 09:21:34 浏览

JVM 默认会通过 JMX 的方式暴露基础指标,很多中间件也会通过 JMX 的方式暴露业务指标,比如 Kafka、Zookeeper、ActiveMQ、CasSANdra、Spark、tomcat、Flink 等等。掌握了 JMX 监控方式,就掌握了一批程序的监控方式。本节介绍 JMX-Exporter 的使用,利用 JMX-Exporter 把 JMX 监控数据暴露为 Prometheus 可识别的格式。

JMX(Java Management Extensions)是 Java 管理扩展的简称,是一种为 Java 应用程序植入管理功能的框架。Java 类程序经常使用 JMX 暴露监控指标数据,也可以通过 JMX 来控制 Java 类程序,典型的比如通过 JMX 触发程序 GC。

Java 程序里,某个类如果实现了 MBean 接口,那么这个类就可以通过 JMX 来读取和修改这个类的属性,也可以调用这个类的方法。JMX 通过 MBeanServer 来管理 MBean,MBeanServer 是一个管理器,它可以管理多个 MBean,每个 MBean 都有一个 ObjectName,用来唯一标识这个 MBean。

更新信息可以参考JMX Specification。非本文重点。

JMX-Exporter简介

JMX-Exporter 是 Prometheus 社区提供的一个工具,用来把 JMX 暴露的监控指标数据转换为 Prometheus 可识别的格式。JMX-Exporter 通过 HTTP 服务的方式暴露监控指标数据,Prometheus 通过 HTTP 协议来拉取监控指标数据。

JMX-Exporter 就是个 jar 包,以 javaagent(何为 javaagent,需要读者自行 Google) 的方式运行,和业务 Java(或 Scala) 程序运行在一个 JVM 虚拟机里。有了 JMX-Exporter,业务程序无需暴露 JMX 端口了,JMX-Exporter 会把 JMX 暴露的监控指标数据转换为 Prometheus 可识别的格式,然后通过 HTTP 只读方式暴露出去,也更为安全。

JMX-Exporter 安装

因为 JMX-Exporter 是个 jar 包,所以安装非常简单,只需要把 jar 包下载到 服务器 上就可以了。JMX-Exporter 的下载地址是,下载最新版本的 jar 包即可。

比如我们把下载的 jar 包放在/opt/jmx-exporter目录,另外,建立/etc/jmx-exporter目录放置 JMX-Exporter 所需配置文件。像 Kafka,暴露的 JMX 指标非常非常多,我们不需要全部采集,只需要采集我们关心的指标即可。所以,我们需要配置文件来告诉 JMX-Exporter,我们需要采集哪些指标。

JMX-Exporter 提供了很多样例配置,地址在这里:。

使用 JMX 监控 Zookeeper

实际上,新版 Zookeeper 已经直接暴露了 Prometheus 协议的监控数据,无需通过 JMX 方式采集了。另外,Zookeeper 还提供了四字命令的监控数据采集方式,比如 Categraf 的input.zookeeper插件就是采用的这种方式。

不过,本文主要是演示 JMX 的方式,所以还是使用 JMX 的方式来采集 Zookeeper 的监控数据。

首先,从这里找到 Zookeeper 的配置样例文件,下载到/etc/jmx-exporter/zookeeper.yml。然后把 jmx-exporter 的 jar 包作为 javaagent 启动参数加入 Zookeeper 的启动命令即可。

# zookeeper-env.shSERVER_JVMFLAGS="-javaagent:/opt/jmx-exporter/jmx-exporter.jar=7070:/etc/jmx-exporter/zookeeper.yml"

Zookeeper 有个 zookeeper-env.sh 控制 Zookeeper 的启动参数,我们在这里加入 javaagent 启动参数,然后重启 Zookeeper 即可。上例是把 JMX-Exporter 的 HTTP 服务端口设置为 7070,可以根据实际情况修改,配置文件指定为/etc/jmx-exporter/zookeeper.yml。

OK,现在可以测试了,先看 7070 端口是否在监听,如果在监听,就可以请求这个端口的/metrics接口采集 Prometheus 协议的监控数据了。

$ netstat -tlnp | grep 7070tcp00 0.0.0.0:70700.0.0.0:*LISTEN892/java$ curl -s localhost:7070/metrics | head# HELP jvm_threads_current Current thread count of a JVM# TYPE jvm_threads_current gaugejvm_threads_current 16.0# HELP jvm_threads_daemon Daemon thread count of a JVM# TYPE jvm_threads_daemon gaugejvm_threads_daemon 12.0# HELP jvm_threads_peak Peak thread count of a JVM# TYPE jvm_threads_peak gaugejvm_threads_peak 16.0# HELP jvm_threads_started_total Started thread count of a JVM

可以看到,Zookeeper 的监控数据已经暴露出来了,接下来就可以采集这些数据了,抓取 Prometheus 协议的监控数据有很多方式,可以直接使用 Prometheus 自身来抓取,也可以通过 Categraf 的 input.prometheus 插件来抓取,也可以通过 vmagent 来抓取,大家自行决策即可。

使用 JMX 监控 Kafka

和

从 JMX-Exporter 提供的样例配置目录,下载 kafka.yml,然后导出 KAFKA_OPTS 环境变量即可。

$ 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。测试一下端口是否成功监听:

$ netstap -tlnp | grep 7071tcp600 :::7071:::*LISTEN19288/java$ curl -s localhost:7071 | grep -i kafka | head# HELP kafka_server_replicafetchermanager_minfetchrate Attribute exposed for management (kafka.server<>Value)# TYPE kafka_server_replicafetchermanager_minfetchrate untypedkafka_server_replicafetchermanager_minfetchrate{clientId="Replica",} 0.0# HELP kafka_network_requestmetrics_totaltimems Attribute exposed for management (kafka.network<>Count)# TYPE kafka_network_requestmetrics_totaltimems untypedkafka_network_requestmetrics_totaltimems{request="OffsetFetch",} 0.0kafka_network_requestmetrics_totaltimems{request="JoinGroup",} 0.0kafka_network_requestmetrics_totaltimems{request="DescribeGroups",} 0.0kafka_network_requestmetrics_totaltimems{request="LeaveGroup",} 0.0kafka_network_requestmetrics_totaltimems{request="GroupCoordinator",} 0.0

一切正常哈,如果你的 Kafka 是通过 systemd 运行的,可以类似下面的方式来配置 kafka.service 文件:

...[Service]Restart=on-failureEnvironment=KAFKA_OPTS=-javaagent:/opt/jmx-exporter/jmx-exporter.jar=7071:/etc/jmx-exporter/kafka.ymlExecStart=/opt/kafka/bin/kafka-server-start.sh /etc/kafka/server.propertiesExecStop=/opt/kafka/bin/kafka-server-stop.shTimeoutStopSec=600User=kafka...

加餐

使用 jmx-exporter jar 包的时候,会引用一个配置文件,不同的 Java 应用可能会通过 jmx 的方式暴露特别多的监控指标,显然,我们不需要采集所有,具体要采集哪些指标,就是靠 jmx-exporter jar 包引用的那个配置文件决定的。我们来看一下/etc/jmx-exporter/zookeeper.yml的内容:

rules:# replicated Zookeeper- pattern: "org.apache.ZooKeeperService<>(\\w+)"name: "zookeeper_$2"type: GAUGE- pattern: "org.apache.ZooKeeperService<>(\\w+)"name: "zookeeper_$3"type: GAUGElabels:replicaId: "$2"- pattern: "org.apache.ZooKeeperService<>(Packets\\w+)"name: "zookeeper_$4"type: COUNTERlabels:replicaId: "$2"memberType: "$3"- pattern: "org.apache.ZooKeeperService<>(\\w+)"name: "zookeeper_$4"type: GAUGElabels:replicaId: "$2"memberType: "$3"- pattern: "org.apache.ZooKeeperService<>(\\w+)"name: "zookeeper_$4_$5"type: GAUGElabels:replicaId: "$2"memberType: "$3"# standalone Zookeeper- pattern: "org.apache.ZooKeeperService<>(\\w+)"type: GAUGEname: "zookeeper_$2"- pattern: "org.apache.ZooKeeperService<>(\\w+)"type: GAUGEname: "zookeeper_$2"

这个配置文件里定义了一堆 rules,每个 rule 由四部分组成:pattern、name、type、labels,其中 pattern 是一个正则表达式,用来匹配 MBean 的 object name(什么是 MBean,什么是 object name 可以自行 Google,这里暂不展开),如果匹配到了就采集对应的 MBean 的数据,否则就不采集。type 是指定了数据类型,labels 是指定了标签,标签值是来自 pattern 中提取到的正则数据。

所以,jmx 监控数据采集的关键点,其实是这个 rules 的最佳实践,也就是说,对于某个 Java 应用,你具体要采集哪些指标,这是真经验,真正有价值的东西。

文章主要翻译了并加入了一些个人理解。enjoy…make a better world 🙂


贫血有什么简单的食疗方法?

如果贫血不十分严重,就不必去吃各种补品,只要调整饮食就可以改变贫血的症状。 比如首先要注意饮食,要均衡摄取肝脏、蛋黄、谷类等富含铁质的食物。 如果饮食中摄取的铁质不足或是缺铁严重,就要马上补充铁剂。 维他命C可以帮助铁质的吸收,也能帮助制造血红素,所以维他命C的摄取量也要充足。 其次多吃各种新鲜的蔬菜。 许多蔬菜含铁质很丰富。 如黑木耳、紫菜、发菜、荠菜、黑芝麻、莲藕粉等。 推荐几样家常的补血食物:黑豆:我国古时向来认为吃豆有益,多数书上会介绍黑豆可以让人头发变黑,其实黑豆也可以生血。 黑豆的吃法随各人喜好,如果是在产后,建议用黑豆煮乌骨鸡。 发菜:发菜的颜色很黑,不好看,但发菜内所含的铁质较高,用发菜煮汤做菜,可以补血。 胡萝卜:胡萝卜含有很高的维生素B、C,同时又含有一种特别的营养素-胡萝卜素,胡萝卜素对补血极有益,用胡萝卜煮汤,是很好的补血汤饮。 不过许多人不爱吃胡萝卜,我个人的做法是把胡萝卜榨汁,加入蜂蜜当饮料喝。 面筋:这是种民间食品。 一般的素食馆、卤味摊都有供应,面筋的铁质含量相当丰富。 而补血必须先补铁。 菠菜:这是最常见的蔬菜。 也是有名的补血食物,菠菜内含有丰富的铁质胡萝卜素,所以菠菜可以算是补血蔬菜中的重要食物。 如果不爱吃胡萝卜,那就多吃点蔬菜吧。 金针菜:金针菜含铁数量最大,比大家熟悉的菠菜高了20倍,铁质含量丰富,同时金针菜还含有丰富的维生素A、B1、C、蛋白质、脂肪及秋水仙醉碱等营养素。 龙眼肉:龙眼肉就是桂圆肉,任何一家超市都有售。 龙眼肉除了含丰富的铁质外还含有维生素A、B和葡萄糖、蔗糖等。 补血的同时还能治疗健忘、心悸、神经衰弱和失眠症。 龙眼汤、龙眼胶、龙眼酒之类也是很好的补血食物。 萝卜干:萝卜干本来就是有益的蔬菜,它所含的维生素B极为丰富,铁质含量很高。 所以它是最不起眼最便宜但却是最好的养生食物,它的铁质含量除了金针菜之外超过一切食物。 需要注意的是:贫血者最好不要喝茶,多喝茶只会使贫血症状加重。 因为食物中的铁,是以3价胶状氢氧化铁形式进入消化道的。 经胃液的作用,高价铁转变为低价铁,才能被吸收。 可是茶中含有鞣酸,饮后易形成不溶性鞣酸铁,从而阻碍了铁的吸收。 其次,牛奶及一些中和胃酸的药物会阻碍铁质的吸收,所以尽量不要和含铁的食物一起食用。

八宝粥是由哪些材料组成的

1》食疗八宝粥原料:桂元肉10克、银耳10克、玉竹15克、枸杞10克、莲籽5粒、大枣5粒、葡萄干 10克、粳米30克。 制作方法:先将莲籽和玉竹加热煮烂,然后把其它六味原料一起入锅,加热煮熟直 至变成粥状,即可食用了。 2》玉米八宝粥的加工玉米粥是东北地区特有食品,是以去皮去脐的玉米粒(以下简称玉米粒)为主,添加芸豆煮熟而成。 八宝玉米粥是在玉米粥基础上配以红枣、花生、黑豆、南瓜块、木耳及桂圆而制成的营养保健食品,具有营养均衡、滋补身体的特点,是治疗心脑血管疾病、糖尿病的辅助食品。 1.原料配方:玉米粒140g、木耳16g、芸豆20g、黑豆20g、花生20g、南瓜块40g、红枣2--6枚、桂圆4--6枚、水3.5kg。 2.工艺流程玉米粒、花生、黑豆、芸豆浸泡--→加水高压煮沸--→加入南瓜块--→红枣煮沸--→加入木耳块、桂圆肉煮沸--→装罐--→灭菌--→产品3.操作要点①原料挑选及处理:红枣应选色泽鲜艳、肉质厚、无霉变、无虫蛀的一等干制品,洗净后去核、切块备用。 玉米粒、黑豆、芸豆、花生、南瓜均选当年新产的,要求无污染、无霉变、无虫蛀、无杂质。 黑豆、芸豆、花生浸泡12h(小时)后洗净;南瓜掏瓤洗净并切成1cmx1cm的小方块;玉米粒洗净备用,木耳选用优质东北干制品,要求无杂质、无霉变,用清水浸泡,充分吸水膨胀后洗净切块。 桂圆如用鲜果,应选果大肉厚的;如用干制品,应选无霉点、无虫蛀、色泽正常的桂圆干,去壳去核后切块备用。 ②煮料、灌装、灭菌:为使粥中的各种原料均达到熟而不烂、外观整齐的最佳状态,要采用分步煮料的方法;同时各工序均需搅拌,以免出现糊底。 将处理好的玉米粒、黑豆、芸豆、花生混合,加水3.5kg,煮沸30分钟:再将南瓜块、红枣块加入继续煮沸20分钟;最后将湿木耳块、桂圆肉加入再煮沸5分钟即可。 装罐后在121℃蒸汽中杀菌30秒,易拉罐包装保存期可达2年之久。 3》健脾胃的八宝粥[原料]芡实、薏仁米、白扁豆、莲肉、山药、红枣、桂圆、百合各6克、粳米150克[做法]先取上述八药煎煮40分钟,再加入大米继续煮烂成粥。 [用法]分顿调糖食用,连吃数日。 [作用]健脾胃,补气益肾,养血安神。 适用于失眠以及体虚乏力虚肿、泄泻、口渴、咳嗽少痰等。 [评注]八宝粥超市有卖,温热服用效果较好,健康人食用可强身健体。 4》八宝粥材料:糯米1汤匙、红豆1汤匙、绿豆1汤匙、葡萄干10粒做法:1.所有材料洗净。 2.除葡萄干外,放入锅里,加1-2碗水慢炖。 注:适合1岁半幼儿5》黑糯米八宝粥原料:黑糯米、白糯米、燕麦、红枣、枸杞子、松子仁、莲子、桂圆、冰糖做法:1·枸杞子、燕麦、莲子用温水泡一下。 2·全部原料放入沙锅中,加适量水和冰糖,小火炖煮90分钟左右即可。 粗粮干果“八宝粥”是日常食用各色粗粮和干果最好的载体了,黑、白糯米的妙处在于含有很多具有糯性的淀粉多糖,可以为下肠道保有所需的营养原料。 6》八宝粥材料:糯米半杯、薏仁1/3杯、红豆1/3杯、桂圆肉少许、莲子60克、清水12杯、砂糖少许。 做法:1.将薏仁、红豆洗干净后泡水待软2.将糯米洗干净备用3.把薏仁、红豆加12杯水煮约20分钟4.把莲子、糯米、桂圆肉、加入锅内续煮至熟透5.将砂糖加于粥内即成7》金谷八宝粥:主要配料: 桂圆、莲子、葡萄干、花生米、红枣、红小豆、绿豆、芸豆、香米、大米等。 特点:色泽鲜艳、质软香甜、清香诱人、滑而不腻功能:补铁、补血、养气、安神。 食用方法:加5至10倍清水、文火慢煮。 食用时可根据口味加糖、折牛奶等。 8》防癌八宝粥湖北省荆沙地区1995年有15名临近退休的老中医联合发起“奉献社会,人人献出一份祖传秘方”的倡议,经过对20多份秘方的论证,筛选出一种具有防癌作用的药膳——防癌“八宝粥”。 其原料各地均有售,制作简单,据本地有关专家鉴定:此药膳组合科学,无毒副作用,防癌效果明显,病人易于坚持。 原料:大豆100克,玉米100克,银耳50克,大枣9枚,香菇9个,莲子50克,枸杞子30克,以及蜂蜜适量。 制作方法:1、将银耳、香菇放人碗内,用开水浸泡,水冷却后将其蒂去掉、滤干。 2、招大豆、玉米、大枣、莲子和枸杞子用冷水洗净,同银耳、香菇一齐放人砂锅中,加冷水文火煮沸,熬成粥状。 服法:将蜂蜜调人粥中,分3次服用,每日晨服1次。 功效:既有强身健体的作用,又有抗癌防癌的作用(尤其适用于肺癌、食道癌、胃癌、肠癌、乳腺癌、前列腺癌等)还有抗衰老的作用。

谁有好的运输车队相关管理制度

人事管理制度请参照劳动法车辆用油管理制度1、以实际行车里程和用油量计算出的百公里耗油量为考核依据。 百公里耗油量根据国家按各种车型规定的用油标准及实际车况来计算各种车型的用油数据。 2、严格加强油料管理,实行指定油站加油,采取一车一卡制。 驾驶员在出长途车前必须将油加满,尽量杜绝外加油现象发生。 每次加完油,驾驶员要核实好数据,在油卡上签字确认。 3、对耗油量过高,确实存在问题的驾驶员,要采取批评教育、车队通报、经济处罚,直至停车待岗等方式进行处

车辆维修制度1、严格履行车辆维修审批手续,实行日常定点维修。 按照申请、鉴定、预算、审批、下修车单、修后回执审核等程序进行。 2、车辆出现故障或发生交通事故需要修理时,驾驶员要在10分钟内及时向车队队长报告,由队长组织人员做出鉴定,填好记录备案,并及时向办公室分管领导汇报。 3、日常小修(1000元以下)由车队队长与办公室分管主任沟通同意后,签发修车通知单,到指定地点修理。 4、对超过日常小修范围的,由车队书面请示办公室,由办公室分管主任阅审,经办公室主任批准同意后方可修理。 对数额较大的维修,须由办公室主任报请管委会主任批准,由办公室车辆维修审批小组竞价选择维修点进行维修。 5、对因有特殊情况需到指定地点以外修车的,必须报告办公室分管主任、主任批准。 车辆在区外发生故障需要维修的,原则上要报告车队,将车辆拖到指定维修厂修理。 确需在外地修车的,应按程序请示汇报,经办公室同意后方可修车。 否则,不予报销修理费用。 6、更换下来的废、旧件,应带回车队,做好登记后,统一集体保管。 7、修配厂在接到修车通知单后,应立即做修车方案,并及时同车队沟通,经同意后方可修车。 车辆维修完毕后,要向车队送达维修回执,车队做好登记备案。 车辆运输调配制度1.公司车辆外包运输活动由公司统一安排。 服从车队管理和调度,不得无故拒绝出车。 2.司机一律凭派车单出车,不得私自出车。 如特殊情况不能在出车前办理出车手续的,应电话报告车队,并在出车回来后补办手续。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐