python远程监控jvm_Zabbix监控JVM(微服务进程)

本文详细介绍了如何使用Zabbix监控JVM微服务进程,包括Zabbix Server和Agent的配置,监控原理,以及利用python脚本实现微服务的自动发现和状态获取。通过jstat命令获取JVM内存使用情况,并使用zabbix_sender发送到Zabbix Server。最后,配置Zabbix Agent的UserParameter和脚本,实现定时发送监控信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

老的方法感觉效果不好,又写了一个模板和脚本,请移步:

有兴趣的可以继续往下看。

Zabbix监控JVM(微服务进程)

1、ZabbixServer端配置

Zabbix服务器需安装java,编译需添加启动参数--enable-java

本次安装的编译参数为:

./configure --prefix=/data/zabbix/ --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --enable-java

2、ZabbixAgent端配置

ZabbixAgent端不仅需要安装zabbix_agentd,还需要安装zabbix_sender,可以通过地址http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/选择合适的版本。

安装

rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-sender-3.0.9-1.el7.x86_64.rpm

3、监控原理

微服务的特性:

1、 每个进程是直接以java-jar service.jar的方式启动,并没有依赖于tomcat或者其他web应用。

2、 每台服务器上的微服务并没有固定的数量,可以灵活的增加或者减少。

3、 每个微服务的启动参数已有配置端口很多。

鉴于此种情况,传统的监控方法监控微服务,会造成经常的手动去增加删减web页面配置,服务器内的端口管理也会很混乱。

所以使用discovery自动发现的方式去监控微服务。并将每个微服务的信息通过zabbix_sender发送到ZabbixServer端。

首先java版本为jdk1.8

# java -version

java version "1.8.0_161"

Java(TM) SE Runtime Environment (build 1.8.0_161-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

关于微服务的信息主要通过jstat获取,如下

# ps -ef|grep java

root 28131 1 0 11:17 ? 00:00:56 java -Xms100M -Xmx500M -Xmn150M -jar /data/work/service_jar/manageMiddle.jar --server.port=20000 --management.port=20001 --config.profile=test

root 28305 1 0 11:26 ? 00:00:51 java -Xms100M -Xmx300M -Xmn100M -jar /data/work/service_jar/resourceService.jar --server.port=18000 --management.port=18001 --config.profile=test

root 29067 1 0 11:59 ? 00:00:54 java -Xms100M -Xmx500M -Xmn150M -jar /data/work/service_jar/systemService.jar --server.port=21000 --management.port=21001 --config.profile=test

root 31345 29980 0 14:03 pts/0 00:00:00 grep --color=auto java

# jstat -gcutil 28131

S0 S1 E O M CCS YGC YGCT FGC FGCT GCT

67.75 0.00 74.28 81.92 97.29 94.90 74 1.248 7 1.065 2.313

# jstat -gc 28131

S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT

14336.0 14848.0 9712.2 0.0 122880.0 91488.9 55808.0 45716.6 56704.0 55169.1 7296.0 6924.1 74 1.248 7 1.065 2.313

关于输出结果的参数解释

S0C:年轻代中第一个survivor(幸存区)的容量 (字节)

S1C:年轻代中第二个survivor(幸存区)的容量 (字节)

S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)

S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)

EC:年轻代中Eden(伊甸园)的容量 (字节)

EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)

OC:Old代的容量 (字节)

OU:Old代目前已使用空间 (字节)

PC:Perm(持久代)的容量 (字节)

PU:Perm(持久代)目前已使用空间 (字节)

YGC:从应用程序启动到采样时年轻代中gc次数

YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)

FGC:从应用程序启动到采样时old代(全gc)gc次数

FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT:从应用程序启动到采样时gc用的总时间(s)

NGCMN:年轻代(young)中初始化(最小)的大小 (字节)

NGCMX:年轻代(young)的最大容量 (字节)

NGC:年轻代(young)中当前的容量 (字节)

OGCMN:old代中初始化(最小)的大小 (字节)

OGCMX:old代的最大容量 (字节)

OGC:old代当前新生成的容量 (字节)

PGCMN:perm代中初始化(最小)的大小 (字节)

PGCMX:perm代的最大容量 (字节)

PGC:perm代当前新生成的容量 (字节)

S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比

S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比

E:年轻代中Eden(伊甸园)已使用的占当前容量百分比

O:old代已使用的占当前容量百分比

P:perm代已使用的占当前容量百分比

S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)

S1CMX ࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值