zabbix深入监控
zabbix深入监控
第1章 Grafana自定义图形
1.安装grafana
清华源下载grafana rpm包
[root@zabbix ~]# date
Fri Dec 20 11:54:19 CST 2019
[root@zabbix ~]# yum localinstall grafana-6.5.2-1.x86_64.rpm
[root@zabbix ~]# systemctl start grafana-server.service
[root@zabbix ~]# systemctl enable grafana-server.service
访问grafana:http://10.0.0.71:3000
账号密码:admin admin
新密码我设置成123456
安装zabbix插件,启动插件
[root@zabbix ~]# grafana-cli plugins list-remote|grep zabbix
id: alexanderzobnin-zabbix-app version: 3.10.4
[root@zabbix ~]# grafana-cli plugins install alexanderzobnin-zabbix-app
installing alexanderzobnin-zabbix-app @ 3.10.4
from: https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/3.10.4/download
into: /var/lib/grafana/plugins
也可以输入这个网址把包下载下来 拖入他给你的这个目录里解压
[root@zabbix ~]# systemctl restart grafana-server.service
网页操作-激活zabbix插件
网页操作-添加zabbix数据源
http://localhost/zabbix/api_jsonrpc.php
Admin
zabbix
网页操作-导入模版
数据展示:
2.自定义图形仪表盘
3.自定义图形饼图
1.安装插件
在线安装方式
grafana-cli plugins install grafana-piechart-panel
离线安装方式
wget -nv https://grafana.com/api/plugins/grafana-piechart-panel/versions/latest/download -O /tmp/grafana-piechart-panel.zip
unzip -q /tmp/grafana-piechart-panel.zip -d /tmp
mv /tmp/grafana-piechart-panel-* /var/lib/grafana/plugins/grafana-piechart-panel
service grafana-server restart
2.配置图形
第2章 percona模版监控mysql
参考强哥的博客
https://www.qstack.com.cn/archives/213.html
0.自定义监控项步骤:
1.找到取值的命令或者脚本
2.写自定义监控项配置文件
3.重启并测试
4.web页面添加监控项内容
percona :
强大的工具,所有的监控项(190多个)都是配好的 直接拖下来导入模板用就行
上述监控步骤 前两步都不需要我们自己做 percona自带命令脚本和配置文件 你只需要做第三步就可以
1.安装php环境
percona的监控插件是php编写的。通过php连接mysql来获取相关的数据,所以需要你在本地安装zabbix agent的同时,部署php和php-mysql。
[root@zabbix ~]# yum install php php-mysql -y
2.下载软件
# 可以直接rpm接连接下载
[root@zabbix ~]# rpm -ivh https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm
# 也可以拖进去下载 注意脚本位置
[root@zabbix ~]# ll
-rw-r--r-- 1 root root 28296 Dec 21 20:34 percona-zabbix-templates-1.1.8-1.noarch.rpm
[root@zabbix ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
# 安装完成后会提示有2个目录
Scripts are installed to /var/lib/zabbix/percona/scripts
Templates are installed to /var/lib/zabbix/percona/templates
3.查看目录
进入安装目录会发现有2个目录,一个是脚本目录,一个是模版目录
[root@zabbix ~]# cd /var/lib/zabbix/percona/
[root@zabbix /var/lib/zabbix/percona]# tree
.
├── scripts
│ ├── get_mysql_stats_wrapper.sh
│ └── ss_get_mysql_stats.php
└── templates
├── userparameter_percona_mysql.conf
└── zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
其中脚本目录里有2个脚本,用来获取数据库信息
[root@zabbix /var/lib/zabbix/percona]# cd scripts/
[root@zabbix /var/lib/zabbix/percona/scripts]# ls
get_mysql_stats_wrapper.sh (这个脚本去过滤这个值)
ss_get_mysql_stats.php (这个脚本去mysql取状态值 会临时生成状态文件)
4.修改get_mysql_stats_wrapper.sh
修改get_mysql_stats_wrapper数据库登陆信息
第19行添加mysql账号密码
[root@zabbix /var/lib/zabbix/percona/scripts]# sed -n '19p' get_mysql_stats_wrapper.sh
RES=`HOME=~zabbix mysql -uroot -p123 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n'
5.修改ss_get_mysql_stats.php
[root@zabbix /var/lib/zabbix/percona/scripts]# vim ss_get_mysql_stats.php
$mysql_user = 'root';
$mysql_pass = '123';
6.复制自定义监控项配置文件到zabbix目录
[root@zabbix ~]# cd /var/lib/zabbix/percona/templates/
[root@zabbix /var/lib/zabbix/percona/templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
[root@zabbix /var/lib/zabbix/percona/templates]# cd /etc/zabbix/zabbix_agentd.d/
[root@zabbix /etc/zabbix/zabbix_agentd.d]# ls
userparameter_mysql.conf userparameter_percona_mysql.conf
7.重启agent
[root@zabbix ~]# systemctl restart zabbix-agent
[root@git_web01 ~]# systemctl restart zabbix-agent.service
8.查看自定义的key
[root@zabbix /etc/zabbix/zabbix_agentd.d]# tail -3 /etc/zabbix/zabbix_agentd.d/userparameter_percona_mysql.conf
UserParameter=MySQL.Open-files,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh ij
UserParameter=MySQL.State-closing-tables,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh lq
UserParameter=MySQL.running-slave,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave
9.测试key
[root@zabbix ~]# zabbix_get -s 127.0.0.1 -k MySQL.Sort-scan
16
[root@zabbix ~]# zabbix_get -s 127.0.0.1 -k MySQL.innodb-lock-structs
0
//如果获取不到值常见问题
1.看是否是MySQL密码错误
2.不要直接执行脚本来获取
3.删除/tmp/localhost-mysql_cacti_stats.txt文件
4.权限问题导致
#这个值是哪来的?
10.导入模版
官方自带的模版有点问题,版本太低了,需要先装在2.x版本然后导出来,这里使用网友已经修改好的模版上传
http://pan.baidu.com/s/1pL1wDYj
10.主机链接模版
11.报错解决
查看监控发现没有数据显示不支持类型
查看zabbix-server发现因为tmp的文件没有权限,因为刚才手动执行了脚本,所以文件属性是root,将文件删除后由zabbix自己创建解决问题
报错日志如下:
2846:20190811:202708.785 item "Zabbix server:MySQL.State-init" became not supported: Value "rm: 无法删除"/tmp/localhost-mysql_cacti_stats.txt": 不允许的操作
0" of type "string" is not suitable for value type "Numeric (float)"
2843:20190811:202709.787 item "Zabbix server:MySQL.State-locked" became not supported: Value "rm: 无法删除"/tmp/localhost-mysql_cacti_stats.txt": 不允许的操作
0" of type "string" is not suitable for value type "Numeric (float)"
2844:20190811:202710.788 item "Zabbix server:MySQL.State-login" became not supported: Value "rm: 无法删除"/tmp/localhost-mysql_cacti_stats.txt": 不允许的操作
0" of type "string" is not suitable for value type "Numeric (float)"
第3章 自定义模版监控nginx状态
打开一个网页 36次请求
http 1.0 短链接(36次文件的握手 36次文件回收 36次中间的下载)
http 1.1 长链接(第一次握手 下载36中间文件 最后一个次挥手)
1.开启监控页面并访问测试
[root@git_web01 ~]# cat /etc/nginx/nginx.conf
server {
listen 80;
server_name localhost;
location /nginx_status {
stub_status on;
access_log off;
}
}
[root@git_web01 ~]# curl 127.0.0.1/nginx_status/
Active connections: 1 【重要监控这个 当前访问 可以看到现在有多少人在访问你的nginx】
server accepts handled requests
6 6 6 (接收请求6 正在处理6 总共6)
Reading: 0 Writing: 1 Waiting: 0
2.准备nginx监控状态脚本
[root@git_web01 /etc/zabbix/zabbix_agentd.d]# cat nginx_monitor.sh
#!/bin/bash
NGINX_COMMAND=$1
CACHEFILE="/tmp/nginx_status.txt"
CMD="/usr/bin/curl http://127.0.0.1/nginx_status/"
if [ ! -f $CACHEFILE ];then
$CMD >$CACHEFILE 2>/dev/null
fi
# Check and run the script
TIMEFLM=`stat -c %Y $CACHEFILE`
TIMENOW=`date +%s`
if [ `expr $TIMENOW - $TIMEFLM` -gt 60 ]; then
rm -f $CACHEFILE
fi
if [ ! -f $CACHEFILE ];then
$CMD >$CACHEFILE 2>/dev/null
fi
nginx_active(){
grep 'Active' $CACHEFILE| awk '{print $NF}'
exit 0;
}
nginx_reading(){
grep 'Reading' $CACHEFILE| awk '{print $2}'
exit 0;
}
nginx_writing(){
grep 'Writing' $CACHEFILE | awk '{print $4}'
exit 0;
}
nginx_waiting(){
grep 'Waiting' $CACHEFILE| awk '{print $6}'
exit 0;
}
nginx_accepts(){
awk NR==3 $CACHEFILE| awk '{print $1}'
exit 0;
}
nginx_handled(){
awk NR==3 $CACHEFILE| awk '{print $2}'
exit 0;
}
nginx_requests(){
awk NR==3 $CACHEFILE| awk '{print $3}'
exit 0;
}
case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
;;
*)
echo 'Invalid credentials';
exit 2;
esac
3.编写zabbix监控配置文件
[root@git_web01 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx_status.conf
UserParameter=nginx_status[*],/bin/bash /server/scripts/nginx_monitor.sh $1
[root@git_web01 ~]# systemctl restart zabbix-agent.service
4.使用zabbix_get取值
[root@zabbix ~]# zabbix_get -s 10.0.0.7 -k nginx_status[accepts]
7
5.导入模版
zbx_nginx_template.xml
6.链接模版
7.查看数据
第4章 自定义模版监控php状态
1.开启监控页面
[root@git_web01 ~]# tail -1 /etc/php-fpm.d/www.conf
pm.status_path = /php_status
[root@git_web01 ~]# cat /etc/nginx/conf.d/status.conf
server {
listen 80;
server_name localhost;
location /nginx_status {
stub_status on;
access_log off;
}
location /php_status {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME html$fastcgi_script_name;
include fastcgi_params;
}
}
[root@web01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 ~]# systemctl restart nginx.service php-fpm.service
2.访问测试
[root@git_web01 ~]# curl 127.0.0.1/php_status
pool: www
process manager: dynamic
start time: 08/Aug/2019:22:31:27 +0800
start since: 37
accepted conn: 1
listen queue: 0
max listen queue: 0
listen queue len: 128
idle processes: 4
active processes: 1
total processes: 5
max active processes: 1
max children reached: 0
slow requests: 0
3.准备访问脚本
[root@git_web01 ~]# cat /etc/zabbix/zabbix_agentd.d/fpm.sh
#!/bin/bash
##################################
# Zabbix monitoring script
#
# php-fpm:
# - anything available via FPM status page
#
##################################
# Contact:
# vincent.viallet@gmail.com
##################################
# ChangeLog:
# 20100922 VV initial creation
##################################
# Zabbix requested parameter
ZBX_REQ_DATA="$1"
ZBX_REQ_DATA_URL="$2"
# Nginx defaults
NGINX_STATUS_DEFAULT_URL="http://localhost/fpm/status"
WGET_BIN="/usr/bin/wget"
#
# Error handling:
# - need to be displayable in Zabbix (avoid NOT_SUPPORTED)
# - items need to be of type "float" (allow negative + float)
#
ERROR_NO_ACCESS_FILE="-0.91"
ERROR_NO_ACCESS="-0.92"
ERROR_WRONG_PARAM="-0.93"
ERROR_DATA="-0.94" # either can not connect / bad host / bad port
# Handle host and port if non-default
if [ ! -z "$ZBX_REQ_DATA_URL" ]; then
URL="$ZBX_REQ_DATA_URL"
else
URL="$NGINX_STATUS_DEFAULT_URL"
fi
# save the nginx stats in a variable for future parsing
NGINX_STATS=$($WGET_BIN -q $URL -O - 2>/dev/null)
# error during retrieve
if [ $? -ne 0 -o -z "$NGINX_STATS" ]; then
echo $ERROR_DATA
exit 1
fi
#
# Extract data from nginx stats
#
#RESULT=$(echo "$NGINX_STATS" | awk 'print $0;match($0, "^'"$ZBX_REQ_DATA"':[[:space:]]+(.*)", a) { print a[1] }')
#RESULT=$(echo "$NGINX_STATS" | grep "$ZBX_REQ_DATA" | awk -F : '{print $2}')
RESULT=$(echo "$NGINX_STATS" | awk -F : "{if(\$1==\"$ZBX_REQ_DATA\") print \$2}")
if [ $? -ne 0 -o -z "$RESULT" ]; then
echo $ERROR_WRONG_PARAM
exit 1
fi
echo $RESULT
exit 0
[root@git_web01 ~]# bash /etc/zabbix/zabbix_agentd.d/fpm.sh "total processes" http://127.0.0.1/php_status
5
4.准备zabbix配置文件
[root@git_web01 ~]# cat /etc/zabbix/zabbix_agentd.d/fpm.conf
UserParameter=php-fpm[*],/etc/zabbix/zabbix_agentd.d/fpm.sh "$1" "$2"
[root@git_web01 ~]# systemctl restart zabbix-agent.service
4.使用zabbix_get取值
[root@zabbix ~]# zabbix_get -s 10.0.1.7 -k php-fpm["total processes",http://127.0.0.1/php_status]
5
5.导入模版
导入之后需要修改一下模版里的宏配置
第5章 zabbix监控redis
redis使用自带的INFO命令进行状态监控。以一种易于解释且易于阅读的格式,返回关于redis服务器的各种信息和统计数值。
1.编写shell脚本
脚本端口,连接redis服务地址根据具体情况修改
AUTH认证没有开启,将PASSWORD修改为空即可。
[root@git_web01 ~]# mkdir -p /etc/zabbix/scripts
[root@git_web01 ~]# vim /etc/zabbix/scripts/redis_status.sh
#!/bin/bash
R_COMMAND="$1"
R_PORT="6379" #根据实际情况调整端口
R_SERVER="127.0.0.1" #根据具体情况调整IP地址
PASSWD="" #如果没有设置Redis密码,为空即可
redis_status(){
(echo -en "AUTH $PASSWD\r\nINFO\r\n";sleep 1;) | /usr/bin/nc "$R_SERVER" "$R_PORT" > /tmp/redis_"$R_PORT".tmp
REDIS_STAT_VALUE=$(grep "$R_COMMAND:" /tmp/redis_"$R_PORT".tmp | cut -d ':' -f2)
echo "$REDIS_STAT_VALUE"
}
case $R_COMMAND in
used_cpu_user_children)
redis_status "$R_PORT" "$R_COMMAND"
;;
used_cpu_sys)
redis_status "$R_PORT" "$R_COMMAND"
;;
total_commands_processed)
redis_status "$R_PORT" "$R_COMMAND"
;;
role)
redis_status "$R_PORT" "$R_COMMAND"
;;
lru_clock)
redis_status "$R_PORT" "$R_COMMAND"
;;
latest_fork_usec)
redis_status "$R_PORT" "$R_COMMAND"
;;
keyspace_misses)
redis_status "$R_PORT" "$R_COMMAND"
;;
keyspace_hits)
redis_status "$R_PORT" "$R_COMMAND"
;;
keys)
redis_status "$R_PORT" "$R_COMMAND"
;;
expires)
redis_status "$R_PORT" "$R_COMMAND"
;;
expired_keys)
redis_status "$R_PORT" "$R_COMMAND"
;;
evicted_keys)
redis_status "$R_PORT" "$R_COMMAND"
;;
connected_clients)
redis_status "$R_PORT" "$R_COMMAND"
;;
changes_since_last_save)
redis_status "$R_PORT" "$R_COMMAND"
;;
blocked_clients)
redis_status "$R_PORT" "$R_COMMAND"
;;
bgsave_in_progress)
redis_status "$R_PORT" "$R_COMMAND"
;;
bgrewriteaof_in_progress)
redis_status "$R_PORT" "$R_COMMAND"
;;
used_memory_peak)
redis_status "$R_PORT" "$R_COMMAND"
;;
used_memory)
redis_status "$R_PORT" "$R_COMMAND"
;;
used_cpu_user)
redis_status "$R_PORT" "$R_COMMAND"
;;
used_cpu_sys_children)
redis_status "$R_PORT" "$R_COMMAND"
;;
total_connections_received)
redis_status "$R_PORT" "$R_COMMAND"
;;
*)
echo $"USAGE:$0 {used_cpu_user_children|used_cpu_sys|total_commands_processed|role|lru_clock|latest_fork_usec|keyspace_misses|keyspace_hits|keys|expires|expired_keys|connected_clients|changes_since_last_save|blocked_clients|bgrewriteaof_in_progress|used_memory_peak|used_memory|used_cpu_user|used_cpu_sys_children|total_connections_received}"
esac
2.redis状态参数解释:
server : Redis 服务器信息,包含以下域:
redis_version : Redis 服务器版本
redis_git_sha1 : Git SHA1
redis_git_dirty : Git dirty flag
os : Redis 服务器的宿主操作系统
arch_bits : 架构(32 或 64 位)
multiplexing_api : Redis 所使用的事件处理机制
gcc_version : 编译 Redis 时所使用的 GCC 版本
process_id : 服务器进程的 PID
run_id : Redis 服务器的随机标识符(用于 Sentinel 和集群)
tcp_port : TCP/IP 监听端口
uptime_in_seconds : 自 Redis 服务器启动以来,经过的秒数
uptime_in_days : 自 Redis 服务器启动以来,经过的天数
lru_clock : 以分钟为单位进行自增的时钟,用于 LRU 管理
clients : 已连接客户端信息,包含以下域:
connected_clients : 已连接客户端的数量(不包括通过从属服务器连接的客户端)
client_longest_output_list : 当前连接的客户端当中,最长的输出列表
client_longest_input_buf : 当前连接的客户端当中,最大输入缓存
blocked_clients : 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量
memory : 内存信息,包含以下域:
used_memory : 由 Redis 分配器分配的内存总量,以字节(byte)为单位
used_memory_human : 以人类可读的格式返回 Redis 分配的内存总量
used_memory_rss : 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致。
used_memory_peak : Redis 的内存消耗峰值(以字节为单位)
used_memory_peak_human : 以人类可读的格式返回 Redis 的内存消耗峰值
used_memory_lua : Lua 引擎所使用的内存大小(以字节为单位)
mem_fragmentation_ratio : used_memory_rss 和 used_memory 之间的比率
persistence : RDB 和 AOF 的相关信息
stats : 一般统计信息
replication : 主/从复制信息
cpu : CPU 计算量统计信息
commandstats : Redis 命令统计信息
cluster : Redis 集群信息
keyspace : 数据库相关的统计信息
参数还可以是下面这两个:
all : 返回所有信息
default : 返回默认选择的信息
当不带参数直接调用 INFO 命令时,使用 default 作为默认参数。
3.添加脚本执行权限
[root@git_web01 ~]# chmod +x /etc/zabbix/scripts/redis_status.sh
4.zabbix权限不足解决
[root@git_web01 ~]# rm -f /tmp/redis_6379.tmp
5.key的redis_status.conf的配置文件如下:
[root@git_web01 ~]# cat /etc/zabbix/zabbix_agentd.d/redis_status.conf
UserParameter=redis_status[*],/bin/bash /etc/zabbix/scripts/redis_status.sh "$1"
6.重启
[root@git_web01 ~]# systemctl restart zabbix-agent
7.在服务端获取值
[root@zabbix ~]# zabbix_get -s 10.0.0.7 -k redis_status[used_cpu_sys]
16.81
8.显示所有key(记得关联模板)
第6章 Zabbix监控JMX
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
在Zabbix中,JMX监控数据的获取由专门的代理程序来实现,即Zabbix-Java-Gateway来负责数据的采集,Zabbix-Java-Gateway和JMX的Java程序之间通信获取数据
JMX在Zabbix中的运行流程:
1.Zabbix-Server找Zabbix-Java-Gateway获取Java数据
2.Zabbix-Java-Gateway找Java程序(zabbix-agent)获取数据
3.Java程序返回数据给Zabbix-Java-Gateway
4.Zabbix-Java-Gateway返回数据给Zabbix-Server
5.Zabbix-Server进行数据展示
配置JMX监控的步骤:
1.安装Zabbix-Java-Gateway。
2.配置zabbix_java_gateway.conf参数。
3.配置zabbix-server.conf参数。
4.Tomcat应用开启JMX协议。
5.ZabbixWeb配置JMX监控的Java应用。
实践环境
服务器系统 | 角色 | IP |
---|---|---|
CentOS 7.4 x86_64 | Zabbix-Server | 10.0.0.71 |
CentOS 7.4 x86_64 | Zabbix-java-gateway | 10.0.0.7 |
CentOS 7.4 x86_64 | Zabbix-Agent | 10.0.0.8 |
1.安装java
以及zabbix-java-gateway
(如果源码安装加上--enable-java参数)
//安装java-gateway
[root@zabbix ~]# yum install zabbix-java-gateway java-1.8.0-openjdk -y
2.配置zabbix-java-gateway
[root@zabbix ~]# vim /etc/zabbix/zabbix_java_gateway.conf
3.启动zabbix-java-gateway
[root@zabbix ~]# systemctl start zabbix-java-gateway
[root@zabbix ~]# netstat -lntup|grep 10052
tcp6 0 0 :::10052 :::* LISTEN 13042/java
4.修改zabbix-server 配置文件
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
#java gateway地址
JavaGateway=192.168.90.11
#java gateway默认端口10052
JavaGatewayPort=10052
#启动进程轮询java gateway
StartJavaPollers=5
5.重启zabbix-server
[root@zabbix ~]# systemctl restart zabbix-server
6.安装tomcat
服务
[root@zabbix ~]# mkdir /soft/package/src -p
[root@zabbix ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.2/bin/apache-tomcat-9.0.2.tar.gz
[root@zabbix ~]# tar xf apache-tomcat-9.0.2.tar.gz -C /soft/
[root@zabbix ~]# ln -s /soft/apache-tomcat-9.0.2/ /soft/tomcat
7.开启tomcat
的远程jvm
配置文件
[root@zabbix ~]# vim /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.90.11"
#jvm配置文件解释
CATALINA_OPTS="$CATALINA_OPTS
//启用远程监控JMX
-Dcom.sun.management.jmxremote
//jmx启用远程端口,Zabbix添加时必须一致
-Dcom.sun.management.jmxremote.port=12345
//不开启用户密码认证
-Dcom.sun.management.jmxremote.authenticate=false
//不启用ssl加密传输
-Dcom.sun.management.jmxremote.ssl=false
//运行tomcat主机的IP地址
-Djava.rmi.server.hostname=192.168.90.11"
7.重启tomcat服务
[root@zabbix ~]# /usr/local/tomcat/bin/shutdown.sh
[root@zabbix ~]# /usr/local/tomcat/bin/startup.sh
8.zabbix添加tomcat主机,并添加Zabbix自带java监控模板
9.自带的监控可能无法满足企业需求,大家可以根据公司的业务定制不同的JVM监控模板。