成都创新互联网站制作重庆分公司

如何用Zabbix监控PHP-FPM、Tomcat以及Redis-创新互联

这篇文章给大家分享的是用Zabbix监控PHP-FPM、Tomcat以及Redis,相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,话不多说,一起往下看吧。

成都创新互联专业为企业提供荥经网站建设、荥经做网站、荥经网站设计、荥经网站制作等企业网站建设、网页设计与制作、荥经企业网站模板建站服务,十多年荥经做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

一、Zabbix监控PHP-FPM应用实战

Nginx+PHP-FPM是目前最流行的LNMP架构,在基于PHP开发的系统下,对这些系统性能的监控,主要是关注PHP-FPM的运行状态,那么什么是PHP-FPM呢?PHP-FPM是一个PHP FastCGI管理器,它提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,对于ZPHP5.3.3之前的PHP来说,它是一个补丁包,而从PHP5.3.3版本开始,PHP内部已经集成了php-fpm模块,意味着被PHP官方收录了。在编译PHP时需指定参数“--enable-fpm”来开启PHP-FPM。

1)启用php-fpm状态功能

操作如下:

1)安装nginx
[root@agent ~]# yum -y install zlib pcre pcre-devel openssl openssl-devel
[root@agent ~]# wget http://nginx.org/download/nginx-1.14.1.tar.gz
[root@agent ~]# tar zxf nginx-1.14.1.tar.gz -C /usr/src
[root@agent ~]# cd /usr/src/nginx-1.14.1/
[root@agent nginx-1.14.1]#  ./configure --prefix=/usr/local/nginx --user=www --group=www \
>  --with-http_stub_status_module --with-http_ssl_module --with-pcre \
>  --with-http_gzip_static_module && make && make install
[root@agent nginx-1.14.1]#  ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
2)安装php
[root@agent ~]# yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel openldap openldap-devel
[root@agent ~]#  wget https://www.php.net/distributions/php-7.2.3.tar.gz
[root@agent ~]# useradd -s /sbin/nologin www
[root@agent ~]#  tar zxf php-7.2.3.tar.gz -C /usr/src
[root@agent ~]#  cd /usr/src/php-7.2.3/
[root@agent php-7.2.3]# ./configure --prefix=/usr/local/php7 --enable-fpm  --with-fpm-user=www --with-fpm-group=www && make && make install
[root@agent php-7.2.3]#  ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
[root@agent php-7.2.3]# cp php.ini-production /usr/local/php7/lib/php.ini
[root@agent php-7.2.3]# cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
[root@agent php-7.2.3]#  vim  /usr/local/php7/lib/php.ini 
post_max_size = 16M
max_execution_time = 300
memory_limit = 128M
max_input_time = 300
date.timezone = Asia/Shanghai
[root@agent php-7.2.3]# vim /usr/local/nginx/conf/nginx.conf
     location ~ \.php$ {
       root      html;
       fastcgi_pass  127.0.0.1:9000;
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
       include     fastcgi_params;
     }
[root@agent php-7.2.3]#  nginx -t
[root@agent php-7.2.3]# cd /usr/local/php7/etc/
[root@agent etc]# cp php-fpm.conf.default php-fpm.conf
[root@agent etc]# cp php-fpm.d/www.conf.default php-fpm.d/www.conf
[root@agent etc]# vim php-fpm.d/www.conf
[www]
user = www
group = www
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 300
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.status_path = /status
[root@agent etc]# nginx
[root@agent etc]# systemctl daemon-reload 
[root@agent etc]# systemctl start php-fpm
[root@agent etc]# ss  -lnt | grep 9000
LISTEN   0    128   127.0.0.1:9000           *:*          
[root@agent etc]# ss  -lnt | grep 80
LISTEN   0    128      *:80            *:*          
/usr/local/php7/etc/php-fpm.d/www.conf 文件中修改的参数:
1)user和group:用于设置运行phpf-pm进程的用户及用户组;
2)listen:是配置php-fpm进程监听的IP地址及端口,默认是127.0.0.1:9000;
3)pm:指定php-fpm进程池开启进程的方式,有两个值可供选择,分别是static(静态)和dynamic(动态)
dynamic(动态):表示php-fpm进程数是动态的,最开始是php.start_servers指定的数量,如果请求较多,则会自动增加,保证空闲的进程数不小于pm.min_spare_servers,如果进程较多,也会进行相应清理,保证空闲的进程数不多与pm.max_spare_servers;
static(静态):表示php-fpm进程数是静态的,进程数自始至终都是pm.max_children指定的数量,不在增加或减少;
4)pm.max_children = 300:在static方式下表示固定开启的php-fpm进程数量,在dynamic方式下表示开启php-fpm的大进程数;
5)pm.start_servers = 20:表示在dynamic方式下初始开启php-fpm进程数量;
6)pm.min_spare_servers = 5:表示在dynamic方式空闲状态下开启的最小php-fpm进程数量;
7)pm.max_spare_servers = 35:表示在dynamic方式空闲状态下开启的大php-fpm进程数量,这里需注意pm.max_spare_servers的值只能小于等于pm.max_children的值;
8)pm.status_path = /status:表示配置php-fpm运行状态页面的路径;

设置参数时,需注意:如果pm为static,那么其实只有pm.max_children这个参数生效,系统会开启设置数量的php-fpm进程。如果pm为dynamic,系统会在php-fpm运行开始的时候启动pm.start_servers个php-fpm进程,然后根据系统的需求动态地在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数,大不超过pm.max_children设置的进程数。

个人建议:内存充足(16G以上)的服务器,推荐使用static方式,内存较小(16G以下)的服务器,推荐使用dynamic方式。

2)nginx配置php-fpm状态页面

开启php-fpm的状态监控页面后,还需在nginx配置文件添加location规则来实现。如下:

[root@agent ~]# vim /usr/local/nginx/conf/nginx.conf
//添加以下location规则
     location ~^/(status)$ {
       fastcgi_pass 127.0.0.1:9000;
       fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
       include     fastcgi_params;
     }
[root@agent ~]# nginx -t
[root@agent ~]# nginx -s reload

3)php-fpm status页面状态

php-fpm状态页面比较个性化的一个地方就是它可以自带参数,可以带的参数有:json、xml、htm,使用zabbix或nagios监控可以考虑使用xml或默认方式。

[root@agent ~]# curl http://127.0.0.1/status
//查看php-fpm状态页面信息(默认输出方式)
pool:         www
process manager:    dynamic
start time:      01/Feb/2020:11:19:34 +0800
start since:      3235
accepted conn:     1
listen queue:     0
max listen queue:   0
listen queue len:   128
idle processes:    19
active processes:   1
total processes:    20
max active processes: 1
max children reached: 0
slow requests:     0
[root@agent ~]# curl http://127.0.0.1/status?xml    //以xml格式显示
[root@agent ~]# curl http://127.0.0.1/status?json   //以json格式显示

输出参数的含义:
1)pool:php-fpm pool(资源池)的名称,大多数情况下为www;
2)process manager:进程管理方式,现今大多都为dynamic,不要使用static;
3)start time:上次启动的时间;
4)start since: 已运行了多少秒;
5)accepted conn   pool:接收到的请求数;
6)listen queue:处于等待状态中的连接数,如果不为0,需要增加php-fpm进程数;
7)max listen queue:从php-fpm启动到现在处于等待连接的大数量;
8)listen queue len:处于等待连接队列的套接字大小;
9)idle processes:处于空闲状态的进程数;
10)active processes:处于活动状态的进程数;
11)total processess:进程总数;
12)max active process:从php-fpm启动到现在最多有几个进程处于活动状态;
13)max children reached:当php-fpm试图启动更多的children进程时,却达到了进程数的限制,达到一次记录一次,如果不为0,需要增加php-fpm pool进程的大数;
14)slow requests:当启用了php-fpm slow-log功能时,如果出现php-fpm慢请求这个计数器会增加,一般不当的Mysql查询会触发这个值;

4)在zabbix agent端添加自定义监控

监控php-fpm状态,非常简单,无需单独编写脚本,一条命令即可搞定,如下:

[root@agent ~]# /usr/bin/curl -s "http://127.0.0.1/status?xml" | grep "" | awk -F'>'awk -F'<|>' '{print $3}'
17
[root@agent ~]# /usr/bin/curl -s "http://127.0.0.1/status?xml" | grep "" | awk -F'>'awk -F'<|>' '{print $3}'
dynamic
[root@agent ~]# /usr/bin/curl -s "http://127.0.0.1/status?xml" | grep "" | awk -F'>'awk -F'<|>' '{print $3}'
1
//只要将grep命令后的过滤值当作变量,这样就可以获取任意值
[root@agent ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_phpfpm.conf
//编写phpfpm的模板文件,用于调取phpfpm的监控脚本
UserParameter=php-fpm.status[*],/usr/bin/curl -s "http://127.0.0.1/status?xml" | grep "<$1>" | awk -F'>'awk -F'<|>' '{print $$3}'
//注意这个自定义监控项,定义了”php-fpm.status[*]“,这个“[*]”就是“$1”提供的值,$1为输入值,例如输入accepted-conn,那么监控项的键值就是php-fpm.status[accepted-conn]。另外,最后那个“$$3”是因为命令组合在变量中,所以要使用“$$”,不然无法获取数据
[root@agent ~]# systemctl restart php-fpm

5)zabbix图形界面导入模板

zabbix默认并没有自带php-fpm的监控模板就,需要自己编写,这里我们直接下载php-fpm的模板!

[root@agent ~]# wget https://www.ixdba.net/zabbix/zbx_php-fpm_templates.zip
[root@agent ~]# unzip zbx_php-fpm_templates.zip 
[root@agent ~]# ll  zbx_php-fpm_templates.xml
-rw-r--r-- 1 root root 29138 11月  8 2018 zbx_php-fpm_templates.xml
//这个就是需要的模板

如图:
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
如何用Zabbix监控PHP-FPM、Tomcat以及Redis

6)查看php-fpm状态数据

如图:
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
从图中可以看出已经获取到数据!

配置php-fpm监控完成!

二、zabbix监控tomcat应用实战

对于使用tomcat的一些java类应用,在应用系统异常时,我们需要了解tomcat以及JVM的运行状态,以判断是程序还是系统资源出现了问题,此时,对tomcat的监控就显得尤为重要。下面详细介绍下如何通过zabbix监控tomcat实例的运行状态。

zabbix监控tomcat,选需要在zabbix server上开启java poller,还需要开启zabbix_java进程,开启zabbix_java后,其实相当于开启了一个JavaGateway,端口为10052,最后,还需在Tomcat服务器上开启8888端口,提供数据输出。

因此,zabbix监控tomcat数据获取流程,如图:
如何用Zabbix监控PHP-FPM、Tomcat以及Redis

1)安装并配置Tomcat JMX

[root@agent ~]# java -version
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
[root@agent ~]# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/apache-tomcat-8.5.50.tar.gz
[root@agent ~]# tar zxf apache-tomcat-8.5.50.tar.gz 
[root@agent ~]# mv apache-tomcat-8.5.50 /usr/local/tomcat
sed -i '308a CATALINA_OPTS=" $CATALINA_OPTS  -Dcom.sun.management.jmxremote  -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false  -Djava.rmi.server.hostname=192.168.1.8  -Dcom.sun.management.jmxremote.authenticate=flase" ' /usr/local/tomcat/bin/catalina.sh 
//必须保证内容插入到以下位置(两个#号中)
# ----- Execute The Requested Command -----------------------------------------
CATALINA_OPTS=" $CATALINA_OPTS  -Dcom.sun.management.jmxremote  -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false  -Djava.rmi.server.hostname=192.168.1.8  -Dcom.sun.management.jmxremote.authenticate=flase"

# Bugzilla 37848: only output this if we have a TTY
//添加的内容中:IP为Tomcat本机的IP,端口“8888”可以自定义,不要冲突即可!
[root@agent ~]# /usr/local/tomcat/bin/startup.sh    //启动tomcat服务
[root@agent ~]# ss -lnt | grep 8080
LISTEN   0    100     :::8080           :::*          
[root@agent ~]# ss -lnt | grep 8888
LISTEN   0    50      :::8888           :::*          

2)配置zabbix server,加入java支持

默认情况下,zabbix server一般是没有加入java支持的,所以要让zabbix监控tomcat,就需要开启zabbix监控java的专用服务zabbix-java。

注意,在启用java监控支持之前,zabbix server服务器上需安装JDK,并需要设置JAVA_HOME,便于系统能够识别到jdk的路径。

在zabbix server服务器上,编译安装zabbix server,需添加“--enable-java”,以支持jmx监控,如果之前的zabbix  server在编译时没有添加此选项,那么就需要重新编译安装,编译的参数如下:

./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy  --enable-java --with-libxml2

如果不想重新编译,也可下载对应的rpm包,本篇博文采用下载rpm的方式进行安装。

[root@zabbix ~]# wget https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-java-gateway-4.0.0-2.el7.x86_64.rpm
[root@zabbix ~]# rpm -ivh zabbix-java-gateway-4.0.0-2.el7.x86_64.rpm 
[root@zabbix ~]# /usr/sbin/zabbix_java_gateway 
[root@zabbix ~]# ss -lnt | grep 10052
LISTEN   0    50      :::10052          :::*          
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
//修改以下内容
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5
[root@zabbix ~]# /etc/init.d/zabbix_server restart

3)Zabbix web页面配置JMX监控

zabbix默认自带了tomcat的监控模板,但是自带的模板默认有点问题,推荐使用以下地址下载tomcat模板文件。

[root@zabbix ~]# wget https://www.ixdba.net/zabbix/zbx_tomcat_templates.zip
[root@zabbix ~]# unzip zbx_tomcat_templates.zip 
[root@zabbix ~]# ll zbx_tomcat_templates.xml 
-rw-r--r-- 1 root root 40030 11月  9 2018 zbx_tomcat_templates.xml
//这个就是tomcat的监控模板文件

接下来就开始导入模板,如图:
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
如何用Zabbix监控PHP-FPM、Tomcat以及Redis

4)查看tomcat监控状态

如图:
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
从图中可以看出已经获取到数据!

配置tomcat监控完成!

三、zabbix监控Redis实例应用实战

redis有自带的redis-cli客户端,通过redis的info命令就可以查询到redis的运行状态,那么zabbix对redis的监控就是通过客户端redis-cli登录到redis,然后根据info命令去获取状态数据的,根据这个思路,我们可以编写一个脚本,然后由zabbix调用这个脚本,这样就实现了对redis的监控。

1)安装redis

[root@agent ~]# wget http://download.redis.io/releases/redis-5.0.7.tar.gz
[root@agent ~]# tar zxf redis-5.0.7.tar.gz 
[root@agent ~]# cd redis-5.0.7/
[root@agent redis-5.0.7]# make && make install
[root@agent redis-5.0.7]# cd utils/
[root@agent utils]# ./install_server.sh

2)redis中info命令的使用

要获得redis的当前情况,可以通过reids-cli工具登录到redis命令行,然后通过info命令查看。

redis-cli命令格式:

redis-cli -h [hostname或ip] -p [port] -a [password] info [参数]

常用的、可选的参数有:
1)server:redis服务器相关的通用信息;
2)clients:客户端连接的相关信息;
3)memory:内存消耗的相关信息;
4)persistence:RDB和AOF的相关信息;
5)stats:通用统计数据;
6)replication:主从复制的相关信息;
7)cpu:CPU消耗的统计数据;
8)commandstas:redis命令的统计数据;
9)cluster:redis集群的相关信息;
10)keyspace:数据库相关的统计信息;
11)all:返回所有的服务器信息;
12)default:只返回默认的信息集合;

举例说明:

[root@agent ~]# redis-cli -h 127.0.0.1 -p 6379 info server
//查询redis server的信息
# Server
redis_version:5.0.7
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:97e1d29a41ca6e28
redis_mode:standalone
os:Linux 3.10.0-862.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:109646
run_id:b2c500cea4663f4c3585748ed90eb79081daefff
tcp_port:6379
uptime_in_seconds:682
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:3488956
executable:/usr/local/bin/redis-server
config_file:/etc/redis/6379.conf

输出信息各个选项的含义如下:
1)redis_version:redis服务器的版本信息;
2)redis_git_sha1:Git SHA1;
3)redis_git_dirty:Git dirty flag;
4)os:redis服务器的宿主机操作系统;
5)arch_bits:架构(32位或64位);
6)multiplexing_api:redis所使用的事件处理机制;
7)gcc_version:编译reids时所使用的GCC版本;
8)process_id:服务器进程的PID;
9)run_id:redis服务器的随机标识符(用于Sentinel和集群);
10)tcp_port:TCP/IP监听端口;
11)uptime_in_seconds:自redis服务器启动以来经过的秒数;
12)uptime_in_day:自redis服务器启动依赖经过的天数;
13)lru_clock:以分钟为单位进行自增的时钟,用于LRU管理;

[root@agent ~]# redis-cli -h 127.0.0.1 -p 6379 info memory
//查询内存使用情况
# Memory
used_memory:853304
used_memory_human:833.30K
used_memory_rss:2699264
used_memory_rss_human:2.57M
used_memory_peak:854320
used_memory_peak_human:834.30K
used_memory_peak_perc:99.88%
used_memory_overhead:841078
used_memory_startup:791384
used_memory_dataset:12226
used_memory_dataset_perc:19.74%
allocator_allocated:1075920
allocator_active:1413120
allocator_resident:3993600
total_system_memory:1910050816
total_system_memory_human:1.78G
used_memory_lua:37888
used_memory_lua_human:37.00K
used_memory_scripts:0
used_memory_scripts_human:0B
number_of_cached_scripts:0
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
allocator_frag_ratio:1.31
allocator_frag_bytes:337200
allocator_rss_ratio:2.83
allocator_rss_bytes:2580480
rss_overhead_ratio:0.68
rss_overhead_bytes:-1294336
mem_fragmentation_ratio:3.41
mem_fragmentation_bytes:1907864
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_clients_slaves:0
mem_clients_normal:49694
mem_aof_buffer:0
mem_allocator:jemalloc-5.1.0
active_defrag_running:0
lazyfree_pending_objects:0

输出的各个选项的含义:
1)used_memory:由redis分配器分配的内存总量,以字节为单位;
2)used_memory_human:以人类易读的格式返回redis分配的内存总量;
3)used_memory_rss:从操作系统的角度,返回redis以分配的内存总量(俗称常驻集大小)。这个值和top、ps等命令输出的一致;
4)used_memory_peak:redis的内存消耗峰值(单位为字节);
5)used_memory_peak_human:以人类易懂的方式返回redis的内存消耗峰值;
6)used_memory_lua:Lua引擎所使用的内存大小(单位为字节);
7)mem_fragmentation_ratio:used_memory_rss和used_memory之间的比率;
8)mem_allocator:在编译时指定的,redis所使用的内存分配器。可以时libc、jemalloc、tcmalloc;

[root@agent ~]# redis-cli -h 127.0.0.1 -p 6379 info clients
//查询客户端连接情况
# Clients
connected_clients:1
client_recent_max_input_buffer:0
client_recent_max_output_buffer:0
blocked_clients:0

输出的各个选项的含义:
1)connected_clients:已连接客户端的数量(不包括通过从属服务器连接的客户端);
2)client_recent_max_input_buffer:当前连接的客户端中,大输入缓存;
3)client_recent_max_output_buffer:当前连接的客户端中,大输出缓存;
4)client_recent_output_list:当前连接的客户端中,大的输出列表;
5)blocked_clients:正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量;

[root@agent ~]# redis-cli -h 127.0.0.1 -p 6379 info cpu
//查看CPU使用情况
# CPU
used_cpu_sys:1.916430
used_cpu_user:2.779592
used_cpu_sys_children:0.000000
used_cpu_user_children:0.000000

输出的各个选项的含义:
1)used_cpu_sys:redis服务器耗费的系统CPU;
2)used_cpu_use:redis服务器耗费的用户CPU;
3)used_cpu_sys_children:后台进程耗费的系统CPU;
4)used_cpu_user_children:后台进程耗费的用户CPU;

[root@agent ~]# redis-cli -h 127.0.0.1 -p 6379 info Stats
//查询一般统计信息
# Stats
total_connections_received:8
total_commands_processed:7
instantaneous_ops_per_sec:0
total_net_input_bytes:200
total_net_output_bytes:8551
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
expired_stale_perc:0.00
expired_time_cap_reached_count:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0

输出的各个选项的含义:
1)total_connections_received:服务器已接收的连接请求数量;
2)total_commands_processed:服务器已执行的命令数量;
3)instantaneous_ops_per_sec:服务器每秒执行的命令数量;
4)rejected_connections:因为大客户端数量限制而被拒绝的连接请求数量;
5)expired_keys:因为过期而被自动删除的数据库键数量;
6)evicted_keys:因为大内从容量限制而被去捉的键数量;
7)keyspace_hits:查找数据库键成功的次数;
8)keyspace_misses:查找数据库键失败的次数;
9)pubsub_channels:目前被订阅的频道数量;
10)pubsub_patterns:目前被订阅的模式数量;
11)latest_fork_usec:最近一次fork()操作耗费的毫秒数;

[root@agent ~]# redis-cli -h 127.0.0.1 -p 6379 info Replication
//查询redis主从复制信息
# Replication
role:master
connected_slaves:0
master_replid:b6c25ae1598c2460bb30e45139823e08ff5116a4
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

输出的各个选项的含义:
1)role:如果当前服务器没有在复制任何服务器,那么这个域的值就是master;否则,这个域的值就是slave。注意,在创建复制链时,一个从服务器也可能时另一个服务器的主服务器;
2)connected_slaves:已连接的Redis从机数量;
3)master_repl_offset:全局的复制偏移量;
4)repl_backlog_active:表示redis服务器是否为部分同步开启复制备份日志功能的标志;
5)repl_backlog_size:表示backlog的大小,backlog是一个缓冲区,在slave端失连时存放要同步到slave的数据,因此当一个slave要重新连接时,经常时不需要 完全同步的,执行局部同步即可!backlog设置的越大,slave可以失联的时间就越长;
6)repl_backlog_first_byte_offse:备份日志缓冲区的首个字节的复制偏移量;
7)repl_backlog_histlen:备份日志的实际数据长度;

3)编写监控redis状态的脚本及模板

脚本代码较多,可以使用以下方式下载:

[root@agent ~]# wget https://www.ixdba.net/zabbix/zbx-redis-template.zip
[root@agent ~]# unzip zbx-redis-template.zip
[root@agent ~]# ll redis_status zbx-redis-template.xml 
-rw-r--r-- 1 root root  3968 11月 11 2018 redis_status
-rw-r--r-- 1 root root 46397 11月  9 2018 zbx-redis-template.xml
//redis_status:监控redis状态的脚本
//zbx-redis-template.xml:监控redis状态的模板文件
[root@agent ~]# mkdir /etc/zabbix/shell
[root@agent ~]# mv redis_status /etc/zabbix/shell/
[root@agent ~]# chmod 755 /etc/zabbix/shell/redis_status 
[root@agent ~]# chown zabbix.zabbix /etc/zabbix/shell/redis_status 
//自行将脚本中所使用的密码字段进行删除
//更改reids-cli工具的存放路径
[root@agent ~]# /etc/zabbix/shell/redis_status used_memory
853304
//测试脚本是否可用

4)zabbix agent端修改配置

[root@agent ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_redis.conf
UserParameter=Redis.Info[*],/etc/zabbix/shell/redis_status $1 $2
UserParameter=Redis.Status,/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 ping | grep -c PONG
[root@agent ~]# systemctl restart zabbix-agent

5)zabbix web界面导入模板

如图:
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
如何用Zabbix监控PHP-FPM、Tomcat以及Redis

6)查看redis监控状态

如图:
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
如何用Zabbix监控PHP-FPM、Tomcat以及Redis
从图中可以看出已经获取到数据!

配置reidst监控完成!

以上就是用Zabbix监控PHP-FPM、Tomcat以及Redis的具体介绍,内容较为全面,而且我也相信有相当的一些工具可能是我们日常工作可能会见到或用到的。通过这篇文章,希望你能收获更多。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享题目:如何用Zabbix监控PHP-FPM、Tomcat以及Redis-创新互联
分享地址:http://cxhlcq.com/article/dshsjo.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部