zabbix提供了一个java gateway的应用去监控jmx(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

服务端配置

zabbix server安装java gateway
[root@zabbix ~]# yum install -y  java  java-devel  zabbix-java-gateway
[root@zabbix ~]# java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

[root@zabbix ~]# service zabbix-java-gateway status
Redirecting to /bin/systemctl status  zabbix-java-gateway.service
● zabbix-java-gateway.service - Zabbix Java Gateway
   Loaded: loaded (/usr/lib/systemd/system/zabbix-java-gateway.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

修改java-gateway配置文件
[root@zabbix share]# vim /etc/zabbix/zabbix_java_gateway
#监控地址
LISTEN_IP="0.0.0.0"
#监听端口
LISTEN_PORT=10052
#进程文件路径
PID_FILE="/var/run/zabbix/zabbix_java.pid"
#开启的工作线程数
START_POLLERS=5
#超时
TIMEOUT=3

重启java-gateway服务
[root@zabbix share]# systemctl restart zabbix-java-gateway

查看java Gateway服务是否启动成功
[root@zabbix share]# netstat -antup | grep 10052
tcp6       0      0 :::10052                :::*                    LISTEN      7281/java 
或
[root@zabbix share]# systemctl status zabbix-java-gateway

修改zabbix_server配置文件
[root@zabbix share]# vim /etc/zabbix/zabbix_server.conf
#JavaGateway的服务器IP地址
JavaGateway=127.0.0.1   #因为在一台服务器上,可以写ip
#JavaGateway的服务端口
JavaGatewayPort=10052
#从javaGateway采集数据的进程数
StartJavaPollers=5

重启zabbix_server服务
[root@zabbix share]# systemctl restart zabbix-server zabbix-agent httpd

客户端配置

在tomcat下的/bin/catalina.sh文件中添加以下内容:

CATALINA_OPTS="$CATALINA_OPTS
-Djavax.management.builder.initial=
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=10052                 #此为端口
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=192.168.9.112"               #tomcat客户端ip

重启tomcat进程:
[root@localhost bin]# ./shutdown.sh
[root@localhost bin]# ./startup.sh

查看10052端口是否启动成功
[root@ng-to-re ~]# netstat -antup | grep java
tcp6       0      0 :::8009                 :::*                    LISTEN      7663/java           
tcp6       0      0 :::8080                 :::*                    LISTEN      7663/java           
tcp6       0      0 :::10052                :::*                    LISTEN      7663/java           
tcp6       0      0 :::50277                :::*                    LISTEN      7663/java           
tcp6       0      0 :::40902                :::*                    LISTEN      7663/java  

在zabbix-server中进行监控
zabbix 监控 tomcat_第1张图片

zabbix 监控 tomcat_第2张图片

添加JVM监控模板(最上面那两个)
zabbix 监控 tomcat_第3张图片

查看已经有数据了
zabbix 监控 tomcat_第4张图片

redis监控

agent端:

创建脚本
[root@ng-to-re scripts]# cd /etc/zabbix/scripts/
[root@ng-to-re scripts]# vim redismonitor.sh

#!/bin/bash
REDISCLI="/usr/local/bin/redis-cli"
HOST="192.168.9.112"
PORT=6379
PASS=992996

if [[ $# == 1 ]];then
    case $1 in
        version)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info | grep -w "redis_version" | awk -F':' '{print $2}'`
            echo $result
        ;;
        uptime)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info | grep -w "uptime_in_seconds" | awk -F':' '{print $2}'`
            echo $result
        ;;
        connected_clients)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info | grep -w "connected_clients" | awk -F':' '{print $2}'`
            echo $result
        ;;
        blocked_clients)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info | grep -w "blocked_clients" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_memory)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info | grep -w "used_memory" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_memory_rss)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info | grep -w "used_memory_rss" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_memory_peak)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info | grep -w "used_memory_peak" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_memory_lua)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info | grep -w "used_memory_lua" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_cpu_sys)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info | grep -w "used_cpu_sys" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_cpu_user)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info | grep -w "used_cpu_user" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_cpu_sys_children)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info | grep -w "used_cpu_sys_children" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_cpu_user_children)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info | grep -w "used_cpu_user_children" | awk -F':' '{print $2}'`
            echo $result
        ;;
        rdb_last_bgsave_status)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info  | grep -w "rdb_last_bgsave_status" | awk -F':' '{print $2}' | grep -c ok`
            echo $result
        ;;
        aof_last_bgrewrite_status)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info  | grep -w "aof_last_bgrewrite_status" | awk -F':' '{print $2}' | grep -c ok`
            echo $result
        ;;
        aof_last_write_status)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info  | grep -w "aof_last_write_status" | awk -F':' '{print $2}' | grep -c ok`
            echo $result
        ;;
        *)
            echo -e "\033[33mUsage: $0 {connected_clients|blocked_clients|used_memory|used_memory_rss|used_memory_peak|used_memory_lua|used_cpu_sys|used_cpu_user|used_cpu_sys_children|used_cpu_user_children|rdb_last_bgsave_status|aof_last_bgrewrite_status|aof_last_write_status}\033[0m" 
        ;;
    esac
elif [[ $# == 2 ]];then
    case $2 in
        keys)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info | grep -w "$1" | grep -w "keys" | awk -F'=|,' '{print $2}'`
            echo $result
        ;;
        expires)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info | grep -w "$1" | grep -w "keys" | awk -F'=|,' '{print $4}'`
            echo $result
        ;;
        avg_ttl)
            result=`$REDISCLI -h $HOST -a $PASS -p $PORT info | grep -w "$1" | grep -w "avg_ttl" | awk -F'=|,' '{print $6}'`
            echo $result
        ;;
        *)
            echo -e "\033[33mUsage: $0 {db0 keys|db0 expires|db0 avg_ttl}\033[0m" 
        ;;
    esac
fi

更改权限双主
[root@ng-to-re scripts]# chmod +x redismonitor.sh 
[root@ng-to-re scripts]# chown zabbix.zabbix redismonitor.sh 

增加配置文件
[root@ng-to-re scripts]# cd /etc/zabbix/zabbix_agentd.d/
[root@ng-to-re zabbix_agentd.d]# vim redismonitor.conf 
UserParameter=Redis.Status,status=`/usr/local/bin/redis-cli -h 192.168.9.112 -a 992996 -p 6379 ping|grep -c PONG` &&echo $status
UserParameter=Redis.Info[*],/etc/zabbix/scripts/redismonitor.sh $1 $2

重启
[root@ng-to-re zabbix_agentd.d]# systemctl restart zabbix-agent

在zabbix-server端测试
[root@zabbix ~]# zabbix_get -s 192.168.9.112 -k "Redis.Info[version]" -p 10050
3.2.9

导入模板--选择主机---模板---添加模板RedisMonitor
zabbix 监控 tomcat_第5张图片

查看任意图形
zabbix 监控 tomcat_第6张图片

redis监控模板



    2.0
    2014-08-07T10:04:35Z
    
        
            RedisMontior
        
        
            Templates
        
    
    
        
    
    
        
            {RedisMontior:Redis.Status.last(0)}=0
            Redis is down
            
            0
            5
            
            0
            
        
    
    
        
            Redis Client
            900
            200
            0.0000
            100.0000
            1
            1
            0
            1
            0
            0.0000
            0.0000
            0
            0
            0
            0
            
                
                    0
                    0
                    C80000
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[blocked_clients]
                    
                
                
                    1
                    0
                    00C800
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[connected_clients]
                    
                
            
        
        
            Redis CPU
            900
            200
            0.0000
            100.0000
            1
            1
            0
            1
            0
            0.0000
            0.0000
            0
            0
            0
            0
            
                
                    0
                    2
                    C80000
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[used_cpu_sys]
                    
                
                
                    1
                    2
                    00C800
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[used_cpu_user]
                    
                
                
                    2
                    2
                    0000C8
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[used_cpu_sys_children]
                    
                
                
                    3
                    2
                    C800C8
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[used_cpu_user_children]
                    
                
            
        
        
            Redis DbKeys
            900
            200
            0.0000
            100.0000
            1
            1
            0
            1
            0
            0.0000
            0.0000
            0
            0
            0
            0
            
                
                    0
                    2
                    C80000
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[db0,avg_ttl]
                    
                
                
                    1
                    2
                    00C800
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[db0,expires]
                    
                
                
                    2
                    2
                    0000C8
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[db0,keys]
                    
                
            
        
        
            Redis Memory
            900
            200
            0.0000
            100.0000
            1
            1
            0
            1
            0
            0.0000
            0.0000
            0
            0
            0
            0
            
                
                    0
                    2
                    C80000
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[used_memory]
                    
                
                
                    1
                    2
                    00C800
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[used_memory_lua]
                    
                
                
                    2
                    2
                    0000C8
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[used_memory_peak]
                    
                
                
                    3
                    2
                    C800C8
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[used_memory_rss]
                    
                
            
        
        
            Redis WriteStatus
            900
            200
            0.0000
            100.0000
            1
            1
            0
            1
            0
            0.0000
            0.0000
            0
            0
            0
            0
            
                
                    0
                    2
                    C80000
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[aof_last_bgrewrite_status]
                    
                
                
                    1
                    2
                    0000C8
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[rdb_last_bgsave_status]
                    
                
                
                    2
                    2
                    00C800
                    0
                    2
                    0
                    
                        RedisMontior
                        Redis.Info[aof_last_write_status]