摘要
本文详细记录了在中标麒麟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:
DBHost
、DBName
、DBUser
和DBPassword
分别设置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
指定日志文件路径Server
与ServerActive
均配置Zabbix Server服务的ipUser
指定运行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,内容样例如下(按实际情况修改
Server
和ServerActive
的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 中文文档