以下教程为openEuler22.03安装zabbix4.0,主要原因是openEuler官方和zabbix官方提供的提供的软件源中没有相关软件,因此需要使用zabbix源码进行编译,并且安装过程中会出现一些异常情况,建议先看过整个安装流程再进行

1. 安装lamp环境

首先需要安装lamp环境作为zabbix运行的基础,即Linux+Apache+Mysql+PHP,这里我直接使用Mariadb来代替Mysql

[root@openEuler ~]# dnf install -y httpd mariadb-server mariadb php php-mysqlnd php-gd libjpeg* php-ldap php-odbc php-pear php-bcmath php-mbstring php-xml php-mhash libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel  pcre-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel mhash mhash-devel php-mysqlnd libsqlite3x-devel libzip-devel gcc automake autoconf libtool make

修改Apache配置文件/etc/httpd/conf/httpd.conf,添加index.php

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

修改PHP配置文件/etc/php.ini,去掉date.timezone前面的;注释,时区为中国时区

date.timezone = Asia/Shanghai

在/var/www/html/目录下创建index.php文件,写入以下内容

<?php
    phpinfo();
?>

重启Apache和PHP服务,并设置为开机自启

[root@openEuler ~]# systemctl restart httpd.service
[root@openEuler ~]# systemctl enable httpd.service
[root@openEuler ~]# systemctl daemon-reload
[root@openEuler ~]# systemctl restart php-fpm.service
[root@openEuler ~]# systemctl enable php-fpm.service

在浏览器中访问http://本机IP地址/index.php,如果出现以下界面则证明Apache和PHP环境已经搭建好了
在这里插入图片描述
初始化Mariadb数据库,执行以下命令,根据提示自行操作

[root@openEuler ~]# mysql_secure_installation

2. 安装Zabbix

官网下载zabbix源码包,并解压
在这里插入图片描述

[root@openEuler ~]# tar xf zabbix-4.0.44.tar.gz -C /usr/local/

安装zabbix依赖包

[root@openEuler ~]# dnf install net-snmp-devel libevent-devel

创建zabbix用户,这一步一定要执行,不然无法启动zabbix项目

[root@openEuler ~]# useradd -r -M -s /sbin/nologin zabbix

创建zabbix数据库以及用户

[root@openEuler ~]# mysql -uroot -p
MariaDB [(none)]>create database zabbix character set utf8 collate utf8_bin; #创建zabbix数据库
MariaDB [(none)]>grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; #创建zabbix数据库用户,并设置密码为zabbix
MariaDB [(none)]>flush privileges; # 刷新授权

导入zabbix数据库数据,sql文件路径为/usr/local/zabbix-4.0.44/database/mysql/

[root@openEuler ~]# cd /usr/local/zabbix-4.0.44/database/mysql/
[root@openEuler mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@openEuler mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@openEuler mysql]# mysql -uzabbix -pzabbix zabbix < data.sql

在导入过程中可能会出现以下问题,原因为导入的数据行太长

ERROR 1118 (42000) at line 1278: Row size too large (> 8126)

在Mariadb的配置文件/etc/my.cnf.d/mariadb-server.cnf中的[mysqld]标签下添加以下内容,再重启数据库

innodb_strict_mode=0

[root@openEuler ~]# systemctl restart mariadb.service

编译安装zabbix

[root@openEuler ~]# cd /usr/local/zabbix-4.0.44
[root@openEuler zabbix-4.0.44]# ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
[root@openEuler zabbix-4.0.44]# make install

配置zabbix服务端,修改配置文件中的数据库密码,并启动zabbix服务

[root@openEuler ~]# vim /usr/local/etc/zabbix_server.conf
DBPassword=zabbix
[root@openEuler ~]# zabbix_server
[root@openEuler ~]# zabbix_agentd

如果执行以下命令后可以看见10051和10050端口号,则证明启动成功

[root@openEuler ~]# ss -anlt

配置zabbix前端界面,修改PHP配置文件,并重启PHP服务

[root@openEuler ~]# vim /etc/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
[root@openEuler ~]# systemctl restart php-fpm.service

创建zabbix前端界面

[root@openEuler ~]# cd /var/www/html/
[root@openEuler ~]# mkdir zabbix
[root@openEuler ~]# cp /usr/local/zabbix-4.0.44/frontends/php/* /var/www/html/zabbix/

浏览器访问http://本地IP地址/zabbix/setup.php,在界面上根据提示填入相关信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在最后一步如果出现以下界面,则需要点击界面上的蓝色链接下载配置文件并放到其指定的路径/var/www/html/zabbix/conf/zabbix.conf.php,重新刷新界面
在这里插入图片描述
点击Finish后直接跳转到登录界面,默认账号为Admin,默认密码为zabbix
在这里插入图片描述
如果在zabbix主页上看到这个以下错误,则需要修改zabbix的php代码/usr/local/zabbix-4.0.44/frontends/php/include/classes/db/DB.php
在这里插入图片描述
建议直接搜关键字修改,修改后刷新页面即可

// add output options
$sql_parts = self::applyQueryOutputOptions($table_name, $options, $sql_parts, $table_alias);

// add filter options
$sql_parts = self::applyQueryFilterOptions($table_name, $options, $sql_parts, $table_alias);

// add sort options
$sql_parts = self::applyQuerySortOptions($table_name, $options, $sql_parts, $table_alias);

private static function applyQueryOutputOptions($table_name, array $options, array $sql_parts, $table_alias = null)

private static function applyQueryFilterOptions($table_name, array $options, array $sql_parts, $table_alias = null)

private static function applyQuerySortOptions($table_name, array $options, array $sql_parts, $table_alias = null)

$sql_parts = self::dbFilter($table_name, $options, $sql_parts, $table_alias);

private static function dbFilter($table_name, array $options, array $sql_parts, $table_alias = null)

3. 参考连接

https://www.cnblogs.com/winyhan/p/16648007.html
https://blog.csdn.net/qq_60387497/article/details/121304334
https://blog.csdn.net/weixin_42236288/article/details/105880236
https://blog.csdn.net/qq_29073353/article/details/116592500
https://blog.csdn.net/weixin_40228200/article/details/123716971

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐