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 】命令查看版本信息。

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

zabbix自动发现与自动注册的实操保姆级教程-CSDN博客https://coffeemilk.blog.csdn.net/article/details/153694161?spm=1001.2014.3001.5502

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)最底部即可看到不断变化,详细操作如下:

Linux上安装部署轻量级高性能压力测试工具siege实操教程与常用示例https://coffeemilk.blog.csdn.net/article/details/153787828?spm=1001.2014.3001.5502

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服务器------Nginxhttps://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

zabbix自动发现与自动注册的实操保姆级教程https://coffeemilk.blog.csdn.net/article/details/153694161?spm=1001.2014.3001.5502

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

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的状态页

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 Templateshttps://www.zabbix.com/cn/integrations

相关推荐
脑电信号要分类9 分钟前
将多张图片拼接成一个pdf文件输出
pdf·c#·apache
袁庭新3 小时前
M系列芯片Mac上通过Homebrew一键安装/卸载Nginx并上线项目全指南
运维·nginx·macos·袁庭新·袁庭新ai
Densen20143 小时前
发布blazor应用到Linux, 使用nginx作为WebSocket代理
linux·websocket·nginx
不是书本的小明3 小时前
Apache vs Nginx vs Tomcat 核心区别与优化
nginx·tomcat·apache
Sakuyu434685 小时前
zabbix源码安装
linux·运维·zabbix
困惑阿三1 天前
客户消息及时反馈
nginx·node.js·飞书·企业微信
liurunlin8881 天前
httpslocalhostindex 配置的nginx,一刷新就报404了
运维·nginx
IT WorryFree1 天前
Zabbix介绍
zabbix
BullSmall1 天前
Nginx负载均衡会话保持配置指南
运维·nginx·负载均衡