美文网首页
zabbix应用服务监控

zabbix应用服务监控

作者: 唯爱熊 | 来源:发表于2019-12-21 18:24 被阅读0次

一.zabbix监控NGINX

环境规划与地址分配

监控nginx七种状态
1.在nginx的server标签中添加如下内容

[root@lb01 /etc/nginx/conf.d]# vim ssl.conf 
    location /nginx_status {
           stub_status on;
           access_log  off;
           allow 127.0.0.1;
           deny all;
       }
[root@lb01 /etc/nginx/conf.d]# nginx -t
[root@lb01 /etc/nginx/conf.d]# systemctl restart nginx.service

2.本地访问nginx_status

[root@lb01 /etc/nginx/conf.d]# curl 127.0.0.1/nginx_status
Active connections: 1 
server accepts handled requests
 12 12 12 

3.编写nginx的shell脚本,(如果端口不一致,只需要修改nginx的端口即可)

[root@lb01 /etc/zabbix/zabbix_agentd.d]# mkdir scripts
[root@lb01 /etc/zabbix/zabbix_agentd.d]# vim scripts/nginx_status.sh
#!/bin/bash
NGINX_PORT=80                      #如果端口不同仅需要修改脚本即可,否则修改xml很麻烦
NGINX_COMMAND=$1

nginx_active(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Active/ {print $NF}'
}

nginx_reading(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Reading/ {print $2}'
}

nginx_writing(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Writing/ {print $4}'
       }

nginx_waiting(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Waiting/ {print $6}'
       }
nginx_accepts(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $1}'
       }

nginx_handled(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $2}'
       }

nginx_requests(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $3}'
       }

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 $"USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}"
esac

4.给脚本添加执行权限

[root@lb01 /etc/zabbix/zabbix_agentd.d]# cd scripts/
[root@lb01 /etc/zabbix/zabbix_agentd.d/scripts]# chmod +x nginx_status.sh

5.监控项nginx_status.conf的配置文件的编写

[root@lb01 /etc/zabbix/zabbix_agentd.d]# vim nginx_status.conf
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/scripts/nginx_status.sh "$1"

6.重启zabbix_agent端服务

[root@lb01 ~]# systemctl restart zabbix-agent.service

7.在Server端检测是否能够获取到值

[root@zabbix ~]# zabbix_get -s 172.16.1.5 -k nginx_status[reading]
0
[root@zabbix ~]# zabbix_get -s 172.16.1.5 -k nginx_status[active]
1
[root@zabbix ~]# zabbix_get -s 172.16.1.5 -k nginx_status[writing]
1
[root@zabbix ~]# zabbix_get -s 172.16.1.5 -k nginx_status[waiting]
0
[root@zabbix ~]# zabbix_get -s 172.16.1.5 -k nginx_status[accepts]
16
[root@zabbix ~]# zabbix_get -s 172.16.1.5 -k nginx_status[handled]
17
[root@zabbix ~]# zabbix_get -s 172.16.1.5 -k nginx_status[requests]
17

8.web端配置监控项
说明:这里创建自定义模板,以便添加新的主机直接关联使用。


二.zabbix监控PHP

环境规划以及IP地址分配


说明:其它主机也是一样配置
1.PHP-FPM工作模式通常与Nginx结合使用,修改php-fpm.conf
[root@web01 ~]# vim /etc/php-fpm.d/www.conf
pm.status_path = /phpfpm_status
#配置完后重启php-fpm
[root@web01 ~]# systemctl restart php-fpm.service

2.修改nginx.conf的配置文件,增加如下location访问PHP-FPM状态信息

#配置文件信息
location ~ ^/(phpfpm_status)$ {
            include fastcgi_params;
            fastcgi_pass    127.0.0.1:9000;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
#整体配置文件信息
[root@web01 ~]# vim /etc/nginx/conf.d/wordpress.conf
server {
   listen 80;
   server_name blog.wordpress.com;
   location / {
   root  /code/wordpress;
   index index.html index.php;
   }
   location /nginx_status {
           stub_status on;
           access_log  off;
           allow 127.0.0.1;
           deny all;
       }
   location ~ \.php$ {
        root /code/wordpress;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ ^/(phpfpm_status)$ {
            include fastcgi_params;
            fastcgi_pass    127.0.0.1:9000;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}
#配置完成后重启nginx
[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

3.访问测试phpfpm_status

[root@web01 ~]# curl http://127.0.0.1/phpfpm_status
pool:                 www
process manager:      dynamic
start time:           21/Dec/2019:22:29:15 +0800
start since:          114
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

#PHP-FPM状态解释:
pool #fpm池名称,大多数为www
process manager #进程管理方式dynamic或者static
start time #启动日志,如果reload了fpm,时间会更新
start since #运行时间
accepted conn #当前池接受的请求数
listen queue #请求等待队列,如果这个值不为0,那么需要增加FPM的进程数量
max listen queue #请求等待队列最高的数量
listen queue len #socket等待队列长度
idle processes #空闲进程数量
active processes #活跃进程数量
total processes #总进程数量
max active processes #最大的活跃进程数量(FPM启动开始计算)
max children reached #最大数量限制的次数,如果这个数量不为0,那说明你的最大进程数量过小,可以适当调整。

4.编写php的shell脚本,(如果端口不一致,只需要修改php的端口即可)

[root@web01 /etc/zabbix/zabbix_agentd.d]# mkdir scripts
[root@web01 /etc/zabbix/zabbix_agentd.d]# cd scripts/
[root@web01 /etc/zabbix/zabbix_agentd.d/scripts]# vim php_status.sh
#!/bin/bash
PHPFPM_COMMAND=$1
PHPFPM_PORT=80  #根据监听不同端口进行调整

start_since(){
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^start since:/ {print $NF}'
}

accepted_conn(){
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^accepted conn:/ {print $NF}'
}

listen_queue(){
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^listen queue:/ {print $NF}'
}

max_listen_queue(){
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^max listen queue:/ {print $NF}'
}

listen_queue_len(){
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^listen queue len:/ {print $NF}'
}

idle_processes(){
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^idle processes:/ {print $NF}'
}

active_processes(){
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^active processes:/ {print $NF}'
}

total_processes(){
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^total processes:/ {print $NF}'
}

max_active_processes(){
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^max active processes:/ {print $NF}'
}

max_children_reached(){
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^max children reached:/ {print $NF}'
}

slow_requests(){
    /usr/bin/curl -s "http://127.0.0.1:"$PHPFPM_PORT"/phpfpm_status" |awk '/^slow requests:/ {print $NF}'
}

case $PHPFPM_COMMAND in
    start_since)
        start_since;
        ;;
    accepted_conn)
        accepted_conn;
        listen_queue;
        ;;
    max_listen_queue)
        max_listen_queue;
        ;;
    listen_queue_len)
        listen_queue_len;
        ;;
    idle_processes)
        idle_processes;
        ;;
    active_processes)
        active_processes;
        ;;
    total_processes)
        total_processes;
        ;;
    max_active_processes)
        max_active_processes;
        ;;
    max_children_reached)
        max_children_reached;
        ;;
    slow_requests)
        slow_requests;
        ;;
    *)
        echo $"USAGE:$0 {start_since|accepted_conn|listen_queue|max_listen_queue|listen_queue_len|idle_processes|active
_processes|total_processes|max_active_processes|max_children_reached}"
    esac

5.给脚本添加执行权限

[root@web01 /etc/zabbix/zabbix_agentd.d/scripts]# chmod +x php_status.sh

6.监控项php_status.conf的配置文件的编写

[root@web01 /etc/zabbix/zabbix_agentd.d]# vim php_status.conf
UserParameter=php_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/scripts/php_status.sh "$1"

7.重启Agent端服务

[root@web01 /etc/zabbix/zabbix_agentd.d]# systemctl restart zabbix-agent.service

8.Server端检验是否可以获取值

[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k php_status[listen_queue_len]
128

9.web端配置监控项
说明:创建自定义模板以便后边关联使用,这里创建模板与关联主机不再详述,参考前面的自定义模板操作即可。
监控状态如下

监控端口如下

三.zabbix监控MySQL

percona Monitoring Plugins是一个高质量的组件,为MySQL数据库添加企业级的监控和图表功能。但其脚本使用PHP实现,故而Zabbix-Agent需要安装PHP环境。
环境规划与地址分配


说明:数据库所在的服务器需要先安装zabbix-agent并且连接上服务端。
1.安装PHP环境
#precona需要PHP环境
[root@db05 ~]#  yum install php php-mysql -y

2.在zabbix-agent端安装percona Monitoring Plugins




[root@db05 ~]# 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@db06 ~]# 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
#安装完成后会提示有2个目录
Scripts are installed to /var/lib/zabbix/percona/scripts
Templates are installed to /var/lib/zabbix/percona/templates

3.查看percona安装后的目录结构

[root@db05 ~]# tree /var/lib/zabbix/percona
/var/lib/zabbix/percona
├── 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 directories, 4 files

其中脚本目录里有2个脚本,用来获取数据库信息

[root@db05 ~]# cd /var/lib/zabbix/percona/scripts/
[root@db05 /var/lib/zabbix/percona/scripts]# ll
total 64
-rwxr-xr-x 1 root root  1251 Jan 10  2018 get_mysql_stats_wrapper.sh
-rwxr-xr-x 1 root root 60679 Jan 10  2018 ss_get_mysql_stats.php

4.修改数据库的登录密码

#修改php脚本里数据库账号密码
[root@db05 /var/lib/zabbix/percona/scripts]# vim ss_get_mysql_stats.php
$mysql_user = 'root';
$mysql_pass = '123456';

#修改shell脚本,添加数据库账号密码信息
[root@db05 /var/lib/zabbix/percona/scripts]# vim get_mysql_stats_wrapper.sh
......
RES=`HOME=~zabbix mysql -uroot -p123456 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`
......

5.将自定义监控项配置文件复制至/etc/zabbix_agentd.conf.d目录下

[root@db05 /var/lib/zabbix/percona/scripts]# cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/percona_mysql.conf

6.重启zabbix_agent

[root@db05 /etc/zabbix/zabbix_agentd.d]# systemctl restart zabbix-agent.service

7.在Zabbix-Server端上使用Zabbix_get获取值(否则会失败)

[root@zabbix ~]# zabbix_get -s 172.16.1.155 -k MySQL.pool-read-requests
1774
[root@zabbix ~]# zabbix_get -s 172.16.1.156 -k MySQL.pool-read-requests
1553
#/如果获取不到值常见问题
0.配置sh脚本的变量host问题,默认的事localhost,如无法获取结果,可以尝试修改为127.0.0.1测试一下。
1.看是否是MySQL密码错误
2.不要直接执行脚本来获取
3.删除/tmp/localhost-mysql_cacti_stats.txt文件
4.权限问题导致

8.在Zabbix页面模板选项中导入Percona模板, 模板存放在/var/lib/zabbix/percona/templates, 最后关联主机即可。

注意:zabbix2.x和zabbix3.x所使用的模板不兼容,安装包中的模板文件为/var/lib/zabbix/percona/templates;
zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.7.xml,该模板文件仅支持zabbix2.x,zabbix3.x在导入过程中会报错;
这里提供一个链接模板:
链接:https://pan.baidu.com/s/125DpxN62_gS9jfTnY4yQCA 
提取码:kylk 

导入模板


主机链接模板

四.zabbix监控redis

Redis使用自带的INFO命令,进行状态监控。以一种易于解释且易于阅读的格式,返回关于Redis服务器的各种信息和统计数值。
环境规划地址分配


1.编写Shell脚本

脚本端口、连接redis服务地址根据具体情况进行修改
AUTH认证没有开启,将PASSWD修改为空即可。

[root@db01 /etc/zabbix/zabbix_agentd.d/scripts]# vim 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

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 作为默认参数。

2.添加脚本执行权限

[root@db01 /etc/zabbix/zabbix_agentd.d/scripts]# chmod +x redis_status.sh

3.zabbix-agent客户端添加配置文件redis_status.conf

[root@db01 /etc/zabbix/zabbix_agentd.d]# vim redis_status.conf
UserParameter=redis_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/scriptis/redis_status.sh "$1"

4.监控redis服务端口zabbix-agent添加配置文件

[root@db01 /etc/zabbix/zabbix_agentd.d]# vim net.tcp.port.conf
UserParameter=net_port[*],netstat -lntu|grep -w tcp|grep -wc "$1"

5.重启zabbix

[root@db01 /etc/zabbix/zabbix_agentd.d]# systemctl restart zabbix-agent.service

6.zabbix-server测试取值

[root@zabbix ~]# zabbix_get -s 172.16.1.151 -k redis_status[used_cpu_sys]
0.82

7.Zabbix权限不足处理办法

[root@db01 ~]# rm -f /tmp/redis_6379.tmp

8.zabbix_web界面配置监控


五.zabbix监控JVM

环境规划与地址分配


在zabbix中,JMX监控数据的获取由专门的代理程序来实习实现,即zabbix-java-gateway来负责数据的采集,zabbix-java-gateway和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进行数据展示

配置JMV监控参数

1.安装Zabbix-Java-Gateway。
2.配置zabbix_java_gateway.conf参数。
3.配置zabbix-server.conf参数。
4.Tomcat应用开启JMX协议。
5.ZabbixWeb配置JMX监控的Java应用。

1.安装java以及zabbix-java-gateway(如果源码安装加上--enable-java参数)

#安装JDK
[root@zabbix ~]# yum -y localinstall jdk-8u211-linux-x64.rpm
#安装zabbix-java-gateway
[root@zabbix ~]# yum -y install zabbix-java-gateway

2.配置zabbix-java-gateway

[root@zabbix ~]# vim /etc/zabbix/zabbix_java_gateway.conf
START_POLLERS=5

3.启动zabbix-java-gateway并设置开机自启动

[root@zabbix ~]# systemctl start zabbix-java-gateway.service
[root@zabbix ~]# systemctl enable zabbix-java-gateway.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-java-gateway.service to /usr/lib/systemd/system/zabbix-java-gateway.service.
#默认使用端口10052
[root@zabbix ~]# netstat -lntp|grep 10052
tcp6       0      0 :::10052                :::*                    LIST

4.修改zabbix-server配置文件

[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
#java gateway地址
JavaGateway=127.0.0.1
#java gateway默认端口10052
JavaGatewayPort=10052
#启动进程轮询java gateway
StartJavaPollers=5

5.重启zabbix-server

[root@zabbix ~]# systemctl restart zabbix-server.service

6.开启tomcat的远程jvm配置文件

[root@linux-node1 ~]# 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=172.16.1.7"


#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=172.16.1.7"

7.重启tomcat服务

[root@web01 ~]# systemctl restart tomcat.service

8.zabbix添加tomcat主机,并添加zabbix自带java模板


六.zabbix监控MySQL多实例

zabbix低级自动发现来实现
1.下载mariadb

[root@web02 ~]# yum install mariadb-server 
[root@web02 ~]# systemctl start mariadb

2.设置配置文件

[root@web02 ~]# cat >/etc/my3307.cnf<<EOF    
[mysqld]
datadir=/data/3307/
socket=/data/3307/mysql.sock
port=3307
user=mysql
symbolic-links=0
[mysqld_safe]
log-error=/data/3307/mysqld.log
pid-file=/data/3307/mysqld.pid
EOF

3.拷贝配置文件

[root@web02 ~]# cp /etc/my3307.cnf /etc/my3308.cnf
[root@web02 ~]# sed -i 's#3307#3308#g' /etc/my3308.cnf

4.创建数据目录

[root@web02 ~]# mkdir /data/{3307,3308} -p
[root@web02 ~]# chown -R mysql:mysql /data/330*

5.初始化数据库

[root@web02 ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf --force
[root@web02 ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf --force

6.启动数据库

[root@web02 ~]# mysqld_safe --defaults-file=/etc/my3307.cnf &
[root@web02 ~]# mysqld_safe --defaults-file=/etc/my3308.cnf &

7.检测端口

[root@web02 ~]# netstat -lntp|grep mysql
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      51418/mysqld        
tcp        0      0 0.0.0.0:3307            0.0.0.0:*               LISTEN      51786/mysqld        
tcp        0      0 0.0.0.0:3308            0.0.0.0:*               LISTEN      52373

8.创建自动发现多实例脚本
说明:低级自动发现需要获取的值为json

[root@web02 ~]# vim /etc/zabbix/zabbix_agentd.d/mysql_discovery.sh 
#!/bin/bash 
#mysql low-level discovery 
res=$(netstat -lntp|awk -F "[ :\t]+" '/mysqld/{print$5}')
port=($res)
printf '{'
printf '"data":['
for key in ${!port[@]}
do
        if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
                printf '{'
                printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"},"
        else [[ "${key}" -eq "((${#port[@]}-1))" ]]
                printf '{'
                printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"}"
        fi
done
printf ']'
printf '}\n'

9.创建自从发现配置文件

[root@web02 ~]# vim /etc/zabbix/zabbix_agentd.d/mysql_discovery.conf
UserParameter=mysql.discovery,/bin/bash /etc/zabbix/zabbix_agentd.d/mysql_discovery.sh

10.重启zabbix-agent

[root@web02 ~]# systemctl restart zabbix-agent.service

11.zabbix-agent测试key

[root@web02 ~]# zabbix_agentd -p|grep mysql.discovery
mysql.discovery                               [t|{"data":[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}]

12.zabbix-server测试去key

[root@zabbix ~]# zabbix_get -s 172.16.1.8 -k mysql.discovery
{"data":[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}

13.zabbix-web 界面设置



相关文章

网友评论

      本文标题:zabbix应用服务监控

      本文链接:https://www.haomeiwen.com/subject/wlbgnctx.html