Zabbix编译安装及配置

此贴待改,原始时间为: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

  1. 创建zabbix需要的用户及组
#groupadd zabbix 
#useradd -g zabbix -r -s /sbin/nologin -M zabbix

-g 指定用户组 -r 系统用户 -s 指定登录的shell这里是不允许登录 -M 不创建家目录

  1. 安装依赖和插件包
    #yum -y install net-snmp-devel libxml2-devel libcurl-devel libevent libevent-devel
    这里如果是mariadb用户需要再安装一个mariadb-devel

  2. 解压从官网下载的源码包
    #tar -zxvf zabbix-3.4.7.tar.gz

  3. 进入预编译文件夹
    #cd zabbix-3.4.7.tar.gz

  4. 按需编译:

#./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依赖包。编译安装的时候也必须制定数据库配置文件的路径!如果编译参数写错,重新编译需要清理一下编译环境再编译不然还是之前的配置。

配置

  1. 进入mariadb数据库,为zabbix创建一个数据库。
    >create database zabbix character set utf8 collate utf8_bin;

  2. 并且提供完全控制的权限。
    >grant select,insert,update,delete,create,drop on zabbix.* to 'zabbix'@'%' Identified by 'zabbixadmin';
    创建一个zabbix用户,密码为zabbixadmin,对数据库zabbix有所有权限。

  3. 为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
  1. 创建日志目录
    #mkdir /var/log/zabbix/logs

  2. 编辑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
  1. 复制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 ,
保存并退出。

如左图
image.png

  1. 配置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
  1. 启动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

image.png
这是因为你装在本机的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界面中文乱码
    image.png
    从Windows中下载简体字体,替换到zabbix-web目录.或者点击此处下载
    复制到zabbix-web目录,替换字体文件。
#cd web容器目录html/zabbix/assets/fonts
#mv DejaVuSans.ttf DejaVuSans.ttf.bak
#mv STKAITI.TTF DejaVuSans.ttf
# Linux  Zabbix 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×