Zabbix监控万物5--监控JAVA heap memory相关

背景

实现

创建scripts

在scripts(/etc/zabbix/scripts)目录下创建一个新的shell脚本 get_heap_memory.sh

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash

pid=`ps -aux | grep java | grep wildfly | grep -v "grep" | grep -v $0 | awk '{print $2}'`

S0U=`jstat -gc $pid | awk '{if(NR!=1) print int($3+0.5)}'`
S1U=`jstat -gc $pid | awk '{if(NR!=1) print int($4+0.5)}'`
EU=`jstat -gc $pid | awk '{if(NR!=1) print int($6+0.5)}'`
OU=`jstat -gc $pid | awk '{if(NR!=1) print int($8+0.5)}'`
heap_memory_used=$((S0U+S1U+EU+OU))
heap_memory_max=`jinfo -flag MaxHeapSize $pid | awk -F "=" '{print $2}'`
echo $heap_memory_used > /var/log/zabbix/heap_memory_used.txt
echo $heap_memory_max > /var/log/zabbix/heap_memory_max.txt

配置定时任务

由于zabbix agent没有权限去运行这个命令,因此我们采用定时任务的方式

1
* * * * * sudo bash /etc/zabbix/get_heap_memory.sh

注:其实可以通过赋予agent运行这个脚本的权限来省略这一步

获得任务执行结果

在脚本运行后,会生成下面两个文件,我们监控这两个文件即可

1
2
/var/log/zabbix/heap_memory_used.txt
/var/log/zabbix/heap_memory_max.txt

在console中配置

分别创建两个item,用来监控最大值和已使用值