一、LNMP环境
本文使用的环境:
- CentOS 7.9;
- MySQL 5.7.33;
- PHP 7.4.0(Zabbix5.0需要7.2.0以上版本的PHP);
- Nginx 1.14.2;
- Zabbix 5.0.10。
安装PHP可能需要的依赖包:
# yum -y install mysql-devel gcc gcc-c++ net-snmp-devel curl-devel perl-DBI php-gd php-mysql php-bcmath php-mbstring php-xml libxml2 libxml2-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gettext gettext-devel m4 autoconf libevent libevent-devel gd gd-devel sqlite sqlite-devel oniguruma oniguruma-devel
可供参考的PHP编译选项:
# ./configure --prefix=/usr/local/php-fastcgi --with-mysqli --with-jpeg-dir --with-png-dir --with-zlib --enable-xml --with-libxml-dir --with-curl --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --with-openssl --enable-mbstring --with-gd --enable-gd-native-ttf --enable-sockets --with-xmlrpc --enable-zip --enable-soap --disable-debug --enable-opcache --enable-zip --with-config-file-path=/usr/local/php-fastcgi/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-freetype-dir=/usr/lib64 && make -j4 && make install
安装Nginx可能需要的依赖包:
# yum -y install openssl openssl-devel pcre pcre-devel zlib zlib-devel
可供参考的Nginx编译选项:
# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-cc-opt=-O3 --with-stream && make && make install
PHP和Nginx都使用相同的普通用户,如“www”运行,可以避免一些权限问题,例如Nginx访问PHP的socket文件等。
二、安装Zabbix Server
2.1、导入数据库
首先在MySQL中创建供Zabbix Server使用的库和用户:
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user [email protected]'192.168.0.%' identified by 'zabbix';
mysql> grant all privileges on zabbix.* to zabbix@'192.168.0.%';
将表结构和数据导入到“zabbix”库中,相关的SQL文件在解压后的源码文件的“database/mysql/”目录中,需要注意三个SQL文件的导入顺序:
# mysql -h 192.168.0.163 -u zabbix -p'zabbix' -P 1234 zabbix < /usr/local/src/zabbix-5.0.10/database/mysql/schema.sql
# mysql -h 192.168.0.163 -u zabbix -p'zabbix' -P 1234 zabbix < /usr/local/src/zabbix-5.0.10/database/mysql/images.sql
# mysql -h 192.168.0.163 -u zabbix -p'zabbix' -P 1234 zabbix < /usr/local/src/zabbix-5.0.10/database/mysql/data.sql
导入SQL文件时,必须先将表结构“schema.sql”文件导入。最后导入“data.sql”文件。
2.2、安装Zabbix Server
源码包下载地址:https://www.zabbix.com/download_sources#tab:50LTS。
编译安装Zabbix Server:
# ./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-server --enable-proxy && make && make install
编辑Zabbix Server配置文件:
# egrep -v '(^#|^$)' /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/usr/local/zabbix/logs/zabbix_server.pid
SocketDir=/usr/local/zabbix/logs/
DBHost=192.168.0.163
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=1234
StartPollers=5
StartPingers=5
Timeout=4
AlertScriptsPath=/usr/local/zabbix/scripts
LogSlowQueries=3000
Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf
StatsAllowedIP=127.0.0.1
创建运行用户:
# useradd -M -s /sbin/nologin zabbix
创建需要的目录:
# mkdir /usr/local/zabbix/logs
# mkdir /usr/local/zabbix/scripts
# chown zabbix:zabbix /usr/local/zabbix/logs
# chown zabbix:zabbix /usr/local/zabbix/scripts
启动Zabbix Server:
# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
三、配置Zabbix frontend
3.1、配置PHP
编辑php-fpm.conf文件:
# cat /usr/local/php-fastcgi/etc/php-fpm.conf
include=/usr/local/php-fastcgi/etc/php-fpm.d/*.conf
# egrep -v '(^;|^$)' /usr/local/php-fastcgi/etc/php-fpm.d/www.conf
[www]
user = www
group = www
listen = /usr/local/php-fastcgi/var/run/php-fpm.sock
listen.owner = www
listen.group = www
listen.mode = 0660
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
编辑php.ini文件,修改Zabbix依赖的参数的值:
# cat /usr/local/php-fastcgi/etc/php.ini
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 32M
date.timezone = Asia/Shanghai
mbstring.func_overload=0
3.2、Zabbix需要的PHP扩展
3.2.1、gd扩展
一个是gd扩展,需要支持JPEG和FreeType。
首先确保已经安装了“gd”库和“jpeg”、“freetype”库:
# yum -y install gd gd-devel libjpeg libjpeg-devel freetype freetype-devel
然后在PHP源码文件中的“ext/”目录下,找到“gd”目录:
# cd /usr/local/src/php-7.4.0/ext/gd/
# /usr/local/php-fastcgi/bin/phpize
# ./configure --with-php-config=/usr/local/php-fastcgi/bin/php-config --with-jpeg --with-freetype && make && make install
安装完成,会在“/usr/local/php-fastcgi/lib/php/extensions/no-debug-non-zts-20190902/”目录下生成“gd.so”文件:
# ls /usr/local/php-fastcgi/lib/php/extensions/no-debug-non-zts-20190902/
gd.so opcache.a opcache.so
最后在“php.ini”文件中启用该扩展,并重启PHP-FPM:
# tail -1 /usr/local/php-fastcgi/etc/php.ini
extension=/usr/local/php-fastcgi/lib/php/extensions/no-debug-non-zts-20190902/gd.so
3.2.2、gettext扩展
同样,在PHP源码文件中的“ext/”目录下,找到“gettext”目录:
# cd /usr/local/src/php-7.4.0/ext/gettext/
# /usr/local/php-fastcgi/bin/phpize
# ./configure --with-php-config=/usr/local/php-fastcgi/bin/php-config && make && make install
查看生成的“gettext.so”文件:
# ls /usr/local/php-fastcgi/lib/php/extensions/no-debug-non-zts-20190902/
gd.so gettext.so opcache.a opcache.so
在“php.ini”文件中启用该扩展,并重启PHP-FPM:
# tail -1 /usr/local/php-fastcgi/etc/php.ini
extension=/usr/local/php-fastcgi/lib/php/extensions/no-debug-non-zts-20190902/gettext.so
3.3、配置Nginx
Zabbix Frontend相关文件,都在Zabbix的源码文件“ui”目录下:
将其复制一份:
# mkdir /home/wwwroot
# cp -ar /usr/local/src/zabbix-5.0.10/ui/ /home/wwwroot/zabbix
# chown -R www:www /home/wwwroot/
在Nginx中添加虚拟主机:
# cat /usr/local/nginx/conf/nginx.conf
……
include vhosts/*.conf;
……
# cat /usr/local/nginx/conf/vhosts/zabbix.conf
server {
listen 80;
server_name 192.168.0.163;
access_log /usr/local/nginx/logs/zabbix_access.log main;
error_log /usr/local/nginx/logs/zabbix_error.log;
client_max_body_size 8m;
root /home/wwwroot/zabbix;
index index.html index.htm index.php;
location ~ \.php$ {
root /home/wwwroot/zabbix;
fastcgi_pass unix:/usr/local/php-fastcgi/var/run/php-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ /\.
{
deny all;
}
location ~ .*\.(bak|jpa|rar|sql|tar|gz|zip|conf|tgz|bz2|log)$ {
return 405;
}
location ~ /\..* {
return 405;
}
}
最后,需要重载Nginx配置文件。
3.4、安装frontend
通过浏览器访问Zabbix前端页面,如:http://192.168.0.161/setup.php。
注意:
- 确保运行Nginx的普通用户,如“www”,对“Zabbix frontend”页面文件所在目录有写入权限,否则将需要手动添加“/home/wwwroot/zabbix/conf/zabbix.conf.php”文件;
- Zabbix前端登录页面,用于登录的用户名为“Admin”,登录密码为“zabbix”;
- 如果Zabbix前端页面显示“Zabbix server is not running”,尝试将“/home/wwwroot/zabbix/conf/zabbix.conf.php”文件中“$ZBX_SERVER”的值修改为“localhost”。
四、安装Zabbix Agent
安装Zabbix Agent需要的依赖包:
# yum -y install gcc gcc-c++ make pcre pcre-devel
仍然使用之前的“zabbix-5.0.10.tar.gz”,进行编译安装:
# ./configure --prefix=/usr/local/zabbix-agent --enable-agent && make clean && make && make install
Zabbix Agent配置文件:
# egrep -v '(^$|^#)' /usr/local/zabbix-agent/etc/zabbix_agentd.conf
PidFile=/usr/local/zabbix-agent/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix-agent/logs/zabbix_agentd.log
Server=192.168.0.161
ServerActive=192.168.0.161
Hostname=server01
Include=/usr/local/zabbix-agent/etc/zabbix_agentd.conf.d/*.conf
UnsafeUserParameters=1
创建运行用户和logs目录:
# useradd -M -s /sbin/nologin zabbix
# mkdir /usr/local/zabbix-agent/logs
# chown zabbix:zabbix /usr/local/zabbix-agent/logs
启动Zabbix Agent:
# /usr/local/zabbix-agent/sbin/zabbix_agentd -c /usr/local/zabbix-agent/etc/zabbix_agentd.conf