这里的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.conf
与www.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.conf
和nginx.conf
配置文件中要和www.conf
中的配置一致。
如果在www.conf
文件中默认使用了listen = 127.0.0.1:9000
时,php-fpm.conf
和nginx.conf
配置文件中也需要使用listen = 127.0.0.1:9000
.
2.4.重启服务激活更改
前面我们已经修改了php-fpm
和nginx.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环境的监控就做好了,在安装监控的过程中,你可能会遇到些问题,如果遇到问题请检查你使用的各种环境版本是否与本文的相同,然后根据错误提示信息进行排查,相信你一定会成功的。