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

相关推荐
枫叶梨花5 小时前
实战:将 Nginx 日志实时解析并写入 MySQL,不再依赖 ELK
mysql·nginx·elk
青靴10 小时前
关于NGINX,你了解多少?
运维·nginx
de之梦-御风13 小时前
【工具分享】另一个免费开源的远程桌面服务-Apache Guacamole
开源·apache
5pace14 小时前
Mac Nginx安装、启动、简单命令(苍穹外卖、黑马点评前端环境搭建)
java·前端·nginx·macos·tomcat
Justin_1921 小时前
Galera Cluster部署
linux·服务器·nginx
苹果醋31 天前
学习札记-Java8系列-1-Java8新特性简介&为什么要学习Java8
java·运维·spring boot·mysql·nginx
qyhua1 天前
从零部署自维护版 Uptime Kuma:Node.js + PM2 + Nginx 全链路实战指南
运维·nginx·node.js
睡不醒的猪儿1 天前
nginx日志同步阿里云datahub后写入数据库
数据库·nginx·阿里云
耿雨飞1 天前
Nginx代理服务应用实战:HTTP代理模块、正向代理、反向代理与TCP/UDP代理详解
nginx