此贴待改,原始时间为:2018年11月21日
2021年6月7日
重修了一下文章:测试Centos8.3-Zabbix-5.4.0可用
zabbix-5.4_web不能使用PHP8 原因是zabbix的web页是php写的,其中很多Php语法在php8中被弃用了。
资料
安装
环境Linux Apache Mariadb Php
- 创建zabbix需要的用户及组
#groupadd zabbix
#useradd -g zabbix -r -s /sbin/nologin -M zabbix
-g 指定用户组 -r 系统用户 -s 指定登录的shell这里是不允许登录 -M 不创建家目录
-
安装依赖和插件包
#yum -y install net-snmp-devel libxml2-devel libcurl-devel libevent libevent-devel
这里如果是mariadb用户需要再安装一个mariadb-devel -
解压从官网下载的源码包
#tar -zxvf zabbix-3.4.7.tar.gz
-
进入预编译文件夹
#cd zabbix-3.4.7.tar.gz
-
按需编译:
#./configure \
--prefix=/opt/Zabbix \
--enable-server \
--enable-agent \
--with-mysql=/opt/Mariadb/bin/mysql_config \
--with-net-snmp \
--with-libcurl \
--with-libxml2 \
配置安装路径为:/opt/Zabbix mariadb路径指定为/opt/Mariadb
之后make && make install
走一波可能需要一段时间
注意:这里我们使用的mariadb数据库,所以需要特意安装一个mariadb-devel依赖包。编译安装的时候也必须制定数据库配置文件的路径!如果编译参数写错,重新编译需要清理一下编译环境再编译不然还是之前的配置。
配置
-
进入mariadb数据库,为zabbix创建一个数据库。
>create database zabbix character set utf8 collate utf8_bin;
-
并且提供完全控制的权限。
>grant select,insert,update,delete,create,drop on zabbix.* to 'zabbix'@'%' Identified by 'zabbixadmin';
创建一个zabbix用户,密码为zabbixadmin,对数据库zabbix有所有权限。 -
为zabbix数据库导入zabbix数据表结构
导入zabbix数据表结构
mysql> use zabbix;
mysql> source /usr/local/zabbix-3.4.2/database/mysql/schema.sql; \这个数据库sql路径在源码包解压开后地方
mysql> source /usr/local/zabbix-3.4.2/database/mysql/data.sql;
mysql> source /usr/local/zabbix-3.4.2/database/mysql/images.sql;
mysql> quit
-
创建日志目录
#mkdir /var/log/zabbix/logs
-
编辑zabbix_agentd配置文件
agent是客户端的配置文件
#cd /usr/local/zabbix/etc/
#cp zabbix_agentd.conf zabbix_agentd.conf.bak
#vim zabbix_agentd.conf
日志路径
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
服务端地址
Server=127.0.0.1
本地服务监听端口及地址
ListenPort=10050
ListenIP=10.87.10.110
主机名
Hostname=centos7
编辑zabbix_server配置文件
server是服务端的配置文件
#cp zabbix_server.conf zabbix_server.conf.bak \备份以防万一
#vim zabbix_server.conf
LogFile=/usr/local/zabbix/logs/zabbix_server.log
DBName=zabbix
DBUser=zabbix
DBHost=localhost
DBPassword=123456 #(zabbix用户的密码)
监听地址及端口
ListenIP=0.0.0.0
ListenPort=10051
AlertScriptsPath=/usr/local/zabbix/alertscripts
- 复制php页面至web容器
#cp -rf /usr/local/zabbix-3.4.2/frontends/php/* /usr/local/zabbix
前面是zabbix的源码路径,后者是你web容器的doc路径
Zabbix5.4的php页面路径在/root/zabbix-5.4.0/ui
zabbix5.4的php页面在php8.0后会出现错误提醒,请修改
zabbix/include/triggers.inc.php
的1227行
如下:
#cd zabbix/include/
#cp triggers.inc.php triggers.inc.php.bak
备份原文件
#vim triggers.inc.php
输入:1227回车跳转到1227行将:
function buildExpressionHtmlTree(array $expressionTree, array &$next, &$letterNum, $level = 0, $operator = null,
修改为:
function buildExpressionHtmlTree(array $expressionTree, array &$next, &$letterNum, $level, $operator ,
保存并退出。
如左图
- 配置php
安装zabbix_web要按需配置php.ini
PHP.ini路径根据自己的修改,此处修改根据要求而定。
#sed -i 's/memory_limit = 128M/memory_limit = 256M/g' /opt/Php/lib/php.ini
#sed -i 's/max_input_time = 60/max_input_time = 600/g' /opt/Php/lib/php.ini
#sed -i 's/max_execution_time = 30/max_execution_time = 600/g' /opt/Php/lib/php.ini
#sed -i 's/;date.timezone =/date.timezone =PRC/' /opt/Php/lib/php.ini
# sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 50M/g' /opt/Php/lib/php.ini
# sed -i 's/post_max_size = 8M/post_max_size = 32M/g' /opt/Php/lib/php.ini
编辑zabbix配置文件,开启中文
#vim /usr/local/zabbix/include/locales.inc.php
'zh_CN' => ['name' => _('Chinese (zh_CN)'), 'display' => true],
#/etc/init.d/php-fpm restart
- 启动zabbix
#path/sbin/zabbix_server
#path/sbin/zabbix_agent
必须要看到10050和10051端口都起来
上述操作没有问题,启动web容器例如apache或者nginx
进入站点完成zabbix的web页安装。
http://IP/zabbix/
注意
-
确认在 检查先决条件 这个过程中无错误
如有错误需要自行安装功能模块支持
如有php选项错误,需要自行完成php配置文件的调整。
在全部修复完毕后,无错误的情况下再进行下一步。 -
zabbix-web管理页面默认登陆用户名是:admin(或者Admin) 密码是zabbix
-
为zabbix_agent创建启动脚本:
[Unit]
Description=Zabbix3.4.7,files by:/opt/Zabbix
After=network.target
[Service]
Type=forking
ExecStart=/opt/Zabbix/sbin/zabbix_agentd
ExecStop=ps -axu |grep php |grep -v 'grep'|awk '{print $2}'|xargs kill -9
PrivateTmp=true
[Install]
WantedBy=multi-user.target
常见问题
- 无法连接到服务器
mysqli::real_connect(): (HY000/2002): No such file or directory [setup.php:169 → CSetupWizard->__construct() → CSetupWizard->eventHandler() → CSetupWizard->dbConnect() → DBconnect() → MysqlDbBackend->connect() → mysqli->real_connect() in include/classes/db/MysqlDbBackend.php:173]
No such file or directory
这是因为你装在本机的mysql存储sock的路径不在/tmp中,所以php找不到
在php.ini中修改相应配置重启php:
#vim php.ini
pdo_mysql.default_socket = /opt/mariadb/mysql.sock
mysqli.default_socket = /opt/mariadb/mysql.sock
- zabbix-web界面中文乱码
从Windows中下载简体字体,替换到zabbix-web目录.或者点击此处下载。
复制到zabbix-web目录,替换字体文件。
#cd web容器目录html/zabbix/assets/fonts
#mv DejaVuSans.ttf DejaVuSans.ttf.bak
#mv STKAITI.TTF DejaVuSans.ttf