zabbix实现监控Apache、Nginx、php-fpm应用的实操保姆级流程
一、zabbix实现监控Apache应用流程
1.1、检查系统是否已经安装Apache
解决OpenEuler安装httpd报Error: Transaction test error: file xxx from install conflicts with file from x错误
https://coffeemilk.blog.csdn.net/article/details/153775415?spm=1001.2014.3001.5502
1.2、下载agent2到Linux系统中安装
注意:我们在下载被监控端agent安装包的时候需要根据zabbix-server的版本来匹配下载安装,zabbix-server的版本可以在zabbix的web界面的仪表盘右侧可以查看到或者直接在安装了zabbix-server的服务器上执行【zabbix_server -V 】命令查看版本信息。
#直接使用dnf/yum方式在线安装zabbix-agent2实操流程#1-查看系统当前版本
cat /etc/os-release#2-配置zabbix的仓库源(根据系统版本选择安装对应系统版本的源)【比如我这里是almalinux9.3也支持红帽9.3】
#(注意【openEuler 22.03 (LTS-SP3)】只能安装rhel8版本的zabbix-agent2内容【wget https://repo.zabbix.com/zabbix/7.0/rhel/8/x86_64/zabbix-agent2-7.0.19-release1.el8.x86_64.rpm -c o -P /data】)
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/alma/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpmdnf clean all#3-安装zabbix-agent2(安装完成后zabbix-agent2后它的默认配置文件【zabbix_agent2.conf】是在【/etc/zabbix】目录下)
dnf install zabbix-agent2 -y
zabbix自动发现与自动注册的实操保姆级教程-CSDN博客
https://coffeemilk.blog.csdn.net/article/details/153694161?spm=1001.2014.3001.5502
1.3、配置Apache
1.3.1、开启Apache的状态页
#开启Apache的状态页实操流程#1-进入Apache的配置文件目录
cd /etc/httpd/
cd conf
vi httpd.conf#2-编辑配置文件【cd /etc/httpd/conf/httpd.conf】并在其末尾添加开启状态页的配置(注意:开启该状态页配置的内容中:Allow from 后面配置的IP地址其实只用127.0.0.1就可以了;我这里为了方便自己的本机的windows电脑192.168.1.2访问因此添加上了)
ExtendedStatus On
<location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 192.168.1.2
</location>#3-重启Apache服务让配置生效并查看状态
systemctl restart httpd
systemctl status httpd#注意:若该安装了Apache的服务器防火墙是打开的,则需要放开Apache的默认80端口才可以访问到
firewall-cmd --list-port
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-port#4-查看Apache的状态页信息是否正常显示(安装Apache服务器的IP/server-status)【ip a】可以查看服务器ip地址信息
#显示Apache的固定信息
http://192.168.1.10/server-status
#显示Apache的动态信息
http://192.168.1.10/server-status?auto






1.3.2、apache监控指标解析并压测
| 序号 | apache的监控指标 | 说明 |
| 1 | Load1 | 每分钟的负载 |
| 2 | Load5 | 每5分钟的负载 |
| 3 | Load15 | 每15分钟的负载 |
| 4 | Total Accesses | 总的请求数,即客户端向服务器发送的请求数 (若这个值不变,那么说明客户端发送的请求未到达服务器) |
| 5 | Total kBytes | 总的字节数 |
| 6 | Total Duration | 总运行时间 |
| 7 | Uptime | 运行时间 |
| 8 | ReqPerSec | HTTP的每秒请求数 |
| 9 | BytesPerReq | 每秒请求的字节数 |
| 10 | BusyWorkers | 正在忙的线程数 |
| 11 | IdleWorkers | 空闲的线程数 |
| BusyWorkers+IdleWorkers为总的线程数。 如果监控发现IdleWorkers为0,那么就说明请求可能出现排队。排队最后会由超时时间来决定。 | ||
| 序号 | 请求的状态标识 | 说明 |
| 1 | _ | 等待连接 |
| 2 | S | 准备连接 |
| 3 | R | 正在读请求 |
| 4 | W | 服务器向客户端发送响应信息 |
| 5 | K | 保持长连接 |
| 6 | D | DNS查询 |
| 7 | C | 关闭连接 |
| 8 | L | 正在写日志 |
| 9 | G | 退出完成 |
| 10 | I | 该线程释放 |
| 11 | . | 当前未使用状态 |
关于请求的各种状态类型我们可以使用压测工具siege对该Apache服务状态进行测试时,不停的刷新【Apache服务所在服务器IP/server-status?auto】(如:192.168.1.10/server-status?auto)最底部即可看到不断变化,详细操作如下:
Linux上安装部署轻量级高性能压力测试工具siege实操教程与常用示例
https://coffeemilk.blog.csdn.net/article/details/153787828?spm=1001.2014.3001.5502
#1-先对Apache服务器(如:192.168.1.10)上的配置文件【/etc/httpd/conf/httpd.conf】进行编辑添加上对该Apache服务器状态压测服务器的IP(如:192.168.1.9)后保存退出并重启httpd服务
vi /etc/httpd/conf/httpd.confExtendedStatus On
<location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 192.168.1.2 192.168.1.9
</location>systemctl restart httpd#2-在对Apache服务器状态压测服务器(如:192.168.1.9)安装配置压测工具siega并对Apache状态服务压测
siege -c 200 -r 1000 http://192.168.1.10/server-status?auto >log.txt



1.4、zabbix的web界面修改Apache模板并链接指定模板到Apache主机
《1》打开zabbix的web界面左侧的导航栏【数据采集】-->【模板】-->在模板界面顶部的【名称】输入框中输入apache后点击-->【应用】即可过滤出所有Apache的相关模板;我们这里就选择被动模式的模板【Apache by Zabbix agent】打开-->选择【宏】需要对最后两个【{$APACHE.STATUS.PORT}】【{$APACHE.STATUS.SCHEME}】根据实际情况修改。
《2》将【Apache by Zabbix agent】模板链接到安装了Apache的主机上(即:打开zabbix的web界面左侧的导航栏【数据采集】-->【主机】-->选择安装了Apache服务的主机(如:192.168.1.10)-->【主机】-->模板选择【Apache by Zabbix agent】-->【更新】)即可。
《3》监测给Apache服务所在主机配置的Apache监测模板数据是否采集到进行监控(即:打开zabbix的web界面左侧的导航栏【监测】-->【主机】-->选择安装了Apache服务的主机(如:192.168.1.10)-->【最新数据】-->使用【名称】过滤Total)
详细操作如下:







到这里恭喜你配置zabbix监控Apache状态成功了。
二、zabbix实现监控Nginx应用流程
2.1、检查系统是否已经安装Nginx
#检查当前系统是否安装了Nginx(即:查看nginx服务状态,若没有则需要安装)
systemctl status nginx.service#在线安装Nginx
yum install nginx -y
使用源码安装配置Linux上的Web服务器——Nginx
https://coffeemilk.blog.csdn.net/article/details/150780215
2.2、下载agent2到Nginx的Linux服务器上
#直接使用dnf/yum方式在线安装zabbix-agent2实操流程#1-查看系统当前版本
cat /etc/os-release#2-配置zabbix的仓库源(根据系统版本选择安装对应系统版本的源)【比如我这里是almalinux9.3也支持红帽9.3】
#(注意【openEuler 22.03 (LTS-SP3)】只能安装rhel8版本的zabbix-agent2内容【wget https://repo.zabbix.com/zabbix/7.0/rhel/8/x86_64/zabbix-agent2-7.0.19-release1.el8.x86_64.rpm -c o -P /data】)
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/alma/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpmdnf clean all#3-安装zabbix-agent2(安装完成后zabbix-agent2后它的默认配置文件【zabbix_agent2.conf】是在【/etc/zabbix】目录下)
dnf install zabbix-agent2 -y
zabbix自动发现与自动注册的实操保姆级教程
https://coffeemilk.blog.csdn.net/article/details/153694161?spm=1001.2014.3001.5502
2.3、配置Nginx
2.3.1、开启Nginx的状态页
#开启nginx的状态也配置实操流程#1-进入nginx的配置文件目录编辑配置文件nginx.conf
cd /etc/nginx
vi nginx.conf
#编辑nginx.conf配置文件实现开启状态页的server完整内容server {listen 80;listen [::]:80;server_name _;location /nginx-status {stub_status on;access_log off;#根据需要设置访问白名单allow 127.0.0.1;allow 192.168.1.2;#allow 192.168.3.0/24;deny all;}location / {root html;index index.html index.htm index.php;}error_page 404 /404.html;location = /404.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}#2-验证配置的nginx.conf是否正确
nginx -t#3-验证nginx.conf的配置都正确后重启nginx服务
systemctl restart nginx.service
systemctl status nginx.service#4-查看当前系统的IP地址后查询(使用Nginx的服务器IP/nginx-status;如:http://192.168.1.9/nginx-status)
ip a






2.3.2、nginx监控指标解析
| 序号 | nginx的监控指标 | 说明 |
| 1 | Active connections | 对后端发起的活动连接数; |
| 2 | accepts | nginx总共处理了多少个连接; |
| 3 | handled | nginx成功创建了几次握手; |
| 4 | requests | nginx总共处理了多少请求。 |
| 5 | Reading | nginx读取客户端的header数; |
| 6 | Writing | nginx 返回给客户端的header数; |
| 7 | Waiting | nginx 请求处理完成,正在等待下一请求指令的连接。 |
2.4、zabbix的web界面修改nginx模板并链接指定模板到nginx主机
《1》打开zabbix的web界面左侧的导航栏【数据采集】-->【模板】-->在模板界面顶部的【名称】输入框中输入nginx后点击-->【应用】即可过滤出所有nginx的相关模板;我们这里就选择主动模式的模板【Nginx by Zabbix agent active】打开-->选择【宏】需要对最后三个【{$NGINX.STUB_STATUS.HOST}】【{$NGINX.STUB_STATUS.PATH}】【{$NGINX.STUB_STATUS.PORT}】根据实际情况修改。
《2》将【Nginx by Zabbix agent active】模板链接到安装了nginx的主机上(即:打开zabbix的web界面左侧的导航栏【数据采集】-->【主机】-->选择安装了nginx服务的主机(如:192.168.1.9)-->【主机】-->模板选择【Nginx by Zabbix agent active】-->【更新】)即可。
《3》监测给nginx服务所在主机配置的nginx监测模板数据是否采集到进行监控(即:打开zabbix的web界面左侧的导航栏【监测】-->【主机】-->选择安装了nginx服务的主机(如:192.168.1.9)-->【最新数据】-->使用【名称】过滤 Requests、 Connections)
详细操作如下:









到这里恭喜你配置zabbix监控Nginx状态成功了。
三、zabbix监控Nginx+php-fpm应用流程
3.1、检查系统是否已经安装Nginx+php-fpm
#1-检查nginx+php-fpm环境是否搭建和启动(执行如下两个命令可以显示对应的内容则表示已安装,没有则需要安装)
systemctl status nginx.service
systemctl status php-fpm.service#2-若没有安装nginx+php-fpm环境则执行如下命令实现快速在线安装
yum install php php-fpm php-mysqlnd nginx -y


3.2、下载agent2到Nginx的Linux服务器上
#直接使用dnf/yum方式在线安装zabbix-agent2实操流程#1-查看系统当前版本
cat /etc/os-release#2-配置zabbix的仓库源(根据系统版本选择安装对应系统版本的源)【比如我这里是almalinux9.3也支持红帽9.3】
#(注意【openEuler 22.03 (LTS-SP3)】只能安装rhel8版本的zabbix-agent2内容【wget https://repo.zabbix.com/zabbix/7.0/rhel/8/x86_64/zabbix-agent2-7.0.19-release1.el8.x86_64.rpm -c o -P /data】)
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/alma/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpmdnf clean all#3-安装zabbix-agent2(安装完成后zabbix-agent2后它的默认配置文件【zabbix_agent2.conf】是在【/etc/zabbix】目录下)
dnf install zabbix-agent2 -y
zabbix自动发现与自动注册的实操保姆级教程
https://coffeemilk.blog.csdn.net/article/details/153694161?spm=1001.2014.3001.5502
3.3、配置nginx+php-fpm
3.3.1、开启nginx+php-fpm的状态页
#开启nginx+php-fpm的状态页实操流程#1-进入php-fpm的配置文件目录编辑php-fpm的配置文件www.conf
cd /etc/php-fpm.d/
vi www.conf
#开启php-fpm的配置文www.conf的状态页内容参数(即取消如下三个内容前面的分号;后保存退出即可)
pm.status_path = /status
ping.path = /ping
ping.response = pong#2-进入ngInx的配置文件所在目录修改nginx的配置文件nginx.conf添加上php-fpm的状态页内容
cd /etc/nginx/
vi nginx.conf#nginx.conf文件添加php-fpm的状态页内容server {listen 80;listen [::]:80;server_name _;location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;include fastcgi_params;}location ~ ^/(status|ping)$ {fastcgi_pass 127.0.0.1:9000;fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;include fastcgi_params;}location /nginx-status {stub_status on;access_log off;#根据需要设置访问白名单allow 127.0.0.1;allow 192.168.1.2;#allow 192.168.3.0/24;deny all;}location / {root html;index index.html index.htm index.php;}error_page 404 /404.html;location = /404.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}#3-验证配置的nginx.conf是否正确,验证nginx.conf的配置都正确后重启nginx服务
nginx -t
killall -HUP nginx
systemctl status nginx.service
systemctl restart php-fpm.service #4-查看当前系统的IP地址后查看php-fpm状态页(使用nginx+php-fpm的服务器IP/status;如:http://192.168.1.9/status)
ip a







若使用nginx+php-fpm服务器的IP/status查看php-fpm的状态页时提示“
nginx error!
The page you are looking for is temporarily unavailable. Please try again later.
”错误时,需要检查php-fpm的监听端口9000是否设置;编辑【/etc/php-fpm.d/www.conf】配置文件添加监听的9000端口内容【listen =127.0.0.1:9000】
#解决在浏览器访问php-fpm的状态页时显示nginx error错误方法#1-进入php-fpm的配置文件路径编辑配置文件www.conf
cd /etc/php-fpm.d/
vi www.conf#检查php-fpm的配置文件www.conf是否配置了监听端口9000配置,没有则需要配置上
listen =127.0.0.1:9000#2-重启php-fpm
systemctl restart php-fpm.service
systemctl status php-fpm.service#3-再次访问nginx+php-fpm的状态页和ping
http://192.168.1.9/status
http://192.168.1.9/ping#注意nginx+php-fpm的状态页可以显示多种格式(json、xml、html)
http://192.168.1.9/status?xml
http://192.168.1.9/status?html
http://192.168.1.9/status?json




到这里表示你配置nginx+php-fpm的状态页开启完成了。




3.3.2、php-fpm监控指标解析
| 序号 | php-fpm监控指标 | 说明 |
| 1 | pool | fpm池子名称,大多数为www |
| 2 | process manager | 进程管理方式;值类型有:static, dynamic or ondemand. dynamic |
| 3 | start time | 启动日期,如果reload了php-fpm,时间会更新 |
| 4 | start since | 运行时长 |
| 5 | accepted conn | 当前池子接受的请求数 |
| 6 | listen queue | 请求等待队列,如果这个值不为0,那么要增加FPM的进程数量 |
| 7 | max listen queue | 请求等待队列最高的数量 |
| 8 | listen queue len | socket等待队列长度 |
| 9 | idle processes | 空闲进程数量 |
| 10 | active processe | 活跃进程数量 |
| 11 | total processes | 总进程数量 |
| 12 | max active processes | 最大的活跃进程数量(FPM启动开始算) |
| 13 | max children reached | 达到进程最大数量限制的次数,如果这个数量不为0,那说明最大进程数量太小了,可适当改大一点。 |
| 14 | slow requests | 启用了php-fpm slow-log,缓慢请求的数量 |
3.4、zabbix的web界面修改php-fpm模板并链接指定模板到php-fpm主机
《1》打开zabbix的web界面左侧的导航栏【数据采集】-->【模板】-->在模板界面顶部的【名称】输入框中输入php-fpm后点击-->【应用】即可过滤出所有php-fpm的相关模板;我们这里就选择模板【PHP-FPM by HTTP】(可以不用安装zabbix-agent2就直接使用)打开-->选择【宏】需要将【{$PHP_FPM.HOST}】这个主机删除掉,因为是通过HTTP协议连接通讯,要实现该模板通用就不能使用指定的主机IP;接下来会修改涉及到原来使用【{$PHP_FPM.HOST}】宏变量的监控项实现为自动获取主机IP连接(
①是将【PHP-FPM by HTTP】模板里面的【Get ping page】监控项中的【URL】内容的宏变量{$PHP_FPM.HOST}修改为{HOST.CONN}。
②是将【PHP-FPM by HTTP】模板里面的【Get status page】监控项中的【URL】内容的宏变量{$PHP_FPM.HOST}修改为{HOST.CONN}。
)。
《2》将【PHP-FPM by HTTP】模板链接到安装了nginx+php-fpm的主机上(即:打开zabbix的web界面左侧的导航栏【数据采集】-->【主机】-->选择安装了nginx+php-fpm服务的主机(如:192.168.1.9)-->【主机】-->模板选择【PHP-FPM by HTTP】-->【更新】)即可。
《3》监测给nginx+php-fpm服务所在主机配置的php-fpm监测模板数据是否采集到进行监控(即:打开zabbix的web界面左侧的导航栏【监测】-->【主机】-->选择安装了nginx+php-fpm服务的主机(如:192.168.1.9)-->【最新数据】-->使用【名称】过滤 Listen、Processes、Get status page)
详细操作如下:














默认【Get status page】的监控项没有内容这是因为默认该监控项不存储数据,我们可以修模板【PHP-FPM by HTTP】的【Get status page】监控项保存7天后再次查看即可获取到数据:



到这里在zabbix的web界面可以获取到php-fpm的监控数据内容表示对php-fpm的监控成功了。
四、zabbix官网提供的各种应用模板资料
Zabbix Integrations and Templates
https://www.zabbix.com/cn/integrations
