Bootstrap

在Linux中搭建Zabbix监控环境(源码安装PHP-7.4+MariaDB+Zabbix)

在公网IP为x.x.x.x,安装Alibaba Cloud Linux  3.2104 LTS 64位系统的服务器上进行源码安装zabbix-5.0.26。

在公网IP为y.y.y.y,安装Alibaba Cloud Linux  3.2104 LTS 64位系统的服务器上进行源码安装zabbix-5.0.26。

php-7.4.28+mariadb-10.5安装在公网IP为x.x.x.x的服务器上。

下载安装的软件版本:php-7.4.28+mariadb-10.5+zabbix-5.0.26。

PHP源码安装

第一步,关闭selinux和防火墙。

命令:sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

systemctl stop firewalld

systemctl disable --now firewalld

第二步,安装httpd服务,设置开机自启动。

命令:yum install httpd-devel -y

systemctl restart httpd

systemctl enable httpd

第三步,安装编译工具及库文件

# 安装前,检测系统是否自带安装epel

命令:rpm -qa | grep epel

rpm -e --nodeps epel-aliyuncs-release-8-15.1.al8.noarch

# 配置yum源

命令:rpm -Uvh https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/e/epel-release-8-19.el8.noarch.rpm

# 安装编译工具及库文件

命令:yum install curl curl-devel freetype freetype-devel gcc libxml2 libxml2-devel libjpeg libjpeg-devel libpng libtool libpng-devel libzip-devel openssl openssl-devel openldap openldap-devel sqlite-devel oniguruma-devel zlib zlib-devel

第四步,下载php-7.4.28压缩包。

下载命令:cd /usr/local/src

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

第五步,解压及编译安装php-7.4.28

# 解压php-7.4.28.tar.gz

命令:cd /usr/local/src

tar -zxvf php-7.4.28.tar.gz

useradd -s /sbin/nologin -M php

# 进入解压后的文件夹配置php-7.4.28.tar.gz

命令:cd /usr/local/src/php-7.4.28

./configure \

--prefix=/usr/local/php7 \

--with-config-file-path=/usr/local/php7/etc \

--with-mhash \

--with-openssl \

--with-mysqli=mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-zlib \

--enable-bcmath \

--enable-gd \

--with-jpeg \

--with-freetype \

--enable-mbstring \

--enable-ftp \

--enable-sockets \

--with-gettext \

--enable-session \

--with-curl \

--enable-fpm \

--with-fpm-user=php \

--with-fpm-group=php \

--enable-pdo \

--enable-tokenizer \

--with-zip \

--with-apxs2=/usr/bin/apxs

若结果显示“Thank you for using PHP.”,则说明PHP配置成功。

# 编译安装php-7.4.28.tar.gz,make需要花费较长时间

命令:make && make install

若结果显示“Build complete. Don't forget to run 'make test'.”,则说明PHP编译安装成功。

命令:make test

第六步,查看环境变量和php版本。

命令:ln -s /usr/local/php7/sbin/* /usr/local/sbin

ln -s /usr/local/php7/bin/* /usr/local/bin

php -v

或    /usr/local/php7/sbin/php-fpm -v

第七步,配置php-fpm。

命令:cd /usr/local/src/php-7.4.28/

cp php.ini-production /usr/local/php7/etc/php.ini

cd /usr/local/php7/etc/

cp php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf

cp php-fpm.d/www.conf.default php-fpm.d/www.conf

第八步,安装ldap扩展模块。

# 查找phpize

命令:find / -name phpize

# 运行phpize

命令:cd /usr/local/src/php-7.4.28/ext/ldap

/usr/local/php7/bin/phpize

# 复制库文件

命令:cp -frp /usr/lib64/libldap* /usr/lib/

# 安装至/usr/local/php7/bin/php-config

命令:cd /usr/local/src/php-7.4.28/ext/ldap

./configure --with-php-config=/usr/local/php7/bin/php-config

# 编译安装

命令:make && make install

若结果显示“Build complete. Don't forget to run 'make test'.”,则说明PHP编译安装成功。

命令:make test

第九步,编辑php-fpm.conf和php.ini文件。

编辑/usr/local/php7/etc/php-fpm.conf文件时,需要修改成

pid = /usr/local/php7/var/run/php-fpm.pid”,取消前面的分号。

编辑/usr/local/php7/etc/php.ini文件时,需要修改成

max_execution_time = 300

post_max_size = 16M

max_input_time = 300

date.timezone = Asia/Shanghai”,取消前面的分号。

第十步,设置php-fpm开机启动

命令:cd /usr/local/src/php-7.4.28/sapi/fpm/

cp init.d.php-fpm /etc/init.d/php-fpm

# 为php-fpm添加执行权限

chmod +x /etc/init.d/php-fpm

# 设置开机启动

chkconfig php-fpm on

第十一步,启动php-fpm。

# 启动php-fpm

service php-fpm start

或 /usr/local/php/sbin/php-fpm

或 /etc/init.d/php-fpm start

或 /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini

若结果显示“Starting php-fpm ERROR: [pool www] cannot get uid for user 'nginx'      ERROR: FPM initialization failed”,则只需要使用命令“useradd nginx”添加用户nginx即可。最后重新启动php-fpm。

# 关闭php-fpm

service php-fpm stop

或 /etc/init.d/php-fpm stop

# 重启php-fpm

service php-fpm restart

或 /etc/init.d/php-fpm restart

第十二步,查看php-fpm是否启动成功。

命令:yum install lsof

lsof -i:9000

MariaDB源码配置

linux系统版本:CentOS8 64位

安装源文件版本:mariadb-10.5

第一步,安装前,检测系统是否自带安装 MySQL。

命令:rpm -qa | grep mysql

若结果显示类似“mysql-libs-5.1.52-1.el6_0.1.x86_64”,则可以选择进行卸载。

# 普通删除模式

rpm -e mysql-libs-5.1.52-1.el6_0.1.x86_64

# 如果使用普通删除模式命令删除时,提示有依赖的其它文件,则用强力删除模式命令对其进行强力删除

rpm -e --nodeps mysql-libs-5.1.52-1.el6_0.1.x86_64

第二步,检查否存在 mariadb 数据库。

命令:rpm -qa | grep mariadb

若结果显示类似“mariadb-libs-5.5.56-2.el7.x86_64”,则可以选择进行卸载。

命令:rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

MariaDB源码安装和初始化

第一步,安装MariaDB-10.5数据库。

命令:yum -y install mariadb mariadb-devel mariadb-server

# 设置开机自启

systemctl enable --now mariadb

第二步,启动MariaDB服务。

命令:systemctl start mariadb

systemctl stop mariadb

systemctl restart mariadb

第三步,初始化mariadb,重置数据库root账号密码,执行该命令前必须开启mysql服务。

命令:mysql_secure_installation

若结果显示“Enter current password for root (enter for none):”,

则输入当前root账号密码,刚安装默认为空,直接回车即可。

“Set root password? [Y/n]”,输入y回车。

“New password:”,输入密码。

“Re-enter new password:”,重复输入密码。

“Remove anonymous users? [Y/n]”,输入y回车。

“Disallow root login remotely? [Y/n]”,输入y回车。

“Remove test database and access to it? [Y/n]”,输入y回车。

“Reload privilege tables now? [Y/n]”,输入y回车。

第四步,登陆测试,执行登录命令并输入密码。

命令:mysql -uroot -p

输入登录密码“123456”,进入MariaDB shell状态。

Zabbix服务器端源码安装

第一步,登录网址:Download and install Zabbix点击“Zabbix Source”,下载Zabbix 5.0 LTS。并按照官方的安装步骤进行软件安装。

第二步,若存在旧版残留需提前卸载。

命令:rpm -qa | grep zabbix

若结果显示类似“zabbix-release-4.4-1.el8.noarch”,则可以选择进行卸载。

# 普通删除模式

rpm -e zabbix-release-4.4-1.el8.noarch

# 如果使用普通删除模式命令删除时,提示有依赖的其它文件,则用强力删除模式命令对其进行强力删除

rpm -e --nodeps zabbix-release-4.4-1.el8.noarch

第三步,安装依赖包

命令:yum install -y gcc gcc-c++ openssl openssl-devel libxml2 libxml2-devel net-snmp-devel libevent-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel openldap openldap-devel sqlite-devel oniguruma-devel

第四步,解压zabbix安装包。

命令:cd /usr/local/src

tar -zxvf zabbix-5.0.26.tar.gz

第五步,创建用户帐户,并授予权限。

对于所有Zabbix守护进程,都需要一个非特权用户。如果Zabbix守护程序是从非特权用户帐户启动的,它将以该用户身份运行。

如果守护程序是从root帐户启动的,它将切换到zabbix用户帐户,该帐户必须存在。若系统中没有,则需要创建zabbix用户帐户。

命令:groupadd --system zabbix

useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix

注意:Zabbix进程不需要主目录,一般不建议创建它。但是,如果需要将MySQL凭据存储在$HOME / .my.cnf中,则可以自由创建它。

命令:mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix

chown zabbix:zabbix /usr/lib/zabbix

Zabbix前端安装不需要单独的用户帐户。

如果Zabbix服务器和代理在同一台计算机上运行,则建议使用不同的用户来运行服务器,而不是运行代理。否则,如果两者都以同一用户身份运行,则代理可以访问服务器配置文件,并且Zabbix中的任何管理员级别用户都可以非常轻松地检索,例如数据库密码。

注意:以root或任何具有特殊权限的帐户运行Zabbix有安全风险。

第六步,安装PCRE。

# 下载 PCRE 安装包

命令:cd /usr/local/src/

wget Download PCRE from SourceForge.net

# 解压安装包

命令:tar zxvf pcre-8.35.tar.gz

# 编译安装

命令:cd pcre-8.35

./configure

make && make install

# 查看PCRE版本

命令:pcre-config --version

第七步,编译安装Zabbix

命令:cd /usr/local/src/zabbix-5.0.26

./configure \

--enable-server \

--enable-agent \

--with-mysql \

--enable-ipv6 \

--with-net-snmp \

--with-libcurl \

--with-libxml2

若结果显示“Thank you for using Zabbix!”,则说明配置成功。

make install

zabbix安装完成后,zabbix配置文件路劲为/usr/local/etc/。

第八步,创建并初始化Zabbix数据库

命令:mysql -uroot -p123456

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;

MariaDB [(none)]> create user zabbix@localhost identified by 'zabbix123';

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;

MariaDB [(none)]> flush privileges;

MariaDB [(none)]> quit;

第九步,导入初始架构和数据。

命令:cd /usr/local/src/zabbix-5.0.26/database/mysql

mysql -uzabbix -pzabbix123 zabbix < schema.sql

mysql -uzabbix -pzabbix123 zabbix < images.sql

mysql -uzabbix -pzabbix123 zabbix < data.sql

第十步,Zabbix服务端配置。

编辑/usr/local/etc/zabbix_server.conf文件,把

DBHost=localhost”前面的注释符号去掉,

“# DBPassword= ”修改为“DBPassword=zabbix123”,

“# DBSocket= ”修改为“DBSocket=/var/lib/mysql/mysql.sock”。

第十一步,启动server与agentd服务,并设置为开启自启动

命令:zabbix_server

zabbix_agentd

# Zabbix前端必须运行在支持PHP的Web服务器上。把整个ui目录都拷贝过去并命名为zabbix。

cd /usr/local/src/zabbix-5.0.26

cp -rp ui /var/www/html/zabbix

# 添加server与agentd服务端口并修改启动脚本

echo 'zabbix-server 10051/tcp #Zabbix Server' >> /etc/services

echo 'zabbix-server 10051/udp #Zabbix Server' >> /etc/services

cd /usr/local/src/zabbix-5.0.26/misc/init.d/fedora/core5/

cp zabbix_server /etc/init.d/

chmod 775 /etc/init.d/zabbix_server

sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/sbin/g' /etc/init.d/zabbix_server

echo 'zabbix-agent 10050/tcp #Zabbix Agent' >> /etc/services

echo 'zabbix-agent 10050/udp #Zabbix Agent' >> /etc/services

cd /usr/local/src/zabbix-5.0.26/misc/init.d/fedora/core5/

cp zabbix_agentd /etc/init.d/

chmod 775 /etc/init.d/zabbix_agentd

sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/sbin/g' /etc/init.d/zabbix_agentd

# 自启动server与agentd服务

chkconfig --add zabbix_server

chkconfig zabbix_server on

chkconfig --add zabbix_agentd

chkconfig zabbix_agentd on

# 使用chkconfig --list检查一下

chkconfig --list | grep zabbix

# 启动server与agentd服务并进程测试

service zabbix_server start

service zabbix_server stop

service zabbix_server restart

service zabbix_agentd start

service zabbix_agentd stop

service zabbix_agentd restart

netstat -antp | grep zabbix

Zabbix服务器端配置

第一步,编辑测试页

在文件夹/var/www/html中新建index.php文件,向该文件写入下面的代码:

<?php

phpinfo();

?>

# 授予index.php权限

命令:chmod 755 /var/www/html/index.php

第二步,修改配置文件httpd.conf

编辑/etc/httpd/conf/httpd.conf文件,在<Directory "/var/www">和<Directory "/var/www/html">字节中,都在“Require all granted”下面另起一行,然后增加

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

在<IfModule dir_module>字节中,把“DirectoryIndex index.html”改为

DirectoryIndex index.html index.php”。

# 重启httpd服务

命令:systemctl restart httpd

第三步,访问http://x.x.x.x/index.php/

若页面出现“PHP Version 7.4.28”等信息,则说明PHP配置成功。

第四步,授权zabbix。

命令:yum install php-bcmath -y

chmod -R 755 /var/www/html/zabbix/

netstat -antp | grep zabbix

第五步,访问http://x.x.x.x/zabbix/setup.php

在浏览器访问http://x.x.x.x/zabbix/setup.php即进入zabbix网页安装模式。

然后点击“Next step”,输入设置好的数据库密码“zabbix123”。

若没连接上,则把数据库主机ip改为“127.0.0.1”即可。

“Zabbix server name”填写“webserver”。

若提示“无法创建配置文件”,则只需要点击“Download theconfiguration file”就可以得到配置文件zabbix.conf.php, 然后把配置文件放在/var/www/html/zabbix/conf文件夹中,最后一直点击“finish”,等出现登录界面就可以了。

进入登陆界面,初始登录账号是“Admin”(注意A大写),初始登录密码是“zabbix”。

通过命令:mysql -uroot -pzabbix123 -e "select * from zabbix.users\G"查看具体情况。

登录Zabbix网址:http://x.x.x.x/zabbix/

设置中文:点击左下角的“user settings”,选择“zh_CN”即可。

Zabbix客户端安装和配置(安装方式与服务端相同)

第一步,登录网址:Download and install Zabbix点击“Zabbix Source”,下载Zabbix 5.0 LTS。并按照官方的安装步骤进行软件安装。

第二步,若存在旧版残留需提前卸载。

命令:rpm -qa | grep zabbix

若结果显示类似“zabbix-release-4.4-1.el8.noarch”,则可以选择进行卸载。

# 普通删除模式

rpm -e zabbix-release-4.4-1.el8.noarch

# 如果使用普通删除模式命令删除时,提示有依赖的其它文件,则用强力删除模式命令对其进行强力删除

rpm -e --nodeps zabbix-release-4.4-1.el8.noarch

第三步,安装依赖包

命令:yum install -y gcc gcc-c++ openssl openssl-devel libxml2 libxml2-devel net-snmp-devel libevent-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel openldap openldap-devel sqlite-devel oniguruma-devel

第四步,解压zabbix安装包。

命令:cd /usr/local/src

tar -zxvf zabbix-5.0.26.tar.gz

第五步,创建用户帐户,并授予权限。

命令:groupadd --system zabbix

useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix

第六步,安装PCRE。

# 下载 PCRE 安装包

命令:cd /usr/local/src/

wget Download PCRE from SourceForge.net

# 解压安装包

命令:tar zxvf pcre-8.35.tar.gz

# 编译安装

命令:cd pcre-8.35

./configure

make && make install

# 查看PCRE版本

命令:pcre-config --version

第七步,编译安装

命令:cd /usr/local/src/zabbix-5.0.26

./configure --prefix=/usr/local/zabbix --enable-agent
若结果显示“Thank you for using Zabbix!”,则说明配置成功。

make install

zabbix安装完成后,zabbix配置文件路劲为/usr/local/etc/。

第八步,Zabbix服务端配置。

1)编辑/usr/local/etc/zabbix_server.conf文件,得到下面代码:

# 日志文件路径

LogFile=/var/log/zabbix/zabbix_agentd.log

# 运行时文件路径

PidFile=/var/run/zabbix/zabbix_agentd.pid

# Zabbix服务器端IP地址

Server=x.x.x.x

# Zabbix主动检查本机数据接收服务器IP地址

ServerActive=127.0.0.1

# 客户端主机名称(也可以写IP地址)

Hostname=Zabbix server

# 代理端口号,默认值是10050

ListenPort=10050

2)新建zabbix_agentd.log,并更改拥有者。

命令:mkdir /var/log/zabbix

touch /var/log/zabbix/zabbix_agentd.log

chown -R zabbix.zabbix /var/log/zabbix

第九步,关闭selinux和防火墙。

命令:sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

systemctl stop firewalld.service

systemctl disable --now firewalld

第十步,启动agentd服务,并设置为开启自启动。

命令:zabbix_agentd

# Zabbix前端必须运行在支持PHP的Web服务器上。把整个ui目录都拷贝过去并命名为zabbix。

cd /usr/local/src/zabbix-5.0.26

cp -rp ui /var/www/html/zabbix

# 添加agentd服务端口并修改启动脚本

echo 'zabbix-agent 10050/tcp #Zabbix Agent' >> /etc/services

echo 'zabbix-agent 10050/udp #Zabbix Agent' >> /etc/services

cd /usr/local/src/zabbix-5.0.26/misc/init.d/fedora/core5/

cp zabbix_agentd /etc/init.d/

chmod 775 /etc/init.d/zabbix_agentd

sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/sbin/g' /etc/init.d/zabbix_agentd

# 自启动agentd服务

chkconfig --add zabbix_agentd

chkconfig zabbix_agentd on

# 使用chkconfig --list检查一下

chkconfig --list | grep zabbix

# 启动agentd服务并进程测试

service zabbix_agentd start

service zabbix_agentd stop

service zabbix_agentd restart

netstat -antp | grep zabbix

# 在zabbix的服务端测试与客户端是否联通

/usr/local/zabbix/bin/zabbix_get -s 120.55.72.8 -p10050 -k”net.if.in[eth0,bytes]”

若可以得到网卡信息,则说明客户端与服务端可以正常通信。

第十一步,设置防火墙端口,允许"10050"端口(Zabbix Agent默认端口)访问服务器。

命令:systemctl start firewalld

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

firewall-cmd --reload

systemctl stop firewalld

注意:所有客户端都需按照以上步骤配置。

第十二步,重启服务器。

命令:init 6

第十三步,在Zabbix监控系统中配置客户端主机。

 登录Zabbix网址:http://x.x.x.x/zabbix/

初始登录账号是“Admin”(注意A大写),初始登录密码是“zabbix”。账号和口令都区分大小写。

1)在“配置 --> 主机 --> 创建主机”页面中创建新的主机,填写客户端主机基本信息,注意:这一步不点击“添加”

2)在“配置 --> 主机 --> 创建主机 --> 模板”页面中,选择监控点模块并添加。

3)在“配置 --> 主机”页面中可以看到刚刚添加好的主机信息。

注意:添加完成后,需要等待大约3分钟才能建立服务器和客户端的数据通信,之后刷新一下页面,如果发现该主机的可用性标记为下图状态,则表示客户端已受控。

第十四步,常见问题

# 更改Zabbix用户

命令:mysql -uroot -p123456

MariaDB [(none)]> use zabbix;

MariaDB [(none)]> update users set passwd=md5('password') where alias= 'Admin';

;