Zabbix的详细安装部署,及安装过程中遇到的问题及解决办法。

发布时间 2023-06-20 16:17:15作者: 轩思雨

Zabbix的详细安装部署

1.架构
Zabbix 由几个主要的功能组件组成,其职责如下所示。

SERVER

Zabbix server 是 Zabbix agent 向其报告可用性、系统完整性信息和统计信息的核心组件。是存储所有配置信息、统计信息和操作信息的核心存储库。

数据库

所有配置信息以及 Zabbix 收集到的数据都被存储在数据库中。

WEB 界面

为了从任何地方和任何平台轻松访问 Zabbix ,我们提供了基于 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。

PROXY

Zabbix proxy可以替 Zabbix server 收集性能和可用性数据。Zabbix proxy 是 Zabbix 环境部署的可选部分;然而,它对于单个 Zabbix server 负载的分担是非常有益的。

AGENT

Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。
————————————————

2.安装

记得先安装vim编辑器、wget下载工具、:

yum -y install vim

yum -y install wget

yum -y install net-tools

netstat -tunpl 端口查看必备工具:安装net-tools

了解了架构,我们开始进行安装,首先安装zabbix的存储库:

1.所有机器关闭防火墙和selinux
setenforing 0 (修改配置文件关闭)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld.service

2.准备两台机器,一台用做server,一台用做agent,mysql部署在server端的机器上。
server ip:192.168.8.139       host:zabbix-server

node ip:192.168.8.140       host:zabbix-agent (使用agent2客户端和snmp2 协议链接)

3.在192.168.8.139 安装zabbix的存储库
[root@zabbix-server ~]#rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@zabbix-server ~]# yum clean all  #清除YUM缓存

 

如果出现下载失败,或者没有反应,可用手动下载下来后在安装

 

 

 

4.安装 Zabbix 服务器和代理
[root@zabbix-server ~]# yum install zabbix-server-mysql zabbix-agent -y

5.安装 Zabbix 前端
[root@zabbix-server ~]# yum install centos-release-scl -y

编辑文件 /etc/yum.repos.d/zabbix.repo 并启用 zabbix-frontend 存储库。

[zabbix-frontend]
...
enabled=1
...

 

6.安装 Zabbix 前端包
[root@zabbix-server ~]# yum -y install zabbix-web-mysql-scl zabbix-apache-conf-scl

7.  创建初始数据库
[root@zabbix-server ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

上面的地址如果不行,可用使用下面的地址,注意版本

 wget http://repo.mysql.com/mysql80-community-release-el7-5.noarch.rpm

[root@zabbix-server ~]#yum -y install mysql80-community-release-el7-3.noarch.rpm       

centos彻底卸载mysql(不保留数据)
centos彻底卸载mysql(不保留数据)
1、 rpm -qa | grep -i mysql

查找已经安装的mysql.

MySQL-server-5.6.43-1.el6.x86_64

MySQL-client-5.6.43-1.el6.x86_64

MySQL-devel-5.6.43-1.el6.x86_64

以上三个就是我安装的mysql.

2、 yum -y remove MySQL-*

网上的一般用rpm -e 的命令删除mysql,这样表面上删除了mysql,可是mysql的一些残余程序仍然存在,并且通过第一步的方式也查找不到残余,而yum命令比较强大,可以完全删除mysql.(ps:用rpm删除后再次安装的时候会提示已经安装了,这就是rpm没删除干净的原因)

3、 find / -name mysql

查找mysql的一些目录,把所有出现的目录统统删除.可以使用rm -rf 路径,删除时请注意,一旦删除无法恢复。

4、rm -rf /etc/my.cnf

这个是删除配置文件

5、 rm -rf /root/.mysql_sercret

删除mysql的默认密码,如果不删除,以后安装mysql这个sercret中的默认密码不会变,使用其中的默认密码就可能会报类似Access denied for user ‘root@localhost’ (using password:yes)的错误.

五步完成之后,这样mysql就全部删除干净了.

vim mysql-community.repo 时,出现空白页面时,主要是数据库未安装,删除已经安装的数据库,再重新安装即可

 

 

[root@zabbix-server ~]#vim /etc/yum.repos.d/mysql-community.repo

打开5.7源地址,关闭8.0源地址,确保下载的数据库是mysql5.7;这里换mariadb也可以

[root@zabbix-server ~]# yum -y install mysql-community-server

mysql在安装后,会初始化生成一个随机密码,我们可以去日志里过滤出来

[root@zabbix-server ~]# systemctl start mysqld

启动mysql服务时出现报错: 
systemctl start mysql.service
错误提示如下:

Failed to start mysqld.service: Unit not found
解决方法如下:
首先需要安装mariadb和mariadb-server

yum -y install mariadb  mariadb-devel  mariadb-server

#以下内容视情况输入:如果mysql启动正常则不用输入。 启动服务 systemctl start mariadb.service 添加到开机启动 systemctl enable mariadb.service 进行一些安全设置,以及修改数据库管理员密码 mysql_secure_installation
yum -y install mariadb  mariadb-devel  mariadb-server
运行安装完成后如果有以下提示,解决办法如下:

执行以下命令

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

原因:可能是MySQL GPG 密钥已过期导致,改一下密钥。

 

 

mysql在安装后,会初始化生成一个随机密码,我们可以去日志里过滤出来 

[root@zabbix-server ~]# systemctl start mysqld   #现在运行mysql服务就成功了。

[root@zabbix-server ~]# grep 'password' /var/log/mysqld.log

  修改mysql密码:

登录mysql后,进行修改密码

mysql -uroot -ps0bsq6lIay:h

mysql执行语句报错,错误代码:1820

mysql执行语句报错

mysql> use mysql;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

    提示要用ALTER USER修改密码才可以 但是如果想要设置非常简单的密码,比如123456会提示密码不符合要求

mysql> alter user 'root'@'localhost' identified by '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

/ /  但是修改这个参数会报错,没有这个系统变量
mysql> set global validate_password_policy=0;
ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'

添加参数

    这个时候就得去修改一下mysql的配置文件

[root@zheng ~]# vi /etc/my.cnf
[mysqld]      ## 在mysqld文本段里添加这两行
#添加密码验证插件
plugin-load-add=validate_password.so

#服务器在启动时加载插件,并防止在服务器运行时删除插件
validate-password=FORCE_PLUS_PERMANENT


"/etc/my.cnf" 34L, 1167C written
[root@zheng ~]# systemctl restart mysqld            / /  修改完重启mysql
[root@zheng ~]# mysql -uroot -p
Enter password:   密码123

修改参数值

    修改validate_password_policy参数的值
    validate_password_length(密码长度)参数默认为8,我们修改为1

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

   

mysql安装成功

mysql> show databases;        /  /  这里就可以正常使用了
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

    这里说一下,我这用的是5.7版本的,mysql8.0是不支持这么修改的

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.30, for Linux (x86_64) using  EditLine wrapper

Connection id:          5
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.7.30
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 1 hour 58 min 34 sec

Threads: 1  Questions: 26  Slow queries: 0  Opens: 106  Flush tables: 1  Open tables: 99  Queries per second avg: 0.00

8.0mysql版本修改参数设置

mysql>  set global validate_password.policy=0;
mysql>  set global validate_password.length=1;

 

mysql给root开启远程访问权限

注意以下命令是再mysql命令下输入:

use mysql;

select  User,authentication_string,Host from user;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';

flush privileges;

 

 

创建zabbix数据库,并创建数据库用户zabbix和密码Zabbix@2021
刷新权限
退出
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all on zabbix.* to zabbix@localhost identified by 'Zabbix@2021';
mysql> flush privileges;
mysql> quit;
在 Zabbix 服务器主机上导入初始模式和数据。系统将提示您输入新创建的密码。

[root@zabbix-server ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password: //此处输入上面创建用户时,设置的密码,回车导入数据;

可再次进去到数据库,确认zabbix库中有数据生成;

等待数据库初始化导入。

mysql> show databases; #查询mysql中有那些数据库。
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| zabbix             |
+--------------------+
5 rows in set (0.01 sec)

mysql> use zabbix  #进入zabbix数据库


mysql> show tables;#查询zabbix数据库中有那些表。
quit; #退出数据库
8.为 Zabbix 服务器配置数据库
编辑文件 /etc/zabbix/zabbix_server.conf

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix@2021

可用使用命令查看有用的内容,可用直接排除掉#注释文件和空格
grep -Ev '^#|^$' /需要查询文件的路径,例如
grep -Ev '^#|^$'  /etc/zabbix/zabbix_server.conf
这样就只会显示有用的信息

 

9.为 Zabbix 前端配置 PHP
编辑文件/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf,取消注释并为您设置正确的时区。

php_value[date.timezone] = Asia/Shanghai
10.启动 Zabbix 服务器和代理进程
[root@zabbix-server ~]# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
[root@zabbix-server ~]# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

访问http://192.168.8.139/zabbix

 

 

 

 

 

 

出现以下登录界面,

Zabbix监控平台有默认管理员用户;

默认用户名Admin,密码为zabbix;

 

 

解决报错zabbix service is not running:the information displayed may not be current
1、进入服务器,先看一下zabbix server的状态,嘿呀哈,还确实没运行,状态显示为FAILED
systemctl status zabbix-server

 

2、原因分析:可能是SELinux安全子系统拦截了。

3、解决方法:

①将zabbix-server加入到SELinux的规则内;

②关闭SELinux安全子系统;

以我性子,万事不求人,我喜欢主动;直接选择关闭SELinux

4、临时关闭和永久关闭,看需求选择
setenforce 0 //临时关闭

5.永久关闭需要修改配置文件:

vi /etc/selinux/config

将SELINUX=enforcing的值修改为disabled。

修改后按 esc 退出,然后再输 :wq,即保存并退出;然后重启服务器就OK啦

 systemctl restart zabbix-server

日志查看

tailf /var/log/zabbix/zabbix_server.log

页面显示为英文,可以设置为中文
Admin用户,可以设置任何用户的语言
设置自己的语言如下图

 

 

 

这样我们的zabbix的一个安装就完成了。下一章介绍客户端使用 agent2 和 snmp v2 协议上线。