zabbix 6.0 监控LNPM环境

news2024/11/26 21:52:45

这里的LNPM是指Linux,Nginx,php-fpm和Mysql.具体版本如下。

  • Linux : centos7.9
  • Nginx: 1.22.1
  • php-fpm:7.4
  • Mysql: 8.0

一、centos7.9 编译安装Nginx

为了弄清楚Nginx各种配置,我们采用编译安装的形式部署Nginx。

1.下载安装包

首先下载Nginx软件包,大家根据自己的实际情况下载所需的版本,本文以Nginx 1.22.1 为例,Nginx 1.22.1下载地址.下载完成后进入下载目录,解压nginx-1.22.1.tar.gz文件。

tar -zxvf nginx-1.22.1.tar.gz

在这里插入图片描述
然后进入nginx-1.22.1

cd nginx-1.22.1/

2.生成配置文件

构建Nginx,由于我们要监控Nginx的状态,需要在configure时添加http_stub_status模块。

./configure --with-http_stub_status_module

在这里插入图片描述
这一步非常的顺利,构建成功后,configure会打印出配置摘要,这一步非常的人性化,建议大家把最后一步截图保留,方便以后维护时使用。
在这里插入图片描述
上图就是我的配置文件摘要。接下来直接编译安装就可以了。

make & make install

这一步一般不会出现大的问题,最可能出现的问题就是系统缺少相关的依赖包,大家根据报错信息进行安装就可以了,在此不多赘述。

在这里插入图片描述

3.将nginx主程序文件加入到/usr/bin

到目前为止,Nginx的编译安装基本已经完成,是不是非常的简单?Nginx的二进制运行文件默认安装在/usr/local/nginx/sbin目录中,使用起来不太方便,除非你修改系统环境变量。我通常是将二进制运行文件复制到/usr/bin目录中。复制完成后,不用修改环境变更也可以在任意目录下运行nginx命令了。

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

在这里插入图片描述

4.将Nginx加入开机自启

将应用加入开机自启是一个很好的习惯,毕竟服务器和个人PC还是有所区别的,个人PC追求更快的开机速度,因此各种优化软件会尽量的减少你的开机服务,而服务器以服务为主,应当将你的服务设置成开机自启。在Linux系统中将应用加入开机自启有很多方法,可以在/etc/init.d/创建启动文件,也可以在/etc/rc.local文件中添加启动命令,但官方推荐使用添加开机服务的方式来实现开机自启,在高版本的Ubuntu中已经没有rc.local文件了。通过上述方法编译安装的Nginx是没有nginx.service文件的,需要我们自己编辑一个nginx.service文件。

编辑Nginx.service文件。

vim /lib/systemd/system/nginx.service

添加以下的内容

[Unit]
Description=nginx
After=network.target
 
[Service]
Type=forking
ExecStart=/usr/bin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/bin/nginx -s reload
ExecStop=/usr/bin/nginx -s quit
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

👿 在编辑上述文件时,注意nginx的可执行文件的路径,大家要根据自己的实际情况进行修改,如果照抄我的可能无法正常启动服务,大家可以使用which nginx命令查看自己的nginx的安装路径,上述nginx.service要以which nginx查找出来路径为准。
在这里插入图片描述

👿注意nginx.service文件的路径,一定是在/lib/systemd/system/目录下。

将nginx服务加入开机自启。

通过上面的操作,我们新建了nginx.service文件,并且把它放到了正确的路径下,接下来使用下面的命令将nginx服务添加到开机自启。

systemctl enable nginx

通过下图中的命令大家可检查自己的操作是否正确,生效。

在这里插入图片描述
如果出现上图所示的信息,说明我们的操作是正确的。

5.修改nginx.conf配置文件

通过上述步骤安装的Nginx默认配置文件在/usr/local/nginx/conf/目录中。
在这里插入图片描述
在这里插入图片描述
大家一定要认真研读nginx.conf配置文件,理解它的文件结构及相关意义,大家可以通过搜索引擎查找相应的技术文档来进行学习,本文就不在再赘述。

nginx.conf配置文件是以模块的方式进行配置的,我们可以在server模块中看到root目录,root目录就是你的站点文件的家目录,默认配置中使用了相对路径html,也就是说你要把你的站点发布文件放在这个目录下才能实现站点的发布。在实际的项目应用中一般使用绝对路径,这样能够更加方便你对站点的文件的管理。本例中我把root目录设置成了/var/www/html.

vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述
下图是修改后的情形,我们可以把站点文件发布到/var/www/html目录下。
在这里插入图片描述
为了使修改生效,大家要注意重启nginx,下面是重启nginx的命令。

nginx -s reload

6.验证

/var/www/html目录下新建一个index.html文件。

vim /var/www/html/index.html

并写入以下内容.

<html>
<body>
    <h1>
        Nginx is working...
    </h1>
</body>

</html>

使用浏览器打开http://localhost,如果能正常出现下图说明我们的Nginx已经安装并配置成功了。

在这里插入图片描述
👿 如果centos7的防火墙是打开的,要将80端口放开。

firewall-cmd --permanent --zone=public --add-port=80/tcp

二、zabbix 监控Nginx

1.安装zabbix-agent并完成相关配置

这一步大家可以查看我以前的教程,在此不在重复。

2.开启Nginx的状态信息

出于安全性的目的,Nginx的状态信息默认是关闭的,zabbix监控Nginx需要将Nginx的状态信息打开,这样通过http协议就能监控到Nginx状态了。

打开Nginx配置文件。

vim /usr/local/nginx/conf/nginx.conf

server模块中添加以下内容。

	location = /basic_status {
		
			stub_status;
			
			server_tokens on;
		}

在这里插入图片描述
👿配置文件中 ‘stub_status;’和‘stub_status on’都可以。

3.验证

在浏览器中输入地址http://localhost/basic_status,如果出现相关的Nginx状态信息说明配置成功了。如果你的浏览器中出现了报错信息,请认真检查你前面的操作步骤,直到看到下面的信息才能继续后面的操作。
在这里插入图片描述

4、监控nginx

登录zabbix管理配置页面,在欲监控的Nginx主机上添加Nginx by HTTP模板。
在这里插入图片描述
添加完成后到监测面板中的主机中就能查看到Nginx的运行数据了。如果出现下图的数据说明你的监控已经生效了。
在这里插入图片描述

三、zabbix 监控php-fpm

1.编译安装php-fpm

1.1 下载安装包

本文使用php7.4为例,大家可以根据自己的需求到php官网进行下载。

下载php7.4安装包。

wget https://www.php.net/distributions/php-7.4.33.tar.gz

1.2.解压

tar -zxvf php-7.4.33.tar.gz

1.3.编译安装

在编译时要把php-fpm模块加上,其余的模块大家可以根据自己的实际需求进行加减,本文只是用来演示如何使用zabbix监控LNPM,并非真正的生产或测试环境。

cd php-7.4.33/
./configure --enable-fpm --enable-sockets
make 
make install

如果在安装的过程中没有出现报错信息说明安装成功,下图是安装成功后的截图 。

在这里插入图片描述
1.4.创建及修改配置文件

复制解压目录下的php.ini-development/usr/local/php/目录下,并将其重命名为php.ini

cp php.ini-development /usr/local/php/php.ini

在这里插入图片描述
复制/usr/local/etc/php-fpm.d/目录下的www.conf.default文件并重命名为www.conf

cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf

复制sapi/fpm目录下的php-fpm到/usr/local/bin,复制php-fpm.conf

在这里插入图片描述
创建www-data用户及用户组,如果你的系统中已经存在www-data用户及用户组此步可以省略。

groupadd www-data
useradd -M -s /sbin/nologin www-data -g www-data

修改www.conf文件。

vim /usr/local/etc/php-fpm.d/www.conf

user = group =后面添加用户及用户组。

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = www-data
group = www-data

1.5.启动php-fpm

/usr/local/bin/php-fpm

为了以后方便使用,可以在/usr/bin创建php-fpm的软链接。

ln -s /usr/local/bin/php-fpm /usr/bin/php-fpm

如果启动php-fpm时系统没有报错,说明我们的安装配置都没有什么问题了。可以使用以下命令查看php-fpm的进程是否已经启动。

ps -aux | grep php-fpm

在这里插入图片描述
如果出现上图说明php-fpm进程已经正确的启动了。

1.6.将php-fpm加入开启自启服务

将安装包中的php-fpm.service,复制到/usr/lib/systemd/system/文件夹下,php-fpm.service文件的位置要以自己系统中的位置为准,不可照抄我下面的命令。

cp /home/alfiy/Downloads/php-7.4.33/sapi/fpm/php-fpm.service /usr/lib/systemd/system/

修改php-fpm.service文件,使其仅保留以下内容,其余的模块先注释掉,如果后续需要启用对应的模块时在添加了对应的模块后再将相对应的注释打开。

[Unit]
Description=The PHP FastCGI Process Manager
After=network.target

[Service]
Type=simple
PIDFile=/usr/local/var/run/php-fpm.pid
ExecStart=/usr/local/sbin/php-fpm --nodaemonize --fpm-config /usr/local/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

在这里插入图片描述
php-fpm加入开机自启。

systemctl enable php-fpm

2.启用php-fpm状态参数

2.1.修改www.conf文件

修改www.conf,找到pm.status_path= /status,ping.path = /ping,将它前面的注释打开。

pm.status_path = /status
ping.path = /ping

在这里插入图片描述
在这里插入图片描述
也可以修改php-fpm.conf文件,在该文件中添加。

pm.status_path = /status
ping.path = /ping

👿 php-fpm启动时php-fpm.conf的优先级高于www.conf,也就是说,当php-fpm.confwww.conf两个配置文件 出现配置冲突时,php-fpm会以php-fpm.conf配置中的配置为准。

2.2 重启php-fpm

使用下面的命令检查php-fpm配置是否正确。

php-fpm -t

在这里插入图片描述
修改完php-fpm的配置后,先进行配置检查是一个好习惯,上图就是使用该命令检查通过的图片。检查配置文件没有问题我们就可以重启php-fpm了。

php-fpm restart 

2.3.修改nginx.conf文件

编辑Nginx服务器块(虚拟主机)的配置文件nginx.conf,并在其下方添加开启php-fpm状态参数的location块。

找到Nginx的配置文件,在server模块中添加以下内容。

# Enable php-fpm status page
location ~ ^/(status|ping)$ {
    # disable access logging for request if you prefer
    access_log off;

    # Only allow trusted IPs for security, deny everyone else
    # allow 127.0.0.1;
    # allow 1.2.3.4;    # your IP here
    # deny all;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    include fastcgi_params;
    # Now the port or socket of the php-fpm pool we want the status of
    #fastcgi_pass 127.0.0.1:9000;
    fastcgi_pass unix:/run/php-fpm/your_socket.sock;
}

在这里插入图片描述
👿 fastcgi_pass unix:/run/php-fpm/your_socket.sock; fastcgi_pass 127.0.0.1:9000;

这两行代码需要根据系统实际的情况来决定,在www.conf以及php-fpm.conf文件中可以查看相关信息,要以www.conf文件中的值为依据,php-fpm.confnginx.conf配置文件中要和www.conf中的配置一致。
在这里插入图片描述
如果在www.conf文件中默认使用了listen = 127.0.0.1:9000时,php-fpm.confnginx.conf配置文件中也需要使用listen = 127.0.0.1:9000.
在这里插入图片描述
2.4.重启服务激活更改

前面我们已经修改了php-fpmnginx.conf配置文件,接下来需要重启这两个服务才能使用我们的修改生效。

重启之前先检查一下配置文件是否正确,如果不正确会有相应的提示信息,大家根据提示进行排查就可以了。

php-fpm -t
nginx -t

如果配置文件没有报错信息就可以重启服务了。

systemctl restart php-fpm
systemctl restart nginx

3. 监控php-fpm

只要前面的操作步骤一切正常,zabbix对php-fpm的监控就完成了绝大部分了,接下来只需要在我们要监控的主机上添加相应的php-fpm监控模板就OK了。
在这里插入图片描述
模板添加完成后,就能在主机的面板中查看相应的监控数据了。

四、zabbix监控Mysql

1.安装mysql8.0

首先下载mysql8.0社区版。

cd /home
wget https://repo.mysql.com//mysql80-community-release-el7-7.noarch.rpm
rpm -ivh mysql80-community-release-el7-7.noarch.rpm
yum clean all
yum update

这里的安装我没有截图,应该不会有什么问题。

mysql8.0安装完成之后,默认的密码在安装日志中。

vim /var/log/mysqld.log

打开日志文件,搜索password关键字就能找到默认的密码。
在这里插入图片描述
启动mysql,并将mysql服务加入开机自启。

systemctl start mysqld
systemctl enable mysqld

登录验证。

mysql -uroot -p

输入你从安装日志中查找出的密码就能登录mysql了,记得修改root密码,密码必须符合复杂度要求。

👿 entos中安装mysql的同时默认安装了mysqladmin,ubuntu中需要单独安装mysqladmin.

# ubuntu
apt install mysql-client-core-8.0

2.修改配置文件

在安装zabbix-agent完成之后,会在/usr/share/doc/zabbix-agent/目录下自动生成mysql的用户参数配置文件userparameter_mysql.conf,将这个文件 复制到/etc/zabbix/zabbix_agentd.d/目录下,并重命名为。

 cp /usr/share/doc/zabbix-agent/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/template_db_mysql.conf

新建zabbix监控用户,首先登录mysql然后使用下面的命令新建监控用户zbx_monitor用户。

use mysql;
CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON *.* TO 'zbx_monitor'@'%' ;
FLUSH PRIVILEGES;
quit;

创建.my.cnf配置文件

在Linux中创建/var/lib/zabbix目录,在该目录下创建.my.cnf配置文件。

mkdir -p /var/lib/zabbix
cd /var/lib/zabbix
vim .my.cnf

添加zabbix监控用户名和密码。

[client]
user='zbx_monitor'
password='yourpassword'

重启zabbix-agent

systemctl restart zabbix-agent

👿 在mysql8中对密码复杂度有了强制要求,大家在设置密码时将我上面示例中的“yourpassword”更换成符合mysql8密码复杂度要求的密码,否则设置不会通过。

3.添加mysql监控模板

在要监控的Mysql主机上添加mysql模板。

在这里插入图片描述
检查模板监控项是否生效。

在主机监控项中找到MySql:status监控项,测试一下是否能够正常获取到监控值,如果不能正常获取监控值,则根据提示进行排错。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从上图可以看出我的mysql监控项已经正确的出现监控值了,再到监控仪表盘中看下吧。
在这里插入图片描述
监控数据也正常了。

好了,到此为止,zabbix对LNPM环境的监控就做好了,在安装监控的过程中,你可能会遇到些问题,如果遇到问题请检查你使用的各种环境版本是否与本文的相同,然后根据错误提示信息进行排查,相信你一定会成功的。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/760025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

unity 调用C++ dll 有类和指针操作

这个在之前unity 调用C dll 操作升级套娃函数调用_天人合一peng的博客-CSDN博客的基础上&#xff0c;但实事时类相互嵌套&#xff0c;非常不好处理。 1 测试直接将main()生成dll程序能运行不。 发现是可以的。 2 那就是想方法把对象或指针的操作的下一级函数直接写到main里面&…

简单认识数据库用户管理

文章目录 一、数据库用户管理1、新建用户&#xff08;1&#xff09;创建用户使用明文设置密码&#xff08;2&#xff09;获取密文再给新用户设置密码&#xff08;3&#xff09;查看数据库用户和其他信息&#xff08;4&#xff09;查看当前登录用户信息 2.修改数据库用户相关信息…

漏洞复现-CVE-2023-33246 Apache RocketMQ RCE漏洞原理与复现

目录 漏洞原理漏洞描述影响范围 Apache RocketMQ学习文档学习代码审计 漏洞复现docker环境搭建exp代码 总结参考 漏洞原理 漏洞描述 For RocketMQ versions 5.1.0 and below, under certain conditions, there is a risk of remote command execution. Several components of…

Wine的调试方法

wine的运行管理 # 运行exe程序 wine <exe程序># 运行msi程序 wine msiexec /i <msi程序> wine start <msi程序># 静默安装 wine <exe程序> /q /doNotRequireDRMPrompt /noupdate# 杀掉wine进程 wineserver -k pkill wine配置wine 配置环境变量 # 配…

GD32f103系列外部晶振更改

GD32f103系列的芯片现在基本很普通了&#xff0c;外部很多资料都是使用8MHz晶振为CPU提供主频。很多的时候由于项目的原因&#xff0c;外部晶振会更换不同的频率&#xff0c;有4MHz或者12Mhz的&#xff0c;因此需要在系统文件中做一些更改。 以8MHz晶振转12MHz晶振为例&#x…

Redis(三)存储原理与数据模型(hash冲突、渐进式rehash)

Redis系列文章 Redis&#xff08;一&#xff09;原理及基本命令&#xff08;柔性数组&#xff09; Redis&#xff08;二&#xff09;网络协议和异步方式&#xff08;乐观锁&悲观锁&#xff09; Redis&#xff08;三&#xff09;存储原理与数据模型&#xff08;hash冲突、渐…

chatGPT指令大全可免费使用网站列表chatGPT4试用方案

指令列表 写作助理 &#x1f449; 最常使用的 prompt&#xff0c;用于优化文本的语法、清晰度和简洁度&#xff0c;提高可读性。作为一名中文写作改进助理&#xff0c;你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性&#xff0c;同时分解长句&#xff0c;减少…

【CesiumJS入门】(7)绘制多段线(动态实时画线)

前言 鼠标左键添加点、右键完成绘制,单击右侧弹窗关闭按钮清空绘制。参考沙盒示例&#xff1a;Drawing on Terrain 直接上代码了 /** Date: 2023-07-12 18:47:18* LastEditors: ReBeX 420659880qq.com* LastEditTime: 2023-07-16 16:26:19* FilePath: \cesium-tyro-blog\s…

【动手学深度学习】--07.数值稳定性、模型初始化、激活函数

文章目录 数值稳定性、模型初始化、激活函数1.数值稳定性1.1举例1.2数值稳定性的常见两个问题1.3梯度爆炸1.4梯度消失1.5打破对称性 2.模型初始化2.1让训练更加稳定2.2权重初始化2.3Xavier初始 3.激活函数 数值稳定性、模型初始化、激活函数 学习视频&#xff1a;数值稳定性 …

vue3后台管理系统实现动态侧边导航菜单管理(ElementPlus组件)

记住 一级(el-sub-menu)的都是只是展示的 点击跳转的都是一级下的子级(el-menu-item) 完整展示 1:在登陆功能进行登陆 获取menu列表 注册路由表的时候 把文件进行创建好 因为注册的方法需要获取这个路径 整个router下的main product等等都要创建 //1:发送你的用户名和密码获…

Linux--进程终止

一、进程终止时&#xff0c;操作系统做了什么&#xff1f;&#xff1f; 释放进程申请的相关内核数据结构和对应的代码和数据 本质就是释放系统资源&#xff08;最主要的资源是内存&#xff09; 二、进程终止的常见方式&#xff1f; a.代码跑完&#xff0c;结果正确 b.代码跑完&…

【我的2023上半年总结】感谢CSDN:第一次100w+阅读,赚大了!

大家好&#xff0c;这里是程序员晚枫。 因为工作一般都是996的原因&#xff0c;今天是2023上半年少有的周六休息日&#xff0c;正好看到平台的#2023年中总结#活动&#xff0c;赶紧来分享一下这半年的自媒体收获~ 主要说一些开心的事情 1、CSDN CSDN账号&#x1f449;Python…

MySQL的循环语句分析

1.while循环 复制 -- 设置mysql分隔符为//,也就意味着,当遇到下一个//时,整体执行SQL语句 DELIMITER //DROP PROCEDURE if EXISTS &lsquo;test&rsquo;; # 如果存在test存储过程则删除CREATE procedure test() # 创建无参存储过程,名称为testBEGIN DECLARE i I…

配置 Vite 的环境变量与模式 (.env mode)

目录 创建项目环境变量内建变量创建.env 文件定义变量HTML 环境变量替换 模式 创建项目 npm create vitelatest or yarn create vite or pnpm create vite 环境变量 Vite 在一个特殊的 import.meta.env 对象上暴露环境变量。 console.log(import.meta.env)内建变量 import.met…

关于chatGPT、AI绘画、AI提词器等AI工具国内如何使用

目前的AI潮流非常火热&#xff0c;OPENAI 出的CHATGPT可谓是目前大模型人工智能的代表&#xff0c;刚开始听说chatGPT可以写代码&#xff0c;写作&#xff0c;写方案&#xff0c;无所不能。还有AI绘画也很&#xff2e;&#xff22;作为一个程序员&#xff0c;为了体验这些&…

python+pytest接口自动化之参数关联

目录 一. 参数关联场景 二. 脚本编写 1. 在用例中按顺序调用 2. 使用Fixture函数 三. 总结 什么是参数关联&#xff1f; 参数关联&#xff0c;也叫接口关联&#xff0c;即接口之间存在参数的联系或依赖。在完成某一功能业务时&#xff0c;有时需要按顺序请求多个接口&…

听GPT 讲K8s源代码--pkg(三)

在 Kubernetes 项目中&#xff0c;pkg/controller目录下的子目录通常包含控制器相关的代码和逻辑。控制器是 Kubernetes 中用于管理资源的核心组件之一。它们负责监控资源的状态&#xff0c;并确保其符合所定义的期望状态。下面是对这些子目录的一些常见作用的解释&#xff1a;…

JavaScript中数据类型

对象和原始值 ● 在JavaScript中&#xff0c;有两种主要类型的数据&#xff0c;要不是原始值&#xff0c;要不是对象&#xff1b; 7种原始数据类型 1.数字 浮点数用于小数和整数。let age 23; 2.字符串 一系列字符的序列&#xff0c;用于文本。let firstName “IT知识…

全网最全整理,Allure集成Jenkins自动化测试实战(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Allure插件安装 …

libbpf-bootstrap 开发指南:概念与如何安装

目录 概念 如何安装& 使用 git 地址 使用git clone 下载代码 安装依赖环境 安装libbpf 编译example 概念 libbpf-bootstrap 是一个项目&#xff0c;旨在帮助开发者快速启动和开发使用 eBPF (Extended Berkeley Packet Filter) 和 libbpf 的程序。eBPF 是一种可以在…