记一次 zabbix server 安装过程

说明:系统采用 centos 7,安装文档参照zabbix 4.2 官方指导文档。

https://www.zabbix.com/documentation/4.0/zh/manual/installation/install_from_packages/rhel_centos

1、添加 Zabbix 软件仓库

安装软件仓库配置包,这个包包含了 yum(软件包管理器)的配置文件。

rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-2.el7.noarch.rpm

2、处理前端安装的先决条件

Zabbix 前端需要额外的基础安装包。 您需要在运行 Zabbix 前端的系统中启用可选 rpms 的软件仓库:

yum-config-manager --enable rhel-7-server-optional-rpms

3、创建用户账户

对于所有 Zabbix 守护进程,需要一个非特权用户。 如果从非特权用户帐户启动 Zabbix 守护程序,它将以该用户身份运行。然而,如果一个守护进程以“root”启动,它会切换到“zabbix”用户,且这个用户必须存在。在 Linux 系统中,可以使用下面命令建立一个用户(该用户属于自己的用户组,“zabbix”):

groupadd zabbix
useradd -g zabbix zabbix

4、安装 Server/proxy/前端

安装 Zabbix server(适用于 RHEL7,在 RHEL 6 上弃用)并使用 MySQL 数据库:

yum install zabbix-server-mysql

5、安装 Zabbix 前端(适用于 RHEL 7,在 RHEL 6 上弃用)并使用 MySQL 数据库:

 yum install zabbix-web-mysql

6、初始化数据库(MySQL)

6.1、创建数据库
create database zabbix character set utf8 collate utf8_bin;
6.2、创建用户
create user 'zabbix'@'%' IDENTIFIED by 'zabbix';

说明:格式:create user "username"@"host" identified by "password"; /host="localhost"为本地登录用户,host="ip"为ip地址登录,host="%",为外网ip登录/

6.3、授权用户
grant all privileges on zabbix.* to 'zabbix'@'%';

说明:格式:grant privileges on databasename.tablename to 'username'@'host' IDENTIFIED BY 'PASSWORD'; priveleges(权限列表),可以是all priveleges, 表示所有权限,也可以是select、update等权限,多个权限的名词,相互之间用逗号分开。 on用来指定权限针对哪些库和表。 . 中前面的号用来指定数据库名,后面的号用来指定表名 to 表示将权限赋予某个用户, 如 jack@'localhost' 表示jack用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。注意:这里%有的版本不包括本地,以前碰到过给某个用户设置了%允许任何地方登录,但是 在本地登录不了,这个和版本有关系,遇到这个问题再加一个localhost的用户就可以了。 identified by指定用户的登录密码,该项可以省略。

6.4、导入sql脚本

/usr/share/doc/zabbix-server-mysql*/create.sql.gz 在这个路径下找到create.sql 并在数据库中执行

7、为 Zabbix server/proxy 配置数据库

编辑 zabbix_server.conf 或 zabbix_proxy.conf 文件以使用已创建的数据库

# vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=<password>

8、启动 Zabbix server 进程

service zabbix-server start ##启动
service zabbix-server stop ##停止
service zabbix-server restart ##重启
systemctl enable zabbix-server ##设置开机自启动

9、前端 httpd 安装并启动

9.1、安装一些必备的包
yum -y install gcc
yum -y install gcc-c++
yum -y install make
9.2、安装httpd
yum install httpd

安装完成后先检查下80端口是否已开启

firewall-cmd --query-port=80/tcp   ## 提示no表示未开

开启 80 端口

firewall-cmd --add-port=80/tcp --permanent   ##提示    success 	表示成功

重启防火墙

firewall-cmd --reload

启动 httpd 服务

service httpd start ##启动
service httpd stop ##停止
service httpd restart ##重启
systemctl enable httpd ##设置开机自启动

httpd启动可以访问http://ip:80 查看是否已正常启动

10、检查安装PHP

首先检查系统是否已安装PHP(默认会安装PHP 5.4)
yum list installed | grep php

如果有安装且不想升级则无需操作,如果没有安装或者想升级为7.0则进行如下操作: 已安装PHP时先卸载老的版本

yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 php-mysql.x86_64 php-pdo.x86_64
引入新的仓库
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm   
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
安装PHP 7.0
yum install php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-mysql.x86_64 php70w-pdo.x86_64
PHP 安装完后还需要安装PHP-FPM(默认是没有安装的,需要检查安装)
yum install php70w-fpm   ##PHP 7.0 版本的 
yum install php-fpm   ##PHP 老版本的

PHP配置文件php.ini路径: /etc/php.ini php-fpm配置文件php-fpm.conf路径:/etc/php-fpm.conf httpd站点文件位置:/var/www/html

更新zabbix php文件

在安装好php后需要将zabbix的php文件拷贝至站点目录,zabbix的php文件在zabbix-4.2.6.tar文件包下的:zabbix-4.2.6.tar\zabbix-4.2.6\frontends\php 这个目录。需要将文件拷贝至:/var/www/html 。在拷贝完成后重启httpd服务即可。

更新 php.ini

在首次登录zabbix页面(http://ip:80/index.php) 时会进行zabbix的配置,初次检查会有一些配置项检测不通过,只需要不通过的配置项在php.ini文件中找到对应的配置并将值修改为建议的值即可。需要注意的是有些提示失败的不是php.ini文件的中的选项,则有可能是系统缺少了相关组件的安装。按照提示直接用过yum进行安装即可。如:yum install php-xmlreader。

登录

默认登录名:Admin 登录密码:zabbix

碰到的问题

Can't connect to MySQL server on 'ip' (13)

无法连接到数据库,这里很多时候是SELINUX导致的,需要关闭或者允许连接

setsebool -P httpd_can_connect_zabbix on
setsebool -P httpd_can_network_connect_db=1
## 关闭selinux
vim  /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
#SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
#SELINUXTYPE=targeted 
SELINUX=disable

Error connecting to database: Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/l

原来,MySql 8.0.11 以上版本 换了新的身份验证插件(caching_sha2_password), 原来的身份验证插件为(mysql_native_password)。而客户端工具Navicat Premium12 中找不到新的身份验证插件(caching_sha2_password),对此,我们将mysql用户使用的 登录密码加密规则 还原成 mysql_native_password,即可登陆成功。具体操作:首先使用 MySql 数据库自带的命令行客户端工具登录数据库 use mysql从数据库的user表中查询 mysql 用户原来使用的身份验证插件select user,host,plugin,authentication_string from user;将用户Xue使用的身份验证插件 替换为之前版本使用的 mysql_native_password .

具体操作:
select user,host,plugin,authentication_string from user;  
alter user 'zabbix'@'%' IDENTIFIED with mysql_native_password by 'zabbix';