网络运维工程师的日常运维之路2-zabbix的安装部署

最早开始接触到zabbix的时候是在刚刚毕业那年,项目经理跟我提起这个工具,说能监控网络设备,顿时有了兴趣,然后项目经理丢给了我一个文档,里面写了zabbix怎么部署,要安装什么什么什么……说实话,我真没看懂,但我只看到了这个系统要在linux环境下运行,当时我对linux系统仅仅只是了解,虽然吧,大学的时候学过,但是嘛,大学嘛,都是大概学学。
写在文章前,要看懂本文需要有点点网络基础和linux基础的同学,如果中途有不懂的,可以评论共同探讨,看到会做答复的,如果跟我一样使用虚拟机实验的,要知道虚拟机咋用,不会的话可以百度了解虚拟机的网络配置,因为所有组件安装均需要网络(当然生产环境可以通过下载离线包导入安装,那是后话了)
还记得当时部署的zabbix是3.4版本的,现在都已经出到7.0测试版了,稳定版是6.4。
还是先了解下什么是zabbix吧
zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。(引用至百度百科)。
zabbix官网:https://www.zabbix.com/cn
为什么要用zabbix呢?
1.zabbix是个开源免费的监控软件(重点免费)
2.通过zabbix监控网络设备(当然还能监控数据库、网页等等等),可以及时发现问题,通过邮件发送告警信息通知管理员及时处理。
那具体使用效果如何呢?
目前我已经尝试在多个项目上部署使用了zabbix,对日常运维巡检(出流量报表、运维报表),故障排查等方面有比较好的成效。
部署zabbix的基本需求:

1.linux系统(本人习惯使用centos,本次使用当前最新版的centos stream 9演示)
2.安装mariadb数据库(用于存储zabbix数据)
3.安装php和httpd(用于zabbix web页面功能支持)
4.电脑最好有xshell和xftp或类似的终端连接软件
基本的安装命令在zabbix的官网上有都指导,但不是那么全面,所有还是记录一下自己的安装过程。
一.首先查看zabbix 6.4硬件配置需求和支持的组件库版本
(过高或过低版本都会导致安装失败)
https://www.zabbix.com/documentation/current/zh/manual/installation/requirements
通过查看当前版本的安装手册,安装需求,初步了需要监控内容所需主机配置

初步接触的人可能不了解1个触发器是什么概念,比如监控一台服务器,监控cpu使用率实时值,这就是1个触发器=1个指标,那监控cpu实时值、1分钟平均使用率、5分钟平均使用率就是3个监控指标,以此类推。在对网络设备监控上,也同理,默认模版通过snmp会监控up端口的进、出流量,端口错误包,状态,速率等信息,一台交换机有24个端口UP的话,估计都有400-600个指标。

mairadb数据库版本支持10.5-10.8.x版本,截至本次实验前,mairadb已经发布到11.0.2版本了

PHP截至本次实验前已发布到了8.2稳定版
所以还是要注意安装组件的版本,总的安装过程不算难,很多时候就是没注意这些组件导致后面的安装失败。
二.开始正式安装
2.1 centos stream 9系统安装
(从centos官网下载镜像,自行安装,实验中使用VMware workstation安装)
安装完成后先登录,并检查网络状态(实验虚拟机使用桥接到本地网络)


2.2 系统防火墙的关闭
初始学习使用者,建议关闭系统的防火墙:systemctl stop firewalld && systemctl disable firewalld
防止因为防火墙影响问题(后期有空将记录centos 的防火墙配置方法)

2.3.服务器IP地址的配置
配置服务器静态ip,默认安装设置是动态ip,但实际生产环境都需要使用静态IP地址。
centos stream 9 (后面简称centos 9)与前面版本的网卡配置文件不通,配置方法也不一样,所有要注意。
centos 7 网卡文件是/etc/sysconfig/network-scripts/ifxxx
centos 9 网关文件变更成了/etc/NetworkManager/system-connections/ens33.nmconnection
最后的这个ens33.nmconnection 文件是网卡名,每个人的可能都不一样。
使用vi 编辑器修改网卡文件vi /etc/NetworkManager/system-connections/ens33.nmconnection
按i后进行编辑,修改ipv4下面的信息
# mehod=auto # 前面加#注释掉,使该行命令失效
method=manual # 改成manual(意思是设置手动模式)
address1=192.168.31.159/24,192.168.31.1 # 地址1=ip/子网位数,网关(根据自己网络情况更改,子网位数24=子网掩码255.255.255.0,其他情况自行百度)
dns=223.5.5.5,223.6.6.6 # dns地址,用;隔开
修改好后按Esc键,然后输入:wq 保存退出

这时候网卡配置文件还未生效,需要重启网卡,输入命令nmcli c r 重启网卡(如不生效使用nmcli c down ens33 && nmcli c up ens33重启网卡),使配置生效,重启后在使用ip add命令查看当前网卡状态。

再尝试ping一下互联网,确保网络正常。

2.4在线安装命令dnf的使用
网络正常就可以开始安装各种组件了。
其他很多教程会让你修改安装yum或dnf源(linux 默认安装源地址是在国外)但实测不用修改国内源也一样的,网络都还行,有些源因为系统版本不一致修改错了,更麻烦。
centos8 开始将yum 命令更改为dnf ,功能都一样,就是命令变了而已,但yum命令还是当前实验版本任然可以使用。
使用在线安装的好处是系统会自动安装该软件所需要的一些插件,linux不像windows的exe安装包,直接双击所有东西都给你打包安装了,linux的rpm包很多需要你自己安装各种依赖包。
先了解dnf命令的使用方法:
dnf install 软件包名称 (安装各种软件最经常使用)
dnf remove 软件包名称 (卸载某个软件)
dnf list 软件包名称 (列出某个软件包)
dnf upgrade(更新已安装的所有包)
dnf update (更新已安装的软件包)
dnf makecache (创建新的数据缓存)
一般系统刚刚安装好,会对系统组件进行一次全面更新,使用命令 dnf update && dnf upgrade




然后使用命令dnf list httpd #查看系统默认安装的apache的版本是否符合需求
dnf list php #查看系统默认安装的php的版本是否符合需求
dnf list mariadb-server #查看系统默认安装的mariadb数据库的版本是否符合需求

可以看到除了apache符合要求,php版本过高,mariadb数据库版本又过低。所以还要修改一下安装的软件源来解决这些问题。
所以先安装完apache
dnf install -y httpd (安装apache, -y参数表示自动确认)

dnf start httpd (启动apache)
dnf enable httpd (设置开机自动启动apache)

2.5 PHP组件的安装
(php7最后的版本为7.4)
现在运行以下命令添加 EPEL 和 Remi 第三方存储库
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf module enable php:remi-7.4

执行安装命令:
dnf install -y php php-cli php-common
安装完成后执行php -v 查看安装的PHP版本

2.6mariadb数据库安装
使用命令编辑文件(系统本身没有这个文件,会自动生成)
vi /etc/yum.repos.d/MariaDB.repo
在文件里输入以下内容:
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.6/rhel9-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
按Esc键后输入:wq保存退出

然后在查看安装包

已经有10.6版本了
输入dnf install -y MariaDB (这里注意大小写,不然会默认安装会3.x的版本
安装完成后输入
systemctl start mariadb.service和systemctl enable mariadb.service启动数据库,并加入开机启动
然后输入mysql_secure_installation进行初始化提示没有这个命令,但数据库可以通过mysql -u root -p 正常进入(默认密码为空,直接回车可进入,生产环境自行百度如何加密码)可能由于centos9暂时还不支持高版本的mariadb,我使用的是rhel的源导致的。


2.7安装zabbix组件

在zabbix官网(下载Zabbix)点击下载zabbix,然后选择好系统环境,下面的步骤会给出安装的命令。

修改yum配置文件,加入一行excludepkgs=zabbix* ,按Esc后输入:wq保存退出

安装下载源,清理缓存
rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm
dnf clean all

执行安装zabbix组件(这一步可能受到网络影响,家里实验的是移动宽带,到38个包的时候死活下载不了,一直报错,重复执行了很多次命令都不行,于是换了电信的随身wifi,修改网络环境,一会就安装完成了)
dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent


创建初始数据库,并设置数据库用户名为zabbix密码(粗体的password自行更改,这个值很重要,后面步骤经常使用到)
mysql -uroot -p
输入数据库密码,如果为空,直接回车
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by ‘password‘;
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;

导入初始架构和数据,系统将提示您输入新创建的密码。
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql –default-character-set=utf8mb4 -uzabbix -p zabbix
最后的这个zabbix指的是前面创建的数据库名称,不是密码,按回车后还要输入前面创建数据库的密码
导入成功后就不会有任何报错

再次登录数据库修改导入后的信息
mysql -uroot -p
输入数据库密码,如果为空,直接回车
set global log_bin_trust_function_creators = 0;
quit;

修改zabbix的配置文件vi /etc/zabbix/zabbix_server.conf

找到数据库的设置,插入一行数据库密码信息DBPassword=前面设置的zabbix数据库密码
按Esc键后输入:wq保存退出
2.8启动zabbix服务并加入开机启动项
systemctl restart zabbix-server zabbix-agent httpd php-fpm
systemctl enable zabbix-server zabbix-agent httpd php-fpm

2.9web界面配置并初始化系统
用浏览器打开http://服务器IP地址/zabbix即可跳转到web配置界面(安装系统的时候我选择了中文,故系统自动安装的中文语言包,如果选择语言时中文为灰色,请自行下载安装centos的中文语言包后重启httpd服务,即可选择中文语言)


默认参数一般都能通过检查





默认用户名是Admin默认密码是zabbix。注意用户名区分大小写

登录成功,没有别的报错(旧版本很多会出现zabbix server not running 问题,多数为配置文件中的数据库路径错误导致的,百度有解决方案,当前没遇到就先不做记录了)
默认配置下,zabbix会通过agent程序监控自己本身的服务器,安装的时候命令也安装了agent程序。
具体怎么添加其他监控主机,配置监控模版,自己做监控模版,配置邮件告警等等有空在慢慢写出来了。
2.10关于查看图表图例有乱码的问题:

首先要在windows电脑的控制面板—字体文件夹下,找个你喜欢的中文字体,复制出来


在电脑安装xshell的时候建议一起安装了xftp,或者后面安装上也行,用xftp将字体文件上传到服务器上


默认上传到root目录下
找到zabbix本身使用的字体,
find / -name DejaVuSans.ttf

默认位置在/usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf
备份当前使用字体后,将上传的字体移动到目标位置并替换当前使用的字体
mv /usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf /usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf.bak
mv simsun.ttc /usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf
刷新系统图表中文正常显示

小结:
centos stream 9安装zabbix6.4这次也是第一次部署,以前用的是别的版本的系统,每次更新版本后的安装都学到不同的东西。
本次遇到的坑有:
1.centos 9 没有mairadb10.5-10.8的安装源,需要修改为rehl的源,centos9的底层系统本身就是rehl9,想着应该是通用的
2.php默认版本是8.0,但zabbix刚好不支持8.0。重新找centos9安装php7.4教程才完成安装。
3.受到网络问题影响,zabbix组件源难以连通,最后更换电信网络解决(小声bb,移动家宽还是有很多国外网站打不开的)
最后我为什么那边执着用总是想用最新的版本软件呢,因为linux系统对软件的漏洞修复方法就是更新版本,旧版本的软件很多都有漏洞,在运维过程中经常被漏洞扫描到被要求整改,所以我们为了避免这些问题,都是用当前最新的版本,真的遇到了扫描漏洞也比较少,最后就是要用系统自带的防火墙firewalld过滤IP和端口,只开发系统需要对外开发的接口和IP访问,保障生产环境设备安全。