一、zabbix实现监控Apache应用流程
1.1、检查系统是否已经安装Apache
1.2、下载agent2到Linux系统中安装
注意:我们在下载被监控端agent安装包的时候需要根据zabbix-server的版本来匹配下载安装,zabbix-server的版本可以在zabbix的web界面的仪表盘右侧可以查看到或者直接在安装了zabbix-server的服务器上执行【zabbix_server -V 】命令查看版本信息。
bash
#直接使用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.rpm
dnf clean all
#3-安装zabbix-agent2(安装完成后zabbix-agent2后它的默认配置文件【zabbix_agent2.conf】是在【/etc/zabbix】目录下)
dnf install zabbix-agent2 -y
1.3、配置Apache
1.3.1、开启Apache的状态页
bash
#开启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,那么就说明请求可能出现排队。排队最后会由超时时间来决定。 |||
[apache监控指标解析]
|--------|-------------|---------------|
| 序号 | 请求的状态标识 | 说明 |
| 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)最底部即可看到不断变化,详细操作如下:
bash
#1-先对Apache服务器(如:192.168.1.10)上的配置文件【/etc/httpd/conf/httpd.conf】进行编辑添加上对该Apache服务器状态压测服务器的IP(如:192.168.1.9)后保存退出并重启httpd服务
vi /etc/httpd/conf/httpd.conf
ExtendedStatus 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
bash
#检查当前系统是否安装了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服务器上
bash
#直接使用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.rpm
dnf clean all
#3-安装zabbix-agent2(安装完成后zabbix-agent2后它的默认配置文件【zabbix_agent2.conf】是在【/etc/zabbix】目录下)
dnf install zabbix-agent2 -y
2.3、配置Nginx
2.3.1、开启Nginx的状态页
bash
#开启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 请求处理完成,正在等待下一请求指令的连接。 |
[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
bash
#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服务器上
bash
#直接使用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.rpm
dnf clean all
#3-安装zabbix-agent2(安装完成后zabbix-agent2后它的默认配置文件【zabbix_agent2.conf】是在【/etc/zabbix】目录下)
dnf install zabbix-agent2 -y
3.3、配置nginx+php-fpm
3.3.1、开启nginx+php-fpm的状态页
bash
#开启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】
bash
#解决在浏览器访问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,缓慢请求的数量 |
[php-fpm监控指标解析]
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