zabbix监控nginx、PHP状态

目录

一、Zabbix监控Nginx

1.1 实验环境

服务器系统 角色 IP
CentOS 7.6 x86_64 Zabbix-Server 172.16.1.71
CentOS 7.6 x86_64 Zabbix-Agent 172.16.1.7

1.2.在nginx.confServer标签下添加如下内容

[root@web01 conf.d]# cat status.oldxu.com.conf 
server {
	listen 80;
	server_name status.oldxu.com;
	
	location /nginx_status {
		stub_status;
		access_log off;
		allow 127.0.0.1;
		deny all;
	}
}

1.3.本地访问Nginx Status

[root@web01 conf.d]# curl http://127.0.0.1/nginx_status
Active connections: 1
server accepts handled requests
 1 1 1
Reading: 0 Writing: 1 Waiting: 0

1.4.编写Nginx的Shell脚本(如果端口不一致,只需要修改脚本端口即可)

[root@web01 conf.d]# cd /etc/zabbix/zabbix_agentd.d/scripts
[root@web01 scripts]# cat nginx_status.sh 
#!/bin/bash
Nginx_status_file=/tmp/nginx_status.tmp
Nginx_status_name=status.oldxu.com
curl -sH host:${Nginx_status_name} http://127.0.0.1:80/nginx_status > ${Nginx_status_file}

case $1 in
	active)
		echo $[ $(awk 'NR==1 {print $NF}' ${Nginx_status_file}) -1 ]
		;;
	accepts)
		echo $[ $(awk 'NR==3 {print $1}' ${Nginx_status_file}) - 1 ]
		;;
	handled)
		echo $[ $(awk 'NR==3 {print $2}' ${Nginx_status_file}) - 1 ]
		;;
	requests)
		echo $[ $(awk 'NR==3 {print $3}' ${Nginx_status_file}) - 1 ]
		;;
	reading)
		awk 'NR==4 {print $2}' ${Nginx_status_file}
		;;
	writing)
		awk 'NR==4 {print $4}' ${Nginx_status_file}
		;;
	waiting)
		awk 'NR==4 {print $NF}' ${Nginx_status_file}
		;;
	*)
		echo "USAGE: $0 [active|accepts|handled|requests|reading|writing|waiting]"
		;;
esac


1.5.给脚本添加执行权限

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

1.6.监控项nginx_status.conf的配置文件如下:

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

1.7.重启zabbix-agent

[root@web01 scripts]# systemctl restart  zabbix-agent

1.8.使用Zabbix_get来获取值

[root@zabbix ~]# zabbix_get -s 192.168.90.11 -k nginx_status[writing]
1

1.9.添加所有监控项, 如图4-3, 记得关联到指定的主机

img

回到顶部(go to top)

实践:监控日志文件的状态码

在agent(10.0.0.7)编写如下执行脚本
[root@web01 ~]# cd /etc/zabbix/zabbix_agentd.d/scipts
[root@web01 scripts]# cat nginx_log.sh 
#!/bin/bash
Access=/tmp/access.log
awk '{print $9}' ${Access} |grep "$1" |wc -l


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

登录server测试访问,登录zabbix   创建模板-->添加主机--->添加监控项--->创建---->...

二、Zabbix监控PHP

2.1.实践环境

服务器系统 角色 IP
CentOS 7.6 x86_64 Zabbix-Server 172.16.1.71
CentOS 7.6 x86_64 Zabbix-Agent 172.16.1.7

2.2.PHP-FPM工作模式通常与Nginx结合使用,修改php-fpm.conf

[root@web01 conf.d]# cat /etc/php-fpm.d/www.conf 
[www]
user = www
group = www
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
pm.status_path = /fpm_status       ###添加这一句路径
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache

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

[root@web01 conf.d]# cat phpstatus.oldxu.com.conf 
server {
	listen 80;
	server_name phpstatus.oldxu.com;
	
	location /fpm_status {
       		 fastcgi_pass    127.0.0.1:9000;
       		 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
}
}


重启nginx
重启php

2.4.访问测试phpfpm_status

[root@web01 conf.d]# curl -H Host:phpstatus.oldxu.com http://127.0.0.1/fpm_status
pool:                 www
process manager:      dynamic
start time:           20/Nov/2019:16:30:45 +0800
start since:          220
accepted conn:        2
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,那说明你的最大进程数量过小,可以适当调整。

2.5.编写php-fpmShell脚本(如果端口不一致,只需要修改脚本端口即可)

[root@Agent ~]# cd /etc/zabbix/scripts
[root@web01 scripts]# cat fpm_status.sh 
#!/usr/bin/bash

fpm_status_file=/tmp/fpm_status.tmp
fpm_status_name=phpstatus.oldxu.com
fpm_status_path=/fpm_status

curl -sH host:${fpm_status_name} http://127.0.0.1:80${fpm_status_path} > ${fpm_status_file}

case $1 in
	accepted_conn)
		awk '/accepted conn:/{print $NF}' ${fpm_status_file}
		;;
	listen_queue)
		awk '/^listen queue:/{print $NF}' ${fpm_status_file}
		;;
	max_listen_queue)
		awk '/^max listen queue:/{print $NF}' ${fpm_status_file}
		;;
	active_processes)
		awk '/^active processes:/{print $NF}' ${fpm_status_file}
		;;
	idle_processes)
		awk '/^idle processes:/{print $NF}' ${fpm_status_file}
		;;
	total_processes)
		awk '/^total processes:/{print $NF}' ${fpm_status_file}
		;;
	max_active_processes)
		awk '/^max active processes:/{print $NF}' ${fpm_status_file}
		;;
	max_children_reached)
		awk '/^max children reached:/{print $NF}' ${fpm_status_file}
		;;
	*)
		echo "USAGE: $0 [accepted_conn|listen_queue|max_listen_queue|active_processes|idle_processes|total_processes|max_active_processes|max_children_reached]"
		;;
esac

2.6.给脚本添加执行权限

[root@Agent scripts]# chmod +x phpfpm_status.sh

2.7.监控项的phpfpm_status.conf配置文件如下:

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

2.8.重启zabbix-agent

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

2.9.Server使用zabbix_get命令来获取Agent端的值

[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k fpm.status[listen_queue]
0


错误:解决 
[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k fpm.status[listen_queue]
/etc/zabbix/zabbix_agentd.d/scripts/fpm_status.sh: line 7: /tmp/fpm_status.tmp: Permission denied
0

####如出现权限拒绝请进入/tmp删除
[root@web01 tmp]# rm -rf fpm_status.tmp 

2.10.添加所有监控项, 如下图4-5, 最后记得关联至对应主机

4-5

2.11.查看图形,如图4-4(图形自定义)

4-6

回到顶部(go to top)

zabbix监控mysql

Mysql的基础监控
	1.进程存活
	2.检测端口

Mysql的高级监控说明
	Mysql提供show global status可以实现对Mysql的高级监控
	高级监控包含监控Mysql连接数,增删改查数,流量等
	
	
其他的监控mysql的方式
	天兔		(文档)
	percona		(视频)

监控命令详解mysql -uroot -poldxu.com -e 'show global status'
	Threads_connected:连接数
	Com_select:查询总量
	Com_insert:插入总量
	Com_update:更新总量
	Com_delete:删除总量
	Bytes_received: 流入总流量
	Bytes_sent:流出总流量
	Slow_queries:慢查询总量


1.编写取值脚本check_mysql.sh
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/scripts/mysql_status.sh
#!/usr/bin/bash

port=$1
key=$2
mysql -uroot -poldxu.com -P${port} -e "show global status" |grep "${key}\s" |awk '{print $2}'


2.测试监控Shell脚本
[root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_status.sh 3306 Threads_connected

3.Zabbix自定义监控项
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql.conf
UserParameter=mysql.status[*], /bin/bash /etc/zabbix/zabbix_agentd.d/scripts/mysql_status.sh  "$1" "$2" 2>/dev/null

[root@web01 ~]# systemctl restart zabbix-agent.server
	
4测试能否获取到值
	zabbix_get -s xxx -k mysql.status[3306,Threads_connected]
	zabbix_get -s xxx -k mysql.status[3306,Com_insert]


5.使用Template DB MySQL模板监控Mysql   	利用自带的模板改一改
	mysql.status[3306,Threads_connected]
	mysql.status[3306,Com_select]
	mysql.status[3306,Bytes_received]
	mysql.status[3306,Bytes_sent]


写一个测试的程序测一下
[root@web01 ~]# cat mysql.sh 
for i in {1..1000}
do
mysql -uroot -poldxu.com -h 127.0.0.1 -e "create database IF NOT EXISTS db;
	use db;
	DROP TABLE IF EXISTS test${i};
	create table test${i}(id int);
	insert into db.test${i} values (123456);
	select * from db.test${i};
	delete from test${i} where id=123456;"
done

三、Zabbix监控MySQL(主从)

percona工具集

实践环境

服务器系统 角色 IP
CentOS 7.6 x86_64 Zabbix-Server 172.16.1.71
CentOS 7.6 x86_64 Zabbix-Agent 172.16.1.7
监控命令详解mysql -uroot -poldxu.com -e 'show global status'
	Threads_connected:连接数
	Com_select:查询总量
	Com_insert:插入总量
	Com_update:更新总量
	Com_delete:删除总量
	Bytes_received: 流入总流量
	Bytes_sent:流出总流量
	Slow_queries:慢查询总量
[root@web01 ~]# yum install mariadb mariadb-server -y
[root@web01 ~]# systemctl start mariadb.service 
[root@web01 ~]# systemctl enable mariadb.service 


手动实现主从*** 修改my.conf文件 在 /etc/my.cnf文件中的[mysqld]下面添加
#### 主服务器配置  10.0.0.51
#启用二进制
log-bin=mysql-bin
#服务器唯一id,一般取IP最后一段
server-id=51
[root@mysql ~]# systemctl restart mariadb
建立账号并授权slave
[root@mysql ~]# mysql -uroot -poldxu.com
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 22
Server version: 5.5.64-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>  MariaDB [(none)]> grant replication slave, replication client on *.* to 'rep'@'%' identified by 'Rep123.com';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>  GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'root'@'%' identified by '123456'; 
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>  FLUSH PRIVILEGES; 
Query OK, 0 rows affected (0.00 sec)


###一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP 代替,如172.16.1.52,加强安全。
MariaDB [(none)]>  show master status; 
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000015 |   130708 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> Ctrl-C -- exit!
Aborted
[root@mysql ~]# 

####----->   从服务器配置   <-----#####
修改my.conf文件 在 /etc/my.cnf文件中的[mysqld]下面添加
[root@web01 ~]# vim /etc/my.cnf
[mysqld]
server-id=52
[root@web01 ~]# mysql -uroot -poldxu.com < db-2019-11-20-all.sql 
[root@web01 ~]# mysql -uroot -poldxu.com
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 5.5.64-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> change master to
    -> master_host='172.16.1.51',
    -> master_user='rep',
    -> master_password='Rep123.com';
Query OK, 0 rows affected (0.02 sec)

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Queueing master event to the relay log
                  Master_Host: 172.16.1.51
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000015
          Read_Master_Log_Pos: 109269
               Relay_Log_File: mariadb-relay-bin.000003
                Relay_Log_Pos: 529
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: No
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 1007
                   Last_Error: Error 'Can't create database 'qizhong'; database exists' on query. Default database: 'qizhong'. Query: 'create database qizhong'
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 245
              Relay_Log_Space: 49381174
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 1007
               Last_SQL_Error: Error 'Can't create database 'qizhong'; database exists' on query. Default database: 'qizhong'. Query: 'create database qizhong'
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 51
1 row in set (0.15 sec)

ERROR: No query specified

编写脚本

1.监控Mysql主从的Shell脚本mysql_slave_status.sh
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh
#!/usr/bin/bash
port=$1
key=$2
mysql -uroot -poldxu.com -P${port} -e "show slave status\G"|grep "${key}\:"|awk '{print $2}' 2>/dev/null


2.Shell脚本测试
[root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh 3306 Slave_SQL_Running
Yes
[root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh 3306 Slave_IO_Running
Yes
[root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh 3306 Seconds_Behind_Master
0


3.Zabbix自定义Key监控Mysql主从
[root@web01 ~]# cat  /etc/zabbix/zabbix_agentd.d/mysql.conf 
UserParameter=mysql.slave.status[*], /bin/bash /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh "$1" "$2" 2>/dev/null
	
[root@web01 scripts]# systemctl restart zabbix-agent.service 

回到顶部(go to top)

四、Zabbix监控Redis

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

实践环境

服务器系统 角色 IP
CentOS 7.6 x86_64 Zabbix-Server 172.16.1.71
CentOS 7.6 x86_64 Zabbix-Agent 172.16.1.7

4.1.编写Shell脚本

  • 脚本端口、连接redis服务地址根据具体情况进行修改
  • AUTH认证没有开启,将PASSWD修改为空即可。
[root@web01 ~]# yum install redis -y
[root@web01 ~]# systemctl start redis
[root@web01 ~]# systemctl enable redis

[root@web01 scripts]# cd /etc/zabbix/scripts/
[root@web01 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

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

4.3.添加脚本执行权限

[root@web01 scripts]# chmod +x /etc/zabbix/scripts/redis_status.sh

4.4.Zabbix权限不足处理办法

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

4.5.key的redis_status.conf的配置文件如下:

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

4.6.重启zabbix-agent

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

4.7.在Zabbix-Server使用Zabbix_get获取值

[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k redis_status[used_cpu_sys]
0.79

4.8.展示所有Key(记得将模板关联主机)如图4-14

4-14

图4-14

4.9.查看图形,如图4-15、图4-16(图形自定义)

4-15

图4-15

zabbix监控snmp

snmp服务端安装
### 10.0.0.8
1.安装
	[root@web02 ~]# yum install net-snmp -y

2.配置
	[root@web02 ~]# vim /etc/snmp/snmpd.conf
	#public是默认密码,建议修改
	com2sec notConfigUser  default		oldxu

	#限制丛树杈哪个地方开始取值,如果需要监控的信息,设置.1从顶点开始
	view    systemview    included   .1    ###必须修改

3.启动
	[root@web02 ~]# systemctl enable snmpd.service 
	[root@web02 ~]# systemctl start snmpd


4.客户端安装命令测试取值   10.0.0.71
	# yum install net-snmp-utils -y
	# snmpwalk -v2c -c oldxu 172.16.1.8 .1.3.6.1.2.1.25.2.2.0		#OID方式
	# snmpwalk -v2c -c oldxu 172.16.1.8 hrMemorySize.0				#MIB方式

5.在zabbix-web界面直接添加即可

总结:

1574300995015

回到顶部(go to top)

五、Zabbix监控JVM

在Zabbix中,JMX监控数据的获取由专门的代理程序来实现,即Zabbix-Java-Gateway来负责数据的采集,Zabbix-Java-Gateway和JMX的Java程序之间通信获取数据

5.1JMX在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进行数据展示

5.2配置JMX监控的步骤:

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

实践环境

服务器系统 角色 IP
CentOS 7.6 x86_64 Zabbix-Server 172.16.1.71
CentOS 7.6 x86_64 Zabbix-Agent 172.16.1.8

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

//安装java-gateway
[root@linux-node1 ~]# yum install  zabbix-java-gateway java-1.8.0-openjdk -y

5.2.2.配置zabbix-java-gateway

vim /etc/zabbix/zabbix_java_gateway.conf

5.2.3.启动zabbix-java-gateway

10.0.0.8
[root@linux-node1 ~]# systemctl start zabbix-java-gateway
[root@linux-node1 ~]# netstat -lntup|grep 10052
tcp6       0      0 :::10052                :::*                    LISTEN      13042/java

5.2.4.修改zabbix-server 配置文件

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

5.2.5.重启zabbix-server

[root@linux-node1 ~]# systemctl restart zabbix-server

5.2.6.安装tomcat服务

10.0.0.7安装

mkdir /soft/package/src -p
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.2/bin/apache-tomcat-9.0.2.tar.gz
tar xf apache-tomcat-9.0.2.tar.gz -C /soft/
ln -s /soft/apache-tomcat-9.0.2/ /soft/tomcat

5.2.7.开启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=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"

5.2.8.重启tomcat服务

[root@linux-node1 ~]# /usr/local/tomcat/bin/shutdown.sh
[root@linux-node1 ~]# /usr/local/tomcat/bin/startup.sh

5.2.9.zabbix添加tomcat主机,并添加Zabbix自带java监控模板,如图4-10、图4-11、图4-12

img

图4-10

图4-11

图4-12

5.2.10.查看图形,如图4-13

img

图4-13

5.2.11.自带的监控可能无法满足企业需求,大家可以根据公司的业务定制不同的JVM监控模板。

回到顶部(go to top)

六、Zbbix阶段小结

zabbix监控基础架构回顾
Zabbix监控方式(agent、snmp、ipmi、ssh、telnet)
Zabbix资源回顾(基于监控项基础的所有资源)

img

img

posted @ 2019-12-01 15:10  老王教你学Linux  阅读(331)  评论(0编辑  收藏  举报