Centos9部署Zabbix7.0 Server详细教程【保姆级】
卤蛋的快乐 2024-08-04 08:07:03 阅读 70
系统:Centos9 x86_64
Zabbix6.0之后,基本就不支持Centos7了,所以如果要用Centos7来部署得话,需要使用源码来部署,你可以理解为散装得驱动程序,你要告诉系统哪个放哪怎么使用才行,我试着部署了下Centos7的,属实很复杂,还容易失败,教程比这个多一倍,所以觉得还是用Centos9来部署,毕竟官方支持么,只要加载个zabbix库基本就能安装了,对新手小白属实友好,毕竟zabbix是个小工具,没必要非在Centos7上运行,生产环境中,开一台服务器要不了多少成本,学明白了比什么都重要对不对?
远程工具:MobaXterm_Personal
哈哈,教程比较详细,不管是操作得方法还是内容说明注释,主要针对菜和小白群体,所以有些方法看起来比较low,但是好在它好操作好理解,这正是菜鸟们需要得撒。别只点收藏,还是要动手去操作,去思考,才能学的明白,俗话说得好,买来的书不会看,借来得书才会认真读,所以本文限时免费到期可是要VIP才能看啦,觉得写的好得点赞和关注呗~
目录
一、安装配置MySQL8
1.下载MySQL
2.新建解压文件夹
3.解压安装包
4.安装SQL
5.启动MYSQL,并开机启动
6.数据库初始密码
7.修改简单密码
二、安装php8.0
1.加载remi库
2.安装PHP8和其相关的组件
三、安装zabbix
1.加载zabbix的软件库
2.关闭无关的库
3.清除缓存并更新
4.安装zabbix所需组件
5.epel.repo重新启用
四、配置zabbix数据库
1.配置数据库
2.配置conf文件
五、开启权限、端口、服务
1.开启权限
2.开启防火墙端口
3.启动服务
六、Web配置
1.Web初始配置
2.登入web用户
七、老毛病,得治
1.图表字体乱码现象
2.修复方法:
一、安装配置MySQL8
1.下载MySQL
<code>[root@localhost ~]#wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.37-1.el9.x86_64.rpm-bundle.tar
2.新建解压文件夹
其实下载下来的,就是压缩包,所以我们要对压缩包进行解压。先新建1个文件夹为SQL文件夹
方法1:
[root@localhost ~]#mkdir /root/sql
方法2:
3.解压安装包
解压到/root/sql/文件夹中,并进入解压的sql目录中【注意目录名有大小写区分】
<code>[root@localhost ~]#tar xf mysql-8.0.37-1.el9.x86_64.rpm-bundle.tar -C /root/sql/
x:代表 "extract",意思是提取归档文件中的内容。
f:告诉 tar 命令,接下来的参数是一个文件名,而不是要归档或提取的文件列表。
-C(注意大写):这是一个选项,允许您指定在何处(即哪个目录)解压缩文件。
4.安装SQL
#进入目录
[root@localhost ~]#cd sql
#安装目录中的安装包
[root@localhost sql]#rpm -ivh mysql-community-* --force --nodeps
-i: 安装软件包。
-v: 显示详细输出。
-h: 显示安装进度。
--force: 强制覆盖已经存在的文件。这可能会破坏系统,因为它会覆盖现有的文件而不进行任何检查。
--nodeps: 安装软件包时,不检查其依赖关系。这可能会导致软件包无法正常工作,因为它可能缺少必要的库或依赖项。
5.启动MYSQL,并开机启动
#启动MySQL
[root@localhost ~]#systemctl start mysqld
#MySQL加入开启自启
[root@localhost ~]#systemctl enable mysqld
6.数据库初始密码
#查询初始密码
[root@localhost ~]#cat /var/log/mysqld.log | grep password
7.修改简单密码
如果你想要设置简单的密码,你需要先更换一个初始密码,然后再修改策略,再修改简单密码,所以先使用一个复杂的密码作为新密码。【注意:数据库中输入的指令注意“;”这个符合别漏掉】
[root@localhost ~]#mysql -uroot -p
Enter password:输入初始密码
#使用root登入mysql,密码使用使用上方查询出来的密码→修改密码为Xa%^3T%T4!
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Xa%^3T%T4!';
#设置密码检查等级
mysql> set global validate_password.policy=0;
#0 (或LOW):允许密码包含最简单的密码(只包含小写字母、数字、特殊字符中的一类)。
#1 (或MEDIUM):要求密码至少包含小写字母、大写字母、数字、特殊字符中的三类。
#2 (或STRONG):要求密码至少包含小写字母、大写字母、数字、特殊字符中的四类。
#密码的最短长度
mysql> set global validate_password.length=5;
#密码至少要包含的小写字母个数和大写字母个数
mysql> set global validate_password.mixed_case_count=0;
#再次修改密码为qwe!123,并退出数据库
mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'qwe!123';
#退出
mysql> exit
二、安装php8.0
1.加载remi库
[root@localhost ~]# sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
#官方仓库:由Linux发行版的官方团队维护,包含经过严格测试和官方支持的软件包。
#Remi仓库:由Remi个人或他的团队维护,提供更新版本的软件包或官方仓库中没有的软件包。这些软件包可能没有得到官方支持,但由Remi团队维护。
示意图:
<code>#清除dnf的缓存【如RPM软件包文件、旧的headers和元数据(元数据描述了可用的软件包和它们的依赖关系)、dnf生成的其他临时文件】
[root@localhost ~]#dnf clean all
#下载并缓存元数据
[root@localhost ~]#dnf makecache
dnf clean all
首先,我们可以把 DNF(或 YUM)想象成一个帮助我们在网上购物的助手。这个助手会从不同的商店(也就是软件仓库)中查找我们需要的商品(软件包),并帮助我们购买(安装)。现在,这个购物助手有一个特点,就是它会记住之前去过的商店和看过的商品信息,这样下次我们想要同样的商品时,它就可以直接告诉我们哪里有,而不需要再去找一遍。这些信息就保存在它的记事本(缓存)里。dnf clean all
这个命令,就像是告诉购物助手:“把你的记事本清空,下次我要买东西时,你要重新去查找。”
dnf makecache
想象一下,你的网上购物助手(DNF)之前只知道几家商店(软件仓库)的位置和它们卖哪些商品(软件包)。但是有一天,你告诉助手:“发现了一个新的商店,这个商店有很多我需要的商品,你把这个商店也记下来吧。” 于是,你在助手的记事本(仓库配置文件)上写下了新商店的地址(baseurl
)。但是,仅仅写下地址并不意味着助手就立即知道这个新商店里具体有哪些商品和它们的价格(软件包版本和依赖关系)。这时,你需要让助手去这个新商店逛一圈,记下它卖的所有商品和价格,也就是更新它的商品目录(缓存)。
2.安装PHP8和其相关的组件
#下面是Zabbix server在使用PHP时需要用到的PHP相关组件的安装:
[root@localhost ~]#sudo dnf install -y php80 php80-php-cli php80-php-gd php80-php-json php80-php-mbstring php80-php-mysqlnd php80-php-xml
php80:
这是PHP 8.0的主要软件包,包含了PHP的核心解释器和基础功能。
php80-php-cli:
PHP的命令行接口(CLI),允许你从命令行运行PHP脚本。这在开发、测试和维护PHP应用程序时非常有用。
php80-php-gd:
#GD库是一个用于处理图像的开源代码库,它提供了一系列函数来动态创建和操作图像。在Zabbix中,它可能被用于图形显示。
php80-php-json:
提供了对JSON格式的解析和生成支持。JSON是Web服务中常用的数据交换格式。
php80-php-mbstring:
提供了对多字节字符串的支持,包括UTF-8等字符集。对于国际化应用非常重要。
php80-php-mysqlnd:
MySQL的原生驱动(Native Driver),用于与MySQL数据库进行交互。由于Zabbix通常使用MySQL作为其后端数据库,因此这个扩展是必须的。
php80-php-xml:
提供了对XML的支持,包括解析和生成XML文档。虽然Zabbix不直接依赖于XML处理,但某些PHP扩展或应用程序可能需要它。
php80-php-bcmath:
BC Math库提供了高精度数学计算的支持。虽然Zabbix本身可能不需要它,但某些PHP应用程序或扩展可能需要它。
php80-php-fpm:
FastCGI进程管理器(FPM)是一个用于管理PHP FastCGI进程的工具。它允许你将PHP作为独立的进程运行,而不是作为Apache或Nginx的模块。如果你打算使用Nginx作为Web服务器,并希望PHP作为FastCGI进程运行,那么这个扩展是必须的。
三、安装zabbix
1.加载zabbix的软件库
[root@localhost ~]#rpm -Uvh https://repo.zabbix.com/zabbix/7.0/alma/9/x86_64/zabbix-release-7.0-2.el9.noarch.rpm
#简单理解就是加载了zabbix官方的应用商店
2.关闭无关的库
1)进入软件库文件夹/etc/yum.repos.d/打开epel.repo文件
2)enabled=1改成enabled=0
3)因为安装zabbix所需组件时候,如果不关闭其他库,系统会去其他库中寻找相关组件,导致版本不对等问题,使得安装出现失败,现象如下:
3.安装zabbix所需组件
<code>[root@localhost ~]#dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
zabbix-server-mysql:
这是Zabbix服务器的软件包,它用于收集和处理来自客户端(如Zabbix代理或SNMP设备)的监控数据。这个软件包是为MySQL数据库设计的,因此它依赖于MySQL或MariaDB来存储配置、历史和触发器等信息。
zabbix-web-mysql:
这个软件包包含了Zabbix的前端Web界面,允许用户通过Web浏览器来查看和管理监控数据。这个软件包也是为MySQL数据库设计的,因此它会与zabbix-server-mysql协同工作。
zabbix-apache-conf:
这个软件包提供了Apache HTTP服务器的配置文件,以便能够正确地为Zabbix的Web界面提供服务。如果你使用的是Apache作为Web服务器,这个软件包会帮助你将Zabbix Web界面集成到Apache中。
zabbix-sql-scripts:
这个软件包包含了创建Zabbix数据库结构所需的SQL脚本。在安装Zabbix服务器之前,你需要使用这些脚本来创建和初始化数据库结构。这些脚本是为MySQL和PostgreSQL等数据库设计的。
zabbix-selinux-policy:
如果你的系统启用了SELinux(Security-Enhanced Linux),这个软件包会提供必要的SELinux策略,以确保Zabbix能够正常运行而不会被SELinux阻止。SELinux是一个安全模块,用于提供强制访问控制。
zabbix-agent:
Zabbix代理是一个可以安装在被监控设备上的软件,用于收集设备上的监控数据并将其发送到Zabbix服务器。虽然这个命令是在服务器上执行的,但安装zabbix-agent也可以让你在同一台服务器上监控其本地资源。
4.epel.repo重新启用
四、配置zabbix数据库
1.配置数据库
[root@localhost zabbix]# mysql -uroot -p
Enter password:输入之前设置root访问数据库的密码
#创建了一个名为zabbix_proxy的新数据库,该数据库使用utf8mb4字符集和utf8mb4_bin校对规则,这使得它特别适合于存储包含特殊字符(如emoji)的数据,并且以二进制方式比较和排序字符串。
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
utf8mb4
:
是一个Unicode字符集,可以存储多达4字节的字符。这个字符集特别有用,因为它可以存储像emoji这样的特殊字符,而标准的utf8
字符集(实际上是utf8mb3
)则不能。
utf8mb4_bin:
utf8mb4_bin
是一个二进制校对规则,它基于字符的二进制值进行比较。这意味着它区分大小写,并且不会考虑字符的排序规则(如字母表顺序)。如果你想要一个不区分大小写的校对规则,你可能会选择utf8mb4_general_ci
或utf8mb4_unicode_ci
等。
#创建一个数据库访问账号zabbix,密码为qwe!123
mysql> create user zabbix@localhost identified by 'qwe!123';
#授予用户 zabbix 在 zabbix 数据库上所有权限,并且这个权限仅适用于从 localhost 主机连接到 MySQL 服务器的用户。
mysql> grant all privileges on zabbix.* to zabbix@localhost;
授予权限:用户 zabbix 将获得在 zabbix 数据库上执行任何操作的能力,包括创建表、删除表、插入数据、更新数据、查询数据等。
指定数据库:这里的 zabbix.* 表示 zabbix 数据库中的所有对象(表、视图、存储过程等)。
指定用户:zabbix@localhost 表示用户名为 zabbix 的用户,并且这个用户只能从 localhost 连接到 MySQL 服务器。localhost 通常指的是 MySQL 服务器所在的机器。
权限范围:这个权限仅限于zabbix数据库,不影响其他数据库。
#告诉 MySQL 信任你,即使你正在创建或修改一个非确定性函数,你也知道如何确保主服务器和从服务器之间的数据一致性。为了防止后面导入初始数据库时会出现报错,所以临时降低安全性。
mysql> set global log_bin_trust_function_creators = 1;
#退出
mysql> quit;
这个指令需要一定的数据库知识才能理解,这边尝试解释下,能理解理解下,不能理解照着输入即可:
非确定函数是指:那些在相同的输入下可能会返回不同结果的函数。它们通常依赖于数据库之外的信息,比如当前时间、随机数生成器、数据库的其他部分(表或行)的状态等。在MySQL中,你定义的存储函数可以是确定性的或非确定性的。但是,即使你的数据库是新建的,并且还没有定义任何存储函数,你仍然可能会在尝试定义一个非确定性的存储函数时遇到问题,特别是当二进制日志(binary logging)被启用时。
MySQL为了保持复制的一致性,默认不允许在启用二进制日志时创建非确定性的存储函数。这是因为在主服务器上执行的非确定性函数可能会在从服务器上产生不同的结果,从而导致数据不一致。
通过设置log_bin_trust_function_creators
为1来允许创建这样的函数。但是,这样做之前,请确保你了解可能带来的风险,并且只在测试或开发环境中这样做。
如果不配配置中,后面再创建初始数据的时候可能会报错,所以先打开,初始数据创建完成后再关闭。
#导入zabbixd的初始数据库
[root@localhost ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Enter password:输入之前设置zabbix访问数据库的密码
官方提供的命令行,大致意思是读取/usr/share/zabbix-sql-scripts/mysql/server.sql.gz
文件(Zabbix的MySQL初始化脚本)的内容,并将其直接导入到名为zabbix
的MySQL数据库中,使用zabbix
用户名和提示输入的密码进行身份验证,并确保在数据传输过程中使用utf8mb4
字符集。
#关闭修改非确定性函数
[root@localhost zabbix]# mysql -uroot -p
Enter password:输入之前设置root访问数据库的密码
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
2.配置conf文件
1)修改zabbix应用程序的配置文件/etc/zabbix/中的zabbix_server.con数据库密码和监听端口参数,找个空白处输入进去即可。
#设置数据库密码位上方设置的zabbix密码qwe!123:
DBPassword=qwe!123
#设置监听客户端端口位10051:
ListenPort=10051
五、开启权限、端口、服务
1.开启权限
<code>#策略模式设置为宽容
[root@localhost ~]#setenforce 0
可以理解为降低些安全策略,如果不配置下面的apache用户可能无法写入配置文件。
作用:setenforce 命令用于设置 SELinux 的执行模式。SELinux 有三种模式:enforcing(强制模式)、permissive(宽容模式)和 disabled(禁用模式)。
具体用法:
setenforce 1:将 SELinux 设置为强制模式。在此模式下,SELinux 会强制执行访问控制策略,拒绝违反策略的操作并生成相应的日志。
setenforce 0:将 SELinux 设置为宽容模式。在此模式下,SELinux 会生成警告日志,但不会阻止违反策略的操作。
要完全关闭:SELinux,需要修改系统配置下的 selinux 文件,例如 /system/etc/selinux/config,将其中定义的模式修改为 Disabled。
不设置此策略后面可能会遇到的问题和现象:
2.开启防火墙端口
<code>#查看80端口状态,NO表示没打开,YES表示打开。
[root@localhost ~]#firewall-cmd --zone=public --query-port=80/tcp
#开启80、10050、10051端口,重启依然生效
[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@localhost ~]# firewall-cmd --zone=public --add-port=10050/tcp --permanent
[root@localhost ~]# firewall-cmd --zone=public --add-port=10051/tcp --permanent
#重新加载防火墙配置,立即生效
[root@localhost ~]#firewall-cmd –reload
这里的--permanent
标志确保即使在系统重启后端口仍然开放。
80:web访问端口
10050:客户端端口(因为服务器一般安装客户端会使用127.0.0.1来访问,所以不开也可以)
10051:客户端访问服务器端口
3.启动服务
#重新启动zabbix-server、zabbix-agent、httpd、php-fpm服务
[root@localhost ~]# systemctl restart zabbix-server zabbix-agent httpd php-fpm
#加入开机自动启动
[root@localhost ~]# systemctl enable zabbix-server zabbix-agent httpd php-fpm
zabbix-server(zabbix服务端):
这是 Zabbix 监控系统的服务器端。Zabbix 是一个开源的监控解决方案,用于监控网络、服务器、应用程序等。Zabbix 服务器负责接收来自代理和其他客户端的数据,并存储这些数据以供进一步的分析和报告。
zabbix-agent(zabbix客户端):
这是 Zabbix 监控系统的代理端。Zabbix 代理部署在要监控的服务器上,负责收集该服务器的各种指标(如 CPU 使用率、内存使用情况、磁盘空间等),并将这些数据发送到 Zabbix 服务器。
httpd(httpd
负责处理HTTP请求和响应,而 php-fpm
负责执行PHP代码):
这通常是 Apache HTTP 服务器的服务名称。Apache 是一个流行的 Web 服务器软件,用于托管网站和提供 Web 服务。如果您正在使用 Zabbix 的 Web 前端,那么 Apache 服务器可能用于提供对 Zabbix Web 界面的访问。
php-fpm(负责执行PHP代码):
这是 PHP FastCGI 进程管理器(PHP-FPM)的服务名称。PHP-FPM 是一个 FastCGI 进程管理器,用于管理 PHP 解释器的进程。如果您的 Zabbix Web 前端是用 PHP 编写的,那么 PHP-FPM 将负责处理 PHP 脚本的执行
六、Web配置
1.Web初始配置
1)打开浏览器,输入“http://IP/zabbix/”进行访问(IP指的是服务器的IP地址),会自动跳转到配置页面,选择中文,点击下一步
2)他会检测PHP的参数是否配置正确上面没有配置错误的话一般都是正常的,如果有问题就到/etc/php.ini修改这个文件的参数即可。
3)输入zabbix用户访问数据库的密码,然后下一步
4)设置主机名(自己设置即可),我喜欢暗色,所以主题选了暗色,你们自行选择,然后直接下一步到完成。
2.登入web用户
七、老毛病,得治
怎么说?到这边是不是很有成就?是不是以为大功告成?别急还没完,Zabbix的老毛病屡教不改要治一治。
1.图表字体乱码现象
2.修复方法:
1)下载字体【注意:选择楷体,其他zit 可能导致显示异常,图示是win11系统操作方法,win10类似,自行研究即可】
2)上传字体于“/usr/share/zabbix/assets/fonts/”中
3)打开/usr/share/zabbix/include/defines.inc.php文件,修正字体指向配置。
4)刷新网页
八、拓展
1.输入IP直接进入主页,不用加zabbix后缀
假如你希望http://IP就能访问主页,而不是http://ip/zabbix访问主页,那么如下图所示配置即可:
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。