超详细!中标麒麟7下源码安装Zabbix 5.0(同样适用CentOS/RedHat)

1,061 阅读6分钟

「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战」。

摘要
本文详细记录了在中标麒麟7下安装Zabbix 5.0的过程,包含Server、Agent、Web页面的安装以及MySQL的初始化。安装方法同样适用于CentOS与RedHat。

1 相关背景说明

1.1 操作系统版本

服务器的操作系统为中标麒麟7,中标麒麟可以通过nkvers命令,查看操作系统详细信息:

查看记录了操作系统发行版本信息的文件:

find /etc/ -name "*release*"

可以看到这些文件中,包含了RedHat的发行版本信息(中标麒麟实际上是基于RHEL/CentOS的),确认RedHat的版本:

1.2 Zabbix版本选择

Zabbix最初的安装目标版本是5.4(受限于客户内网环境,选择源码安装的方式)。

5.4版本在安装完成后进行初始化配置时,配置数据库链接的页面有脚本错误,未能解决,经过多个版本的切换试验,最终采用的Zabbix版本如下:

  • 使用当时5.0.x版本中最新的zabbix-5.0.16.tar.gz安装Server、Agent等服务

  • Web前端页面使用zabbix-5.0.0.tar.gz源码包中的资源(其他小版本的页面在部署后存在脚本错误)

1.3 部署与监控规划

整体的部署与监控规划如下图:

Zabbix Server采用的硬件资源配置为:4VCPU + 12G内存 + 100G硬盘。

2 数据库初始化

Zabbix的运行需要数据库的支撑,这里选择的是MySQL。

MySQL的详细安装过程可参考:《CentOS/RedHat下RPM方式安装MySQL 5.7》

2.1 创建zabbix数据库

登录MySQL的root用户,创建zabbix数据库:

create database zabbix character set utf8 collate utf8_bin;

2.2 创建zabbix用户

create user 'zabbix'@'localhost' identified by '密码';

2.3 用户授权

给zabbix用户授权并刷新权限配置:

grant all privileges on zabbix.* to 'zabbix'@'localhost';
flush privileges;

2.4 执行初始化脚本文件

解压Zabbix源码安装包:

tar -zxvf zabbix-5.0.16.tar.gz

解压后进入到database/mysql目录下,可以看到初始化数据库的脚本文件:

在zabbix用户下执行数据库初始化脚本文件schema.sql、images.sql、data.sql:

mysql -uzabbix -p密码 zabbix < schema.sql
mysql -uzabbix -p密码 zabbix < images.sql
mysql -uzabbix -p密码 zabbix < data.sql

3 Zabbix Server安装

3.1 关闭SELinux

SELinux出于安全考虑,会阻止Zabbix Server的http通信端口10051,还会存在其它一些麻烦,如Zabbix要使用fping时需要设置相应规则。

永久关闭SELinux的方法:编辑/etc/selinux/config文件,设置SELINUX=disabled(设置后需要重启):

临时关闭SELinux的方法:

setenforce 0

3.2 配置源代码并安装

解压Zabbix源码安装包:

tar -zxvf zabbix-5.0.16.tar.gz

进入解压后的文件夹,我们同时配置Server、Agent(Server所在服务器自身也要启动Agent)、Java Gateway(使Server具备Java服务监控功能),指定安装目录为/usr/local/zabbix

./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

执行配置命令时,会有缺失lib的情况,yum能解决则使用yum,yum解决不了(受客户内网环境限制)则需要自行上网找对应版本的rpm包手动安装。

缺失libxml2 library:

yum install libxml2-devel -y

缺失Net-SNMP library:

yum install net-snmp-devel -y

libevent检查失败: yum源中没有可用的软件包时,需要自行上网寻找对应版本的软件安装包,推荐的Linux软件包下载网站:pkgs.org/

rpm -ivh libevent-devel-2.0.21-4.el7.x86_64.rpm

缺失Curl library:

yum install curl-devel -y

执行配置命令成功,会看到如下信息:

运行安装命令:

make install

3.3 创建zabbix用户

创建用于运行Zabbix服务的Linux用户:

groupadd zabbix
useradd -g zabbix zabbix

3.4 修改Server配置文件

配置文件所在位置:/usr/local/zabbix/etc/zabbix_server.conf(其中/usr/local/zabbix为配置时所指定的安装目录)

  • ListenIP设置为本机ip:

  • DBHostDBNameDBUserDBPassword分别设置MySQL地址、数据库名称、用户名和密码(由于MySQL与Zabbix Server部署在同一台虚拟机,'DBHost'这里使用了默认的localhost):

  • LogFile指定日志文件路径:

不要忘记创建日志文件夹并授权给zabbix用户:

mkdir -p /var/log/zabbix
chown -R zabbix:zabbix /var/log/zabbix/

3.5 开放10050/10051端口

iptables -I INPUT -p tcp -m multiport --dports 10050:10051 -j ACCEPT

3.6 创建软连接

ln -s /usr/local/zabbix/etc/ /etc/zabbix
ln -s /usr/local/zabbix/bin/* /usr/bin/
ln -s /usr/local/zabbix/sbin/* /usr/sbin/

3.7 设置Zabbix Server开机自启

在Zabbix解压后的源码包中,提供了用于开机自启的脚本(misc/init.d/fedora/core5目录下):

将脚本文件拷贝到/etc/init.d文件夹下并授予可执行权限:

cp zabbix_* /etc/init.d/
chmod 755 /etc/init.d/zabbix_*

设置Zabbix Server开机自启:

chkconfig zabbix_server on

查看Zabbix Server开机自启设置状态:

chkconfig --list

3.8 启动Zabbix Server

启动Zabbix Server命令:

service zabbix_server start

若启动失败,则通过查看服务状态来确定启动失败的原因:

service zabbix_server status

这是因为之前指定了安装目录为/usr/local/zabbix,而所拷贝的自启脚本中则是默认的安装路径/usr/local

修改/etc/init.d/zabbix_server文件中ZABBIX_BIN的值:

重新启动:

4 Web页面安装

4.1 httpd的安装与配置

使用yum安装httpd:

yum install httpd httpd-tools httpd-devel -y

/etc/httpd/conf.modules.d/00-mpm.conf配置文件中,确保采用的是event模式:

/etc/httpd/conf.modules.d/00-proxy.conf配置文件中,确保含有mod_proxy.so和mod_proxy_fcgi.so:

/etc/httpd/conf/httpd.conf配置文件中,在dir_module配置中,添加index.php支持:

<IfModule dir_module>
    DirectoryIndex index.html 
    DirectoryIndex index.php 
</IfModule>

/etc/httpd/conf/httpd.conf配置文件中,添加virtual host:

<VirtualHost *:80>
    ServerAdmin root@localhost
    DocumentRoot "/var/www/html"
    ServerName localhost
    <Directory "/var/www/html">
        AllowOverride None
        Require all granted
    </Directory>
    ProxyRequests Off
    ProxyPassMatch "^/(.*\.php(/.*)?)$" "fcgi://127.0.0.1:9000/var/www/html/$1"
</VirtualHost>

4.2 设置httpd开机自启

执行以下命令,设置httpd开机自启:

systemctl enable httpd.service
systemctl daemon-reload

4.3 部署Web页面

创建Zabbix Web页面的部署目录/var/www/html/zabbix

mkdir /var/www/html/zabbix

解压Zabbix源码安装包(注意,页面文件需要从5.0.0版本中获取,其他版本有bug):

tar -zxvf zabbix-5.0.0.tar.gz

将源码包解压后的ui文件夹下的文件全部拷贝到部署目录中:

cd zabbix-5.0.0/ui
cp -r * /var/www/html/zabbix/

官方文档上,Web页面所在目录是frontends/php,但实际上是ui,可能Zabbix版本升级后目录有所调整,但文档没有同步更新。

4.4 启动httpd服务

启动httpd服务:

service httpd start

查看httpd服务运行状态:

service httpd status

4.5 安装php72与httpd24

Zabbix 5.0需要的PHP版本至少为7.2.0,而操作系统上的PHP版本较为古老,此时需要寻找相关的软件库支持。

本文选取的是rh-php72相关版本:

  • rh-php72-php-7.2.24-1.el7.x86_64.rpm
  • rh-php72-php-bcmath-7.2.24-1.el7.x86_64.rpm
  • rh-php72-php-cli-7.2.24-1.el7.x86_64.rpm
  • rh-php72-php-common-7.2.24-1.el7.x86_64.rpm
  • rh-php72-php-embedded-7.2.24-1.el7.x86_64.rpm
  • rh-php72-php-fpm-7.2.24-1.el7.x86_64.rpm
  • rh-php72-php-gd-7.2.24-1.el7.x86_64.rpm
  • rh-php72-php-json-7.2.24-1.el7.x86_64.rpm
  • rh-php72-php-ldap-7.2.24-1.el7.x86_64.rpm
  • rh-php72-php-mbstring-7.2.24-1.el7.x86_64.rpm
  • rh-php72-php-mysqlnd-7.2.24-1.el7.x86_64.rpm
  • rh-php72-php-pdo-7.2.24-1.el7.x86_64.rpm
  • rh-php72-php-pear-1.10.5-1.el7.noarch.rpm
  • rh-php72-php-pecl-apcu-5.1.12-1.el7.x86_64.rpm
  • rh-php72-php-process-7.2.24-1.el7.x86_64.rpm
  • rh-php72-php-xml-7.2.24-1.el7.x86_64.rpm
  • rh-php72-php-xmlrpc-7.2.24-1.el7.x86_64.rpm
  • rh-php72-php-zip-7.2.24-1.el7.x86_64.rpm
  • rh-php72-runtime-1-2.el7.x86_64.rpm

rh-是RedHat的前缀,这个前缀可以认定为官方提供的,经过了充分测试,安装时不会替换核心系统文件,可以保证系统稳定性。
安装完成的软件在/opt/rh目录下。

rh-php72的安装还需要依赖httpd24相关软件包:

  • httpd24-httpd-2.4.34-22.el7.x86_64.rpm
  • httpd24-httpd-tools-2.4.34-22.el7.x86_64.rpm
  • httpd24-libnghttp2-1.7.1-8.el7.x86_64.rpm
  • httpd24-runtime-1.1-19.el7.x86_64.rpm

上述软件包可以从pkgs.org/上获取。

安装httpd24

rpm -ivh httpd24-*

安装rh-php72

rpm -ivh rh-php72-*

4.6 设置PHP-FPM开机自启

PHP-FPM实现了PHP脚本与Web服务器之间的通信。

/etc/init.d目录下,创建脚本文件php-fpm

cd /etc/init.d
touch php-fpm

编辑php-fpm文件,内容如下:

#!/bin/sh  
# chkconfig:   2345 15 95

# description:  PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation \

# with some additional features useful for sites of any size, especially busier sites.
# DateTime: 2016-09-20

# Source function library.  
. /etc/rc.d/init.d/functions  

# Source networking configuration.  
. /etc/sysconfig/network  

# Check that networking is up.  
[ "$NETWORKING" = "no" ] && exit 0  

phpfpm="/opt/rh/rh-php72/root/usr/sbin/php-fpm"  
prog=$(basename ${phpfpm})  

lockfile=/var/lock/subsys/phpfpm

start() {  
    [ -x ${phpfpm} ] || exit 5  
    echo -n $"Starting $prog: "  
    daemon ${phpfpm}
    retval=$?  
    echo  
    [ $retval -eq 0 ] && touch $lockfile  
    return $retval  
}  

stop() {  
    echo -n $"Stopping $prog: "  
    killproc $prog -QUIT  
    retval=$?  
    echo  
    [ $retval -eq 0 ] && rm -f $lockfile  
    return $retval  
}  

restart() {  
    configtest || return $?  
    stop  
    start  
}  

reload() {  
    configtest || return $?  
    echo -n $"Reloading $prog: "  
    killproc ${phpfpm} -HUP  
    RETVAL=$?  
    echo  
}  

force_reload() {  
    restart  
}  

configtest() {  
  ${phpfpm} -t
}  

rh_status() {  
    status $prog  
}  

rh_status_q() {  
    rh_status >/dev/null 2>&1  
}  

case "$1" in  
    start)  
        rh_status_q && exit 0  
        $1  
        ;;  
    stop)  
        rh_status_q || exit 0  
        $1  
        ;;  
    restart|configtest)  
        $1  
        ;;  
    reload)  
        rh_status_q || exit 7  
        $1  
        ;;  
    status)  
        rh_status  
        ;;  
    *)  
        echo $"Usage: $0 {start|stop|status|restart|reload|configtest}"  
        exit 2  
esac

php-fpm文件授可执行权限:

chmod 755 php-fpm

将PHP-FPM服务增加为系统服务:

chkconfig --add php-fpm

设置PHP-FPM服务开机自启:

chkconfig php-fpm on

4.7 PHP相关配置

修改/etc/opt/rh/rh-php72/php.ini配置文件的以下信息:

max_execution_time=300
max_input_time=600
post_max_size=32M
memory_limit=128M
date.timezone=Asia/Shanghai

修改/etc/opt/rh/rh-php72/php-fpm.d/www.conf配置文件的以下信息:

user=apache
group=apache
listen.user=apache
listen.group=apache
listen.mode=0666
listen=127.0.0.1:9000
pm=dynamic

此处的user、group的值,要与/etc/httpd/conf/httpd.conf配置文件中的User、Group的值保持一致。

4.8 启动PHP-FPM服务

启动PHP-FPM服务:

service php-fpm start

查看PHP-FPM服务运行状态:

service php-fpm status

4.9 Zabbix初始化配置

至此,可以访问Zabbix的Web页面了。

访问http://localhost/zabbix/,会跳转至http://localhost/zabbix/setup.php,进行Zabbix的初始化配置:

运行要求检查,前面的配置都已生效的话,此时应该是检查通过的状态:

配置数据库连接串(非5.0.0版本的页面,页面存在脚本错误,此处的数据库类型无法选择):

Zabbix Server信息配置:

Host一定要配置真实的ip地址,而不要配置为“127.0.0.1”或“localhost”!!!
此处若没有配置为真实的ip地址,后续会在Web页面中,一直提示“Zabbix server is not running: the information displayed may not be current.” 此错误虽然不会影响Zabbix运行与监控的功能,但却十分碍眼,且较难修复,因此一定要在最初就设置好Host。

确认配置信息:

本文所采用的是源码安装方式,此处会看到如下页面,需要点击【Download the configuration file】连接,下载zabbix.conf.php文件,并将此文件放置在Zabbix前端文件的conf目录下(也就是/var/www/html/zabbix/conf/),完成后点击【Finish】按钮:

大功告成,点击【Finish】按钮:

再次访问http://localhost/zabbix/时,由于已经完成的初始化配置,会跳转至http://localhost/zabbix/index.php,进行登录,默认的用户名/密码是Admin/zabbix:

登录成功后的首页:

5 Zabbix Agent安装

5.1 安装PCRE库

yum install -y pcre*

5.2 配置源代码并安装Agent

解压Zabbix源码安装包:

tar -zxvf zabbix-5.0.16.tar.gz

进入解压后的文件夹,配置Agent,指定安装目录为/usr/local/zabbix

./configure --prefix=/usr/local/zabbix --enable-agent

执行配置命令成功,会看到如下信息:

运行安装命令:

make install

5.3 创建zabbix-agent用户

创建用于运行Zabbix Agent服务的Linux用户:

groupadd zabbix-agent
useradd -g zabbix-agent zabbix-agent

5.4 修改Agent配置文件

配置文件所在位置:/usr/local/zabbix/etc/zabbix_agentd.conf(其中/usr/local/zabbix为配置时所指定的安装目录)

  • LogFile指定日志文件路径

  • ServerServerActive均配置Zabbix Server服务的ip

  • User指定运行Zabbix Agent服务的Linux用户,即上一步中创建的“zabbix-agent”

  • Hostname配置当前Zabbix Agent所在服务器的hostname

不要忘记创建日志文件夹并授权给zabbix-agent用户:

mkdir -p /var/log/zabbix
chown -R zabbix-agent:zabbix-agent /var/log/zabbix/

5.5 开放10050/10051端口

iptables -I INPUT -p tcp -m multiport --dports 10050:10051 -j ACCEPT

5.6 创建软连接

ln -s /usr/local/zabbix/etc/ /etc/zabbix
ln -s /usr/local/zabbix/bin/* /usr/bin/
ln -s /usr/local/zabbix/sbin/* /usr/sbin/

5.7 设置Zabbix Agent开机自启

在Zabbix解压后的源码包中,提供了用于开机自启的脚本(misc/init.d/fedora/core5目录下):

将脚本文件拷贝到/etc/init.d文件夹下并授予可执行权限:

cp zabbix_* /etc/init.d/
chmod 755 /etc/init.d/zabbix_*

修改/etc/init.d/zabbix_agentd文件中ZABBIX_BIN的值(我们之前指定了安装目录为/usr/local/zabbix,而所拷贝的自启脚本中则是默认的安装路径/usr/local):

设置Zabbix Agent开机自启:

chkconfig zabbix_agentd on

查看Zabbix Agent开机自启设置状态:

chkconfig --list

5.8 启动Zabbix Agent

启动Zabbix Agent命令:

service zabbix_agentd start

5.9 编写安装脚本

每一台受监控的服务器,都需要安装Zabbix Agent,我们可以编写一个安装脚本,来简化安装过程。

最终需要在服务器上准备的资源有:

  • 源码包:zabbix-5.0.16.tar.gz

  • 样例配置文件:zabbix_agentd.conf,内容样例如下(按实际情况修改ServerServerActive的ip):

LogFile=/var/log/zabbix/zabbix_agentd.log
Server=xxx.xxx.xxx.xxx
ServerActive=xxx.xxx.xxx.xxx
User=zabbix-agent
  • 安装脚本:agentd-install.sh,内容样例如下(一些路径需要按实际情况修改):
cd zabbix
tar -zxvf zabbix-5.0.16.tar.gz
cd zabbix-5.0.16

yum install -y pcre*

groupadd zabbix-agent
useradd -g zabbix-agent zabbix-agent
./configure --enable-agent
make
make install

mkdir -p /var/log/zabbix
chown -R zabbix-agent:zabbix-agent /var/log/zabbix/

cp zabbix/zabbix_agentd.conf /usr/local/etc/zabbix_agentd.conf

HOSTNAME="`hostname`"
echo "Hostname=$HOSTNAME" >> /usr/local/etc/zabbix_agentd.conf

iptables -I INPUT -p tcp -m multiport --dports 10050:10051 -j ACCEPT

ln -s /usr/local/etc/ /etc/zabbix
ln -s /usr/local/bin/* /usr/bin/
ln -s /usr/local/sbin/* /usr/sbin/
cp zabbix/zabbix-5.0.16/misc/init.d/fedora/core5/zabbix_* /etc/init.d/
chmod 755 /etc/init.d/zabbix_*
chkconfig zabbix_agentd on

service zabbix_agentd start
service zabbix_agentd status

5.10 Server服务器安装Agent

在安装Server的过程中,我们已经同时安装了Agent,且Server与Agent的安装有一些相同的步骤。

对于在Server服务器上安装Agent,我们只需要再完成【5.4 修改Agent配置文件】、【5.7 设置Zabbix Agent开机自启】、【5.8 启动Zabbix Agent】几步即可。

注意:Server上已经创建了“zabbix”用户,可以直接用他作为Agent的用户,而没有必要再创建一个“zabbix-agent”。

附:官方文档

Zabbix5.0 中文文档