目录
现在zabbix更新到了5.0了,所以我直接就用最新版本zabbix5.0,使用的是dnf安装,我这先安装,然后再给大家讲zabbix概念。
为全方便读者理解
- 在执行命令或命令代码段中添加了注解
- 命令或命令代码段中的注解不会影响命令执行,可以复制整个命令,粘贴即可
- 为了方便复制我把执行命令和效果命令分开,只复制执行命令即可,效果命令不用复制,效果命令主要是为了给读者看一下执行命令的效果
一、实验环境
Zabbix从3.0版本起,服务器端只支持centOS6以上版本(即centos7/8),客户端和代理可以支持centOS6
1.1 环境说明
#本文在centos8.2基础上进行安装
[root@vm82 ~]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
| 主机名 |
IP地址(外网) |
IP地址(内网) |
描述 |
| vm82 |
ens32:192.168.128.82 |
ens33:192.168.3.82 |
|
| vm821 |
ens32:192.168.128.21 |
ens33:192.168.3.21 |
|
| vm822 |
ens32:192.168.128.22 |
ens33:192.168.3.21 |
|
| 备注: |
|
||
1.2 准备工作(所有)
操作系统:centos8.2 64位,在安装mysql之前centos8.1做了
- 关闭了防火墙、selinux、时间同步、epel及remi源、
- 安装vim lrzsz wget curl man tree rsync软件
- 安装了gcc及gcc++ v8版本
其中防火墙、selinux强烈建议设置一下,其它可以不用,具体见附录一中的 1.6 安装第三方源epel源及remi源(必要)
#在vm821和vm822加入hosts绑定主机名
echo '192.168.3.82 vm82'>>/etc/hosts
echo '192.168.3.21 vm821'>>/etc/hosts
echo '192.168.3.22 vm822'>>/etc/hosts
1.3 所涉及的软件及版本
| 软件 |
版本 |
安装方式 |
备注 |
| xshell |
6.0 |
win exe |
ssh连接连接工具 |
| zabbix |
5.0.2 |
dnf安装,使用目前最新版本 |
目前最新版本为4.4.8 |
| nginx |
1.18.0 |
dnf安装,使用目前最新版本 |
dnf安装的最新版本 |
| mysql |
8.0.21 |
dnf安装,使用8.0 |
最新版本8.0 |
| php |
7.4.9 |
dnf安装,使用目前最新版本 |
目前最新版本 |
| 注:使用LNMP主要是做zabbix是以web方式管理的、以web形式展示数据 |
|||
官方安装需求:https://www.zabbix.com/documentation/current/manual/installation/requirements
1.3.1 zabbix体系结构

1.3.2 安装zabbix所需的软件
从图中可以看出,安装zabbix需要如下:
1)Zabbix web是php写的,故需要安装php
2)Zabbix database是存放数据存的地方,只要关系型数据库都行,这里选择mysql
3) Zabbix server中可以看出是通过web页管理的,故需要安装http,这里选择nginx
4)Zabbix proxy这个是选择性安装的
可以选择LAMP或LNMP,我这里选择主流的LNMP环境,因为主要是用zabbix软件,所以LNMP环境用dnf安装Zabbix database和Zabbix server是可以分离的,这里为了实验方便,安装在同一台主上。
Zabbix Server:负责接收agent发送的报告信息的核心组 件,所有配置、统计数据及操作数据均由其组织进行;
Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据,以及存储在Zabbix所配置的配置信息,比如:哪个指标需要监控,多长时间监控一次等;
Web interface:zabbix的GUI接口,通常与Server运行在 同一台主机上;
也可以看官网的zabbix安装需求,主要是使用PHP+数据库,其它我就不一一列出来了
二、zabbix服务端安装lnmp(dnf)
在新版本zabbix5.0中,如果你不安装nginx,它也会用dnf/yum安装默认的nginx,版本为1.14,所以我先安装最新稳定版本
2.1 安装nignx(dnf)
2.1.1 安装nginx(dnf)
根据nginx官方centos安装文档,我直接配置yum源方式安装
#安装管理工具 yum-utils 用yum和dnf都可以
dnf install yum-utils -y
#配置nginx官方yum源
cat>/etc/yum.repos.d/nginx.repo<<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
cat /etc/yum.repos.d/nginx.repo
#官网默认nginx-mainline版本是禁止的,即 enabled=0,如果要开启,则会安装主线版本,而非稳定版本
#下面是开启命令,在这里不要开启 yum-config-manager --enable nginx-mainline #这个功能就是找到nginx-mainline 标签下设置enabled=1,使用下面命令也是等效的 #sed -i '/enabled=0/s/0/1/' /etc/yum.repos.d/nginx.repo
2.1.2 安装指定版本nginx(dnf新特性)
CentOS8给我们带来了一些新的特性,这次是完全用dnf取代了yum来进行包管理,同时在软件包管理上也有一些更新,增加了dnf module功能,dnf module在软件安装上更方便,可以通过dnf module install 在安装软件时指定安装的版本,默认dnf install安装时,优先安装软件仓库中最新版本,有了dnf module install 之后可以在不同软件版本之间切换。
在此之前先安装一个yum配置管理,方便管理
#安装yum配置管理
dnf install yum-utils -y
#列出nginx模块相关的版本
dnf module list nginx
效果如下:
#列出nginx模块相关的版本 [root@vm82 ~]# dnf module list nginx 上次元数据过期检查:0:06:30 前,执行于 2020年08月20日 星期四 13时17分38秒。 CentOS-8 - AppStream Name Stream Profiles Summary nginx 1.14 [d] common [d] nginx webserver nginx 1.16 common [d] nginx webserver Extra Packages for Enterprise Linux Modular 8 - x86_64 Name Stream Profiles Summary nginx mainline common nginx webserver 提示:[d]默认,[e]已启用,[x]已禁用,[i]已安装
发现上面的有2个源一个centos默认的AppStream,另一个是epel源,官方nginx源没有在dnf模块中。官方nginx存在仓库中

因后面使用remi源安装php7.4,一定会用到nginx模块依赖的,下图是我没有用dnf module install安装,而是用dnf install直接安装的截图,在截图中就会自动安装nignx默认版本

所以还得用dnf module 安装,我这里直接指定高一点的版本 ,从上面知道最后的版本为1.16
#安装nginx,这样会连官网稳定版本1.18和模块一起安装
dnf module install:1.16 -y

上面的主模块修改为官网最新稳定版本1.18,而并非是1.16版本
#查看版本,应该是目前最新稳定版本1.18.0
nginx -v
#检查语法
nginx -t
#启动nginx
systemctl start nginx
systemctl status nginx
#查看是否开机启动
systemctl list-unit-files|grep enable|grep nginx
systemctl enable nginx
#隐藏版本号(可选)
为了nginx安全往往把版本号隐藏掉,不让显示出来
#在http{...}配置文件中添加server_tokens off;
cd /etc/nginx/
cp nginx.conf nginx.conf.orig
sed -i '/^http/a\ server_tokens off;' nginx.conf
grep -A 2 '^http' nginx.conf

#检查配置是否有误
nginx –t
#平滑重启nginx
systemctl reload nginx
#备份一下nginx配置目录
cp -ar /etc/nginx /etc/nginx.orig
#注:有的机子reload没有生效的,只能直接重启!
PS:平滑重启就是先关闭已建议的连接再重启;重启则是暴力的,直接就重启了,不管nginx有没有在处理客户请求。
看一下是否能打开直接输入IP地址

PS:如果因添加官网的nginx源文件,导致php使用不了,可以先卸载再把nginx官方yum文件删除,直接使用dnf module install nginx:1.16 命令安装
2.2 安装mysql8.0 (dnf)
2.2.1 安装
根据mysql官网的yum库网页

知道它的下载地址就可以直接用rpm安装了,在安装之前查看是否存在mysql
#查看是否存在mysql,如果存在则需要执行yum remove mysql*进行
rpm -qa|grep mysql
yum remove mysql*
rpm -ih https://repo.mysql.com/mysql80-community-release-el8-1.noarch.rpm
#检查是否安装成功
yum repolist enabled | grep "mysql.*-community.*"

#查看当前MySQL Yum Repository中所有MySQL版本(每个版本在不同的子仓库中)
yum repolist all | grep mysql

#检查当前启动的仓库,如果同时启用了多个仓库,安装时会选择最新版本
yum repolist enabled | grep mysql

#安装依赖
dnf install perl openssl openssl-devel -y
#我这里使用官网mysql80-community安装,所以需要指定
dnf --repo mysql80-community install -y \
mysql-community-server mysql-community-devel mysql-community-clien

改为手工安装,因mysql源是国外源安装太慢了,现在我这里修改为手工安装按ctrl+c退出dnf 安装
#------------------------------------------手工安装开始-------------------------------------
#如果下载慢可以去官网仓库http://repo.mysql.com/yum/mysql-8.0-community/el/8/x86_64
#手工下载,再上传到目录中用dnf命令安装,但是还是慢,所以使用国内仓库,可以是阿里云、163、搜狐等
#我这里使用的是华云镜像https://mirrors.huaweicloud.com/mysql 下载,操作如下:
#建立相关目录
mkdir -p /disk1/tools/
cd /disk1/tools/
mkdir mysql8
cd mysql8
#下载相关mysql rpm包
wget https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-community-common-8.0.21-1.el8.x86_64.rpm
wget https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-community-libs-8.0.21-1.el8.x86_64.rpm
wget https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-community-server-8.0.21-1.el8.x86_64.rpm
wget https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-community-devel-8.0.21-1.el8.x86_64.rpm
wget https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-community-client-8.0.21-1.el8.x86_64.rpm
#安装rpm包,注意,一定要先安装mysql yum源,否则无法判断依赖关系
dnf install mysql*.rpm -y
cd ..
#------------------------------------------手工安装结束-------------------------------------

2.2.2 修改配置文件
#1建立相关目录:
#建立相关目录
mkdir -pv /disk1/logs/mysql/mysql8.0/error
mkdir -pv /disk1/logs/mysql/mysql8.0/slow
mkdir -pv /disk1/mysqlData
chown mysql.mysql -R /disk1/logs/mysql
chown mysql.mysql -R /disk1/mysqlData
#2 修改my.cnf配置
cp /etc/my.cnf /etc/my.cnf.orig
vi /etc/my.cnf
#编辑配置文件并修改,黑色粗体部分为添加的,红色部分为修改的,普通黑色为原配置
[client]
#版本8不推荐用default-character-set=utf8
default-character-set = utf8mb4
[mysql]
#版本8不推荐用default-character-set=utf8
default-character-set = utf8mb4
[mysqld]
#datadir=/var/lib/mysql
datadir=/disk1/mysqlData
socket=/var/lib/mysql/mysql.sock
#log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
##by hua尾行添加
#设置密码策略及长度,mysql5.7开始默认安装并开启validate_password插件
#第一次初始化运行的时候要去掉,否则因mysql初始化生成不了密码而起不来
#8.0不要
#5.7 validate_password_policy=0
#5.7 validate_password_length=4
#validate_password.policy=0
#validate_password.length=4
default-time-zone='+08:00'
port = 3306
#id是唯一的,不能与主库的server_id相同,多个的从库的话也不能与其它从库相同
server_id =1
#设置默认字符集,也可以取消,取消则用安装时的默认字符集(不指定一般为latin1)
#用show variables like '%char%';命令可以查看安装时的字符集是多少
default-storage-engine=INNODB
#版本8不推荐用character-set-server=utf8
character-set-server=utf8mb4
#版本8不推荐用collation-server=utf8_general_ci
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
innodb_file_per_table=1
#同步一定要开启bin log
log-bin=/disk1/logs/mysql/mysql8.0/mysql-bin
log-queries-not-using-indexes=on
log-error=/disk1/logs/mysql/mysql8.0/error/error.log
#记录慢查询,建议开启
slow-query-log = on
long_query_time = 3
slow_query_log_file=/disk1/logs/mysql/mysql8.0/slow/slowquery.log
#管理慢查询sql ,1为开启0为关闭
log-slow-admin-statements=1
#记录从库上执行的慢查询语句
log-slow-slave-statements=0
# 将没有使用索引的语句记录到慢查询日志
log-queries-not-using-indexes=1
PS:最好把编码改为UTF8MB4
PSS:my.cnf配置的符号一定要看清楚!我之前因复制word的时候,不知道为什么,符号变成中文了!
init_connect='SET NAMES utf8mb4'写成了init_connect=’SET NAMES utf8mb4 #单引号变成了 ’ ,还复制少了一个 ’ 号,没仔细看还真发现不了! #这样造成了 GRANT ALL PRIVILEGES 给所有权限用户没问题,但是指定权限,如执行 GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%'; #命令之后,发现使用此用户连接mysql都出问题,连接不上,直接在linux可以连接上,执行任何命令都 #报错:ERROR 2013 (HY000): Lost connection to MySQL server during query还有一个问题就是init_connect=’SET NAMES utf8mb4 出现

本文详细介绍了Zabbix 5.0在CentOS 8上的安装过程,包括环境准备、LNMP环境搭建、Zabbix服务器端与客户端的安装配置,以及中文乱码问题的解决。
最低0.47元/天 解锁文章
1203

被折叠的 条评论
为什么被折叠?



