如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis-創(chuàng)新互聯(lián)

這篇文章給大家分享的是用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis,相信大部分人都還沒學(xué)會這個技能,為了讓大家學(xué)會,給大家總結(jié)了以下內(nèi)容,話不多說,一起往下看吧。

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供滎經(jīng)網(wǎng)站建設(shè)、滎經(jīng)做網(wǎng)站、滎經(jīng)網(wǎng)站設(shè)計、滎經(jīng)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、滎經(jīng)企業(yè)網(wǎng)站模板建站服務(wù),十多年滎經(jīng)做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

一、Zabbix監(jiān)控PHP-FPM應(yīng)用實戰(zhàn)

Nginx+PHP-FPM是目前最流行的LNMP架構(gòu),在基于PHP開發(fā)的系統(tǒng)下,對這些系統(tǒng)性能的監(jiān)控,主要是關(guān)注PHP-FPM的運行狀態(tài),那么什么是PHP-FPM呢?PHP-FPM是一個PHP FastCGI管理器,它提供了更好的PHP進程管理方式,可以有效控制內(nèi)存和進程、可以平滑重載PHP配置,對于ZPHP5.3.3之前的PHP來說,它是一個補丁包,而從PHP5.3.3版本開始,PHP內(nèi)部已經(jīng)集成了php-fpm模塊,意味著被PHP官方收錄了。在編譯PHP時需指定參數(shù)“--enable-fpm”來開啟PHP-FPM。

1)啟用php-fpm狀態(tài)功能

操作如下:

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 文件中修改的參數(shù):
1)user和group:用于設(shè)置運行phpf-pm進程的用戶及用戶組;
2)listen:是配置php-fpm進程監(jiān)聽的IP地址及端口,默認是127.0.0.1:9000;
3)pm:指定php-fpm進程池開啟進程的方式,有兩個值可供選擇,分別是static(靜態(tài))和dynamic(動態(tài))
dynamic(動態(tài)):表示php-fpm進程數(shù)是動態(tài)的,最開始是php.start_servers指定的數(shù)量,如果請求較多,則會自動增加,保證空閑的進程數(shù)不小于pm.min_spare_servers,如果進程較多,也會進行相應(yīng)清理,保證空閑的進程數(shù)不多與pm.max_spare_servers;
static(靜態(tài)):表示php-fpm進程數(shù)是靜態(tài)的,進程數(shù)自始至終都是pm.max_children指定的數(shù)量,不在增加或減少;
4)pm.max_children = 300:在static方式下表示固定開啟的php-fpm進程數(shù)量,在dynamic方式下表示開啟php-fpm的大進程數(shù);
5)pm.start_servers = 20:表示在dynamic方式下初始開啟php-fpm進程數(shù)量;
6)pm.min_spare_servers = 5:表示在dynamic方式空閑狀態(tài)下開啟的最小php-fpm進程數(shù)量;
7)pm.max_spare_servers = 35:表示在dynamic方式空閑狀態(tài)下開啟的大php-fpm進程數(shù)量,這里需注意pm.max_spare_servers的值只能小于等于pm.max_children的值;
8)pm.status_path = /status:表示配置php-fpm運行狀態(tài)頁面的路徑;

設(shè)置參數(shù)時,需注意:如果pm為static,那么其實只有pm.max_children這個參數(shù)生效,系統(tǒng)會開啟設(shè)置數(shù)量的php-fpm進程。如果pm為dynamic,系統(tǒng)會在php-fpm運行開始的時候啟動pm.start_servers個php-fpm進程,然后根據(jù)系統(tǒng)的需求動態(tài)地在pm.min_spare_servers和pm.max_spare_servers之間調(diào)整php-fpm進程數(shù),大不超過pm.max_children設(shè)置的進程數(shù)。

個人建議:內(nèi)存充足(16G以上)的服務(wù)器,推薦使用static方式,內(nèi)存較小(16G以下)的服務(wù)器,推薦使用dynamic方式。

2)nginx配置php-fpm狀態(tài)頁面

開啟php-fpm的狀態(tài)監(jiān)控頁面后,還需在nginx配置文件添加location規(guī)則來實現(xiàn)。如下:

[root@agent ~]# vim /usr/local/nginx/conf/nginx.conf
//添加以下location規(guī)則
     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頁面狀態(tài)

php-fpm狀態(tài)頁面比較個性化的一個地方就是它可以自帶參數(shù),可以帶的參數(shù)有:json、xml、htm,使用zabbix或nagios監(jiān)控可以考慮使用xml或默認方式。

[root@agent ~]# curl http://127.0.0.1/status
//查看php-fpm狀態(tài)頁面信息(默認輸出方式)
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格式顯示

輸出參數(shù)的含義:
1)pool:php-fpm pool(資源池)的名稱,大多數(shù)情況下為www;
2)process manager:進程管理方式,現(xiàn)今大多都為dynamic,不要使用static;
3)start time:上次啟動的時間;
4)start since: 已運行了多少秒;
5)accepted conn   pool:接收到的請求數(shù);
6)listen queue:處于等待狀態(tài)中的連接數(shù),如果不為0,需要增加php-fpm進程數(shù);
7)max listen queue:從php-fpm啟動到現(xiàn)在處于等待連接的大數(shù)量;
8)listen queue len:處于等待連接隊列的套接字大小;
9)idle processes:處于空閑狀態(tài)的進程數(shù);
10)active processes:處于活動狀態(tài)的進程數(shù);
11)total processess:進程總數(shù);
12)max active process:從php-fpm啟動到現(xiàn)在最多有幾個進程處于活動狀態(tài);
13)max children reached:當(dāng)php-fpm試圖啟動更多的children進程時,卻達到了進程數(shù)的限制,達到一次記錄一次,如果不為0,需要增加php-fpm pool進程的大數(shù);
14)slow requests:當(dāng)啟用了php-fpm slow-log功能時,如果出現(xiàn)php-fpm慢請求這個計數(shù)器會增加,一般不當(dāng)?shù)腗ysql查詢會觸發(fā)這個值;

4)在zabbix agent端添加自定義監(jiān)控

監(jiān)控php-fpm狀態(tài),非常簡單,無需單獨編寫腳本,一條命令即可搞定,如下:

[root@agent ~]# /usr/bin/curl -s "http://127.0.0.1/status?xml" | grep "<accepted-conn>" | awk -F'>'awk -F'<|>' '{print $3}'
17
[root@agent ~]# /usr/bin/curl -s "http://127.0.0.1/status?xml" | grep "<process-manager>" | awk -F'>'awk -F'<|>' '{print $3}'
dynamic
[root@agent ~]# /usr/bin/curl -s "http://127.0.0.1/status?xml" | grep "<active-processes>" | awk -F'>'awk -F'<|>' '{print $3}'
1
//只要將grep命令后的過濾值當(dāng)作變量,這樣就可以獲取任意值
[root@agent ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_phpfpm.conf
//編寫phpfpm的模板文件,用于調(diào)取phpfpm的監(jiān)控腳本
UserParameter=php-fpm.status[*],/usr/bin/curl -s "http://127.0.0.1/status?xml" | grep "<$1>" | awk -F'>'awk -F'<|>' '{print $$3}'
//注意這個自定義監(jiān)控項,定義了”php-fpm.status[*]“,這個“[*]”就是“$1”提供的值,$1為輸入值,例如輸入accepted-conn,那么監(jiān)控項的鍵值就是php-fpm.status[accepted-conn]。另外,最后那個“$$3”是因為命令組合在變量中,所以要使用“$$”,不然無法獲取數(shù)據(jù)
[root@agent ~]# systemctl restart php-fpm

5)zabbix圖形界面導(dǎo)入模板

zabbix默認并沒有自帶php-fpm的監(jiān)控模板就,需要自己編寫,這里我們直接下載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監(jiān)控PHP-FPM、Tomcat以及Redis
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis

6)查看php-fpm狀態(tài)數(shù)據(jù)

如圖:
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis
從圖中可以看出已經(jīng)獲取到數(shù)據(jù)!

配置php-fpm監(jiān)控完成!

二、zabbix監(jiān)控tomcat應(yīng)用實戰(zhàn)

對于使用tomcat的一些java類應(yīng)用,在應(yīng)用系統(tǒng)異常時,我們需要了解tomcat以及JVM的運行狀態(tài),以判斷是程序還是系統(tǒng)資源出現(xiàn)了問題,此時,對tomcat的監(jiān)控就顯得尤為重要。下面詳細介紹下如何通過zabbix監(jiān)控tomcat實例的運行狀態(tài)。

zabbix監(jiān)控tomcat,選需要在zabbix server上開啟java poller,還需要開啟zabbix_java進程,開啟zabbix_java后,其實相當(dāng)于開啟了一個JavaGateway,端口為10052,最后,還需在Tomcat服務(wù)器上開啟8888端口,提供數(shù)據(jù)輸出。

因此,zabbix監(jiān)控tomcat數(shù)據(jù)獲取流程,如圖:
如何用Zabbix監(jiān)控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 
//必須保證內(nèi)容插入到以下位置(兩個#號中)
# ----- 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
//添加的內(nèi)容中:IP為Tomcat本機的IP,端口“8888”可以自定義,不要沖突即可!
[root@agent ~]# /usr/local/tomcat/bin/startup.sh    //啟動tomcat服務(wù)
[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監(jiān)控tomcat,就需要開啟zabbix監(jiān)控java的專用服務(wù)zabbix-java。

注意,在啟用java監(jiān)控支持之前,zabbix server服務(wù)器上需安裝JDK,并需要設(shè)置JAVA_HOME,便于系統(tǒng)能夠識別到j(luò)dk的路徑。

在zabbix server服務(wù)器上,編譯安裝zabbix server,需添加“--enable-java”,以支持jmx監(jiān)控,如果之前的zabbix  server在編譯時沒有添加此選項,那么就需要重新編譯安裝,編譯的參數(shù)如下:

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

如果不想重新編譯,也可下載對應(yīng)的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
//修改以下內(nèi)容
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5
[root@zabbix ~]# /etc/init.d/zabbix_server restart

3)Zabbix web頁面配置JMX監(jiān)控

zabbix默認自帶了tomcat的監(jiān)控模板,但是自帶的模板默認有點問題,推薦使用以下地址下載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的監(jiān)控模板文件

接下來就開始導(dǎo)入模板,如圖:
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis

4)查看tomcat監(jiān)控狀態(tài)

如圖:
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis
從圖中可以看出已經(jīng)獲取到數(shù)據(jù)!

配置tomcat監(jiān)控完成!

三、zabbix監(jiān)控Redis實例應(yīng)用實戰(zhàn)

redis有自帶的redis-cli客戶端,通過redis的info命令就可以查詢到redis的運行狀態(tài),那么zabbix對redis的監(jiān)控就是通過客戶端redis-cli登錄到redis,然后根據(jù)info命令去獲取狀態(tài)數(shù)據(jù)的,根據(jù)這個思路,我們可以編寫一個腳本,然后由zabbix調(diào)用這個腳本,這樣就實現(xiàn)了對redis的監(jiān)控。

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的當(dāng)前情況,可以通過reids-cli工具登錄到redis命令行,然后通過info命令查看。

redis-cli命令格式:

redis-cli -h [hostname或ip] -p [port] -a [password] info [參數(shù)]

常用的、可選的參數(shù)有:
1)server:redis服務(wù)器相關(guān)的通用信息;
2)clients:客戶端連接的相關(guān)信息;
3)memory:內(nèi)存消耗的相關(guān)信息;
4)persistence:RDB和AOF的相關(guān)信息;
5)stats:通用統(tǒng)計數(shù)據(jù);
6)replication:主從復(fù)制的相關(guān)信息;
7)cpu:CPU消耗的統(tǒng)計數(shù)據(jù);
8)commandstas:redis命令的統(tǒng)計數(shù)據(jù);
9)cluster:redis集群的相關(guān)信息;
10)keyspace:數(shù)據(jù)庫相關(guān)的統(tǒng)計信息;
11)all:返回所有的服務(wù)器信息;
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服務(wù)器的版本信息;
2)redis_git_sha1:Git SHA1;
3)redis_git_dirty:Git dirty flag;
4)os:redis服務(wù)器的宿主機操作系統(tǒng);
5)arch_bits:架構(gòu)(32位或64位);
6)multiplexing_api:redis所使用的事件處理機制;
7)gcc_version:編譯reids時所使用的GCC版本;
8)process_id:服務(wù)器進程的PID;
9)run_id:redis服務(wù)器的隨機標(biāo)識符(用于Sentinel和集群);
10)tcp_port:TCP/IP監(jiān)聽端口;
11)uptime_in_seconds:自redis服務(wù)器啟動以來經(jīng)過的秒數(shù);
12)uptime_in_day:自redis服務(wù)器啟動依賴經(jīng)過的天數(shù);
13)lru_clock:以分鐘為單位進行自增的時鐘,用于LRU管理;

[root@agent ~]# redis-cli -h 127.0.0.1 -p 6379 info memory
//查詢內(nèi)存使用情況
# 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分配器分配的內(nèi)存總量,以字節(jié)為單位;
2)used_memory_human:以人類易讀的格式返回redis分配的內(nèi)存總量;
3)used_memory_rss:從操作系統(tǒng)的角度,返回redis以分配的內(nèi)存總量(俗稱常駐集大小)。這個值和top、ps等命令輸出的一致;
4)used_memory_peak:redis的內(nèi)存消耗峰值(單位為字節(jié));
5)used_memory_peak_human:以人類易懂的方式返回redis的內(nèi)存消耗峰值;
6)used_memory_lua:Lua引擎所使用的內(nèi)存大?。▎挝粸樽止?jié));
7)mem_fragmentation_ratio:used_memory_rss和used_memory之間的比率;
8)mem_allocator:在編譯時指定的,redis所使用的內(nèi)存分配器??梢詴rlibc、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:已連接客戶端的數(shù)量(不包括通過從屬服務(wù)器連接的客戶端);
2)client_recent_max_input_buffer:當(dāng)前連接的客戶端中,大輸入緩存;
3)client_recent_max_output_buffer:當(dāng)前連接的客戶端中,大輸出緩存;
4)client_recent_output_list:當(dāng)前連接的客戶端中,大的輸出列表;
5)blocked_clients:正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客戶端的數(shù)量;

[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服務(wù)器耗費的系統(tǒng)CPU;
2)used_cpu_use:redis服務(wù)器耗費的用戶CPU;
3)used_cpu_sys_children:后臺進程耗費的系統(tǒng)CPU;
4)used_cpu_user_children:后臺進程耗費的用戶CPU;

[root@agent ~]# redis-cli -h 127.0.0.1 -p 6379 info Stats
//查詢一般統(tǒng)計信息
# 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:服務(wù)器已接收的連接請求數(shù)量;
2)total_commands_processed:服務(wù)器已執(zhí)行的命令數(shù)量;
3)instantaneous_ops_per_sec:服務(wù)器每秒執(zhí)行的命令數(shù)量;
4)rejected_connections:因為大客戶端數(shù)量限制而被拒絕的連接請求數(shù)量;
5)expired_keys:因為過期而被自動刪除的數(shù)據(jù)庫鍵數(shù)量;
6)evicted_keys:因為大內(nèi)從容量限制而被去捉的鍵數(shù)量;
7)keyspace_hits:查找數(shù)據(jù)庫鍵成功的次數(shù);
8)keyspace_misses:查找數(shù)據(jù)庫鍵失敗的次數(shù);
9)pubsub_channels:目前被訂閱的頻道數(shù)量;
10)pubsub_patterns:目前被訂閱的模式數(shù)量;
11)latest_fork_usec:最近一次fork()操作耗費的毫秒數(shù);

[root@agent ~]# redis-cli -h 127.0.0.1 -p 6379 info Replication
//查詢redis主從復(fù)制信息
# 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:如果當(dāng)前服務(wù)器沒有在復(fù)制任何服務(wù)器,那么這個域的值就是master;否則,這個域的值就是slave。注意,在創(chuàng)建復(fù)制鏈時,一個從服務(wù)器也可能時另一個服務(wù)器的主服務(wù)器;
2)connected_slaves:已連接的Redis從機數(shù)量;
3)master_repl_offset:全局的復(fù)制偏移量;
4)repl_backlog_active:表示redis服務(wù)器是否為部分同步開啟復(fù)制備份日志功能的標(biāo)志;
5)repl_backlog_size:表示backlog的大小,backlog是一個緩沖區(qū),在slave端失連時存放要同步到slave的數(shù)據(jù),因此當(dāng)一個slave要重新連接時,經(jīng)常時不需要 完全同步的,執(zhí)行局部同步即可!backlog設(shè)置的越大,slave可以失聯(lián)的時間就越長;
6)repl_backlog_first_byte_offse:備份日志緩沖區(qū)的首個字節(jié)的復(fù)制偏移量;
7)repl_backlog_histlen:備份日志的實際數(shù)據(jù)長度;

3)編寫監(jiān)控redis狀態(tài)的腳本及模板

腳本代碼較多,可以使用以下方式下載:

[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:監(jiān)控redis狀態(tài)的腳本
//zbx-redis-template.xml:監(jiān)控redis狀態(tài)的模板文件
[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界面導(dǎo)入模板

如圖:
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis

6)查看redis監(jiān)控狀態(tài)

如圖:
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis
如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis
從圖中可以看出已經(jīng)獲取到數(shù)據(jù)!

配置reidst監(jiān)控完成!

以上就是用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis的具體介紹,內(nèi)容較為全面,而且我也相信有相當(dāng)?shù)囊恍┕ぞ呖赡苁俏覀內(nèi)粘9ぷ骺赡軙姷交蛴玫降?。通過這篇文章,希望你能收獲更多。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

本文題目:如何用Zabbix監(jiān)控PHP-FPM、Tomcat以及Redis-創(chuàng)新互聯(lián)
鏈接分享:http://muchs.cn/article20/dshsjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、App開發(fā)、網(wǎng)站收錄網(wǎng)頁設(shè)計公司、移動網(wǎng)站建設(shè)、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化