实践说明:基于RHEL9系列(CentOS9,AlmaLinux9,RockyLinux9等),但适用场景不限于此,客户端一键部署安装包基于RHEL8和RHEL9。
文档形成时期:2023年
因系统或软件版本不同,构建部署可能略有差异,但本文未做细分,对稍有经验者应不存在明显障碍。
限于篇幅,Zabbix配置基于Agent2一键安装包和模版,其它配置细节未做阐述,将来再单独整理一系列文档,但基于本文纯实践方案,已经有比较全面的配置,能应对大部分场景,或基于此容易做进一步的配置部署。
因软件世界之复杂和个人能力之限,难免疏漏和错误,欢迎指正。
文章目录
服务端基础硬件资源环境
普通场景下推荐配置:2核8G,支持1000个监控指标。
服务端基础环境
RHEL9系列(本文档方案基于AlmaLinux9)
MySQL 8.0.X 之一 需要 InnoDB 引擎。 可参考该文档部署:https://blog.csdn.net/ynz1220/article/details/135535296
PHP 7.2.5 或更高版本,不支持 PHP 8.0
所需模块参见官文:https://www.zabbix.com/documentation/6.0/zh/manual/installation/requirements
服务端基于AlmaLinux9部署PHP7.4.33
采用"Docker的方式部署PHP7.4.33,编译或DNF方式安装Nginx+MySQL",遇到了Zabbix图表乱码问题,虽然让Docker环境支持了中文,但Zabbix图表乱码问题仍未能解决。
最终弃用Docker的方式部署PHP7.4.33,采用DNF方式安装PHP7.4.33
dnf module list php -y #可以看到,默认源有php8.1,但目前zabbix7才支持php8.1,而zabbix7还是开发版本,不宜用于生产环境。
#dnf update -y # 可选
#删除旧版本
#dnf remove php php-fpm -y; dnf remove php* -y #可选
#安装Epel和Remi仓库
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
#再次查看
dnf module list php -y
有php7.4至8.3了
#安装PHP 7.4
dnf module install php:remi-7.4 -y
#安装扩展模块
dnf install php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imap php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml php-dom php-redis php-memcached php-memcache
php -v
php -m # 可以看到,zabbix6所需要的openssl等所有模块均已安装好。
#配置PHP-FPM
vi /etc/php-fpm.d/www.conf
;至少有下列配置
listen.backlog = 2048
listen.owner = www
listen.group = www
listen.mode = 0660
listen.acl_users =
listen.acl_groups =
; 特别注意两个acl配置要为空,不然listen.owner和listen.group配置无效,创建的unixsock文件就不会是指定的普通用户,让前端nginx无法访问,报502。
systemctl restart php-fpm
nginx相关配置:
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
从源码安装Zabbix服务端
创建系统用户等准备
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
chown zabbix:zabbix /usr/lib/zabbix
如果Zabbix server和agent运行在同一台机器上,建议使用与agent不同的用户来运行。否则,如果两者使用相同的用户,agent可以访问server的配置文件,Zabbix里任何Admin级别的用户可以轻易地获取诸如数据可密码等信息。
下载最新稳定版Zabbix程序包
https://www.zabbix.com/download_sources#60LTS
wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.22.tar.gz
创建数据库
对Zabbixserver和proxy守护进程,还有Zabbix前端,必须要有一个数据库。但运行Zabbixagent不需要。
此处SQL脚本用于创建数据库模式和插入数据集。Zabbix proxy数据库只需要数据库模式,而Zabbix server数据库在数据库模式之上还需要数据集。
Zabbix 唯一支持的编码是 UTF-8 。使用此编码没有已知的任何安全漏洞。应注意如果使用其他的编码,则存在已知的安全问题。
MySQL
支持字符集 utf8(又名 utf8mb3)和 utf8mb4(分别使用 utf8_bin 和 utf8mb4_bin 排序规则)
建议使用 utf8mb4 进行新安装。
对于 Zabbix 6.0.11 及更新版本,需要在导入模式期间创建确定性触发器。 在 MySQL 和 MariaDB 上,如果启用了二进制日志记录并且没有超级用户权限同时未在MySQL配置文件中配置 log_bin_trust_function_creators = 1 ,则需要设置 GLOBAL log_bin_trust_function_creators = 1。
mysql> create database zabbixdb character set utf8mb4 collate utf8mb4_bin;
CREATE USER "zabbixuser"@"%" IDENTIFIED WITH mysql_native_password BY "pass";
GRANT Alter, Alter Routine, Create, Create Routine, Create Temporary Tables, Create View, Delete, Drop, Event, Execute, Index, Insert, Lock Tables, References, Select, Show View, Trigger, Update ON `zabbixdb`.