Zabbix的安装与基本使用(主机群组、应用集、监控项、触发器、动作、媒介)
前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除
一、环境准备
(1)实验基本设置:
主机名 | IP地址 | 角色 |
---|---|---|
Mater | 192.168.1.10 | 监控端 |
node1 | 192.168.1.11 | 被监控端 |
# 网络自配hostnamectl set-hostname <主机名>
(2)所有机器关闭防火墙和selinux:
setenforing 0 (修改配置文件关闭)sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/configsystemctl stop firewalld && systemctl disabled firewalld
二、配置监控端zabbix-server
1、安装Xabbix存储库:
# 配置阿里源wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo# 配置Zabbix源rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm# 将Zabbix中的修改为阿里源sed -i 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
2、安装 Zabbix 服务器和代理:
yum install zabbix-server-mysql zabbix-agent -y
3、安装Zabbix前端:
启用红帽软件集合:
yum install centos-release-scl -y
原来的配置已不可用,这里我们修改为国内阿里源:
cd /etc/yum.repos.d/mv CentOS-SCLo-scl.repo CentOS-SCLo-scl.repo.bakmv CentOS-SCLo-scl-rh.repo CentOS-SCLo-scl-rh.repo.bakvim CentOS-SCLo-scl-rh.repo[centos-sclo-rh]name=CentOS-7 - SCLo rhbaseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/gpgcheck=1enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
编辑文件 /etc/yum.repos.d/zabbix.repo 并启用 zabbix-frontend 存储库。
vim /etc/yum.repos.d/zabbix.repo...[zabbix-frontend]...enabled=1...
安装Zabbix前端包:
yum -y install zabbix-web-mysql-scl zabbix-apache-conf-scl
4、 创建初始数据库
启动并运行数据库服务器
cdwget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpmrpm -ivh mysql80-community-release-el7-3.noarch.rpm
打开5.7源地址,关闭8.0源地址,确保下载的数据库是mysql5.7;这里换位mariadb也可以
vim /etc/yum.repos.d/mysql-community.repo
yum -y install mysql-community-server --nogpgcheck
因为mysql5.7启动,root用户会生成随机密码,可以进行修改
systemctl start mysqld# 查看随机生成的密码grep 'password' /var/log/mysqld.log# 修改密码 toT1p1L-Fvjjmysqladmin -uroot -p'I5>eyYwjF9WQ=c' password 'xiaoli@2024'# 本人执行失败,换种方式;使用随机密码登录后,修改密码mysql -uroot -p'I5>eyYwjF9WQ'mysql> ALTER USER USER() IDENTIFIED BY 'Lee@2024';
在您的数据库主机上运行以下命令:
mysql> create database zabbix character set utf8 collate utf8_bin;mysql> grant all on zabbix.* to zabbix@localhost identified by 'Zabbix@2024';mysql> flush privileges;mysql> quit;
在 Zabbix 服务器主机上导入初始模式和数据。系统将提示您输入新创建的密码
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbixEnter password: # 此处输入上面创建用户时,设置的密码,回车导入数据
可再次进去到数据库,确认zabbix库中有数据生成;
5、为Zabbix服务器配置数据库:
编辑文件 /etc/zabbix/zabbix_server.conf
cat >> /etc/zabbix/zabbix_server.conf <<'EOF'DBHost=localhostDBName=zabbixDBUser=zabbixDBPassword=Zabbix@2024EOF
6、为Zabbix前端配置PHP
编辑文件/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf,取消注释并为您设置正确的时区
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf----------------------------------------------...php_value[date.timezone] = Asia/Shanghai
7、启动 Zabbix 服务器和代理进程
启动 Zabbix 服务器和agent代理进程并使其在系统启动时启动。
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpmsystemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
8、配置 Zabbix 前端
连接到您新安装的 Zabbix 前端:192.168.1.10/zabbix
出现以下登录界面, Zabbix监控平台有默认管理员用户; 默认用户名Admin,密码为zabbix;
页面显示为英文,可以设置为中文;Admin用户,可以设置任何用户的语言;设置自己的语言如下图
设置其他用户的语言如下图:
二、配置被监控端zabbix-agent
当我们把监控端配置启动以后,我们需要来设置一下我们的被监控端,我们在被监控的主机安装好zabbix-agent,设置好他的所属的监控端server,并把他添加到server端,就能将其纳入我们的监控系统中去了。
1、安装 zabbix 源
# 配置阿里源wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo# 配置Zabbix源rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm# 将Zabbix中的修改为阿里源sed -i 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repoyum install zabbix-agent zabbix-sender -y
2、修改配置文件
对配置文件做一个备份,然后去修改配置文件:
cd /etc/zabbix/cp zabbix_agentd.conf zabbix_agentd.bakvim zabbix_agentd.conf----------------------------------------------------------Server=192.168.1.10 # zabbix服务端的地址ServerActive=192.168.1.10 # 主动模式 zabbix-server-ipHostname=zabbix-agent-node1UnsafeUserParameters=1 # 是否限制用户自定义 keys 使用特殊字符 1是可以启用特殊字符 0是不可以启用特殊字符EnableRemoteCommands=1 # 是否允许别人执行远程操作命令,默认是禁用的,打开的话会有安全风险.
修改完成之后,我们保存退出。然后就可以启动服务了:
systemctl start zabbix-agent
3、创建主机群组
可以看到Zabbix本身就有很多默认的主机群组。暂时不用理会
4、创建主机
5、创建应用集
应用集,可以认为是监控项的分类
应用集可以有多个,我们再创建2个,这里不再给予创建过程;
6、创建监控项
任何一个被监控项,如果想要能够被监控,一定要在zabbix-server端定义了能够连接至zabbix-agent端,并且能够获取命令。或者在agent端定义了能够让server端获取命令。一般都是内建的命令,都对应的有其名字,被我们称之为 key 。
(1)创建一个不带参数的监控项:
关于键值(key值),我们可以直接在网页上设置(服务器自动执行), 但是最好提前使用命令行命令(手动执行)来获取,确保此监控项的键值能取到监控数据,也就意味着能监控到此指标;
yum -y install zabbix-get.x86_64zabbix_get -s 192.168.1.11 -k system.uptime -p 10050
如果能获取到值,就可以点击添加了;等待一会儿,点击“监测”-->“最新数据”;即可看到被监控端node1的已运行时间;
也可点击自带的“图形”,看到整体情况
(2)创建1个带参数的监控项:
监控文件的大小:被监控端node1先创建出1G文件
dd if=/dev/zero of=/home/test.txt bs=1M count=1024ll -h /home/------------rw-r--r-- 1 root root 1.0G Aug 26 23:42 test.txt
去监控平台,创建监控项:
点击“最新数据”
案例3:监控cpu负载
关于key值,我们可以直接在网页上设置(服务器自动执行),也可以使用命令行命令(手动执行)来获取
zabbix_get -s 192.168.1.11 -k system.cpu.load[all,avg5] -p 10050
案例4:监控tcp的80端口是否被占用
被监控端,先下载占用80端口的服务,比如httpd或者nginx,tcp协议占用80端口的应用,都可以
yum -y install httpdsystemctl start httpd
来到监控平台,创建对应监控项:
然后去“最新数据”中,查看
7、删除监控项
如果有一个监控项,我们用不上了,就可以删除掉。但是如果你直接删除的话,默认数据是会留下的,所以我们要先清除数据,然后再删除
- 历史数据(history)和趋势数据(trends)是Zabbix中存储收集到的数据的两种方式。
- 历史数据:每一个收集到的监控数据
-
趋势数据:按小时统计计算的平均值数据
强烈建议将历史数据保留时长设置得尽可能的小。这么做可以让数据库不会因存储了大量的历史数据,导致超负荷运行。
可以选择长时间的保留趋势数据,来替代长期需要的历史数据。例如:设置成保留14天历史数据和5年的趋势数据
8、创建触发器(trigger)
触发器就是来判断监控项监控到的数据,是否处于合理区间的;
8.1、简介
当我们的采集的值定义完了以后,就可以来定义触发器了。触发器的定义是:界定某特定的监控项采集到的数据的非合理区间或非合理状态。通常为逻辑表达式。
一般,我们评定采样数值是否为合理区间的比较稳妥的方法是——根据最后N次的平均值来判定结果;这个最 后N次通常有两种定义方式:
1. 最近N分钟所得结果的平均值
2. 最近N次所得结果的平均值
注意:能用数值保存的就不要使用字符串
8.2、触发器表达式
基本的触发器表达式格式如下所示
{<server>:<key>.<function>(<parameter>)}<operator><constant># server :主机名称;# key :主机上关系的相应监控项的key;# function :评估采集到的数据是否在合理范围内时所使用的函数,目前触发器所支持的函数有avg(平均)、count(计数)、change(变化)、date(日期)、dayofweek(星期)、delta(增量)、diff、iregexp、last()、max(最大值)、min(最小值)、nodata(无数据)、now(现在)、sum(总和)等# parameter :函数参数;大多数数值函数可以接受秒数为其参数,而如果在数值参数之前使用“#”做为前缀,则表示为最近几次的取值,如sum(300)表示300秒内所有取值之和,而sum(#10)则表示最近10次取值之和;
8.3、配置一个触发器
测试触发器是否生效 ;被监控端停止httpd服务,意味着80端口也会关闭
systemctl stop httpd
9、创建动作
可以看出,还需要在虚拟机上进行两项操作,一是修改sudo配置文件使zabbix用户能够临时拥有管理员权限;二是修改zabbix配置文件使其允许接收远程命令。我们进行如下操作:
[root@node1 ~]# visudo # 相当于“vim /etc/sudoers”## Allow root to run any commands anywhereroot ALL=(ALL) ALLzabbix ALL=(ALL) NOPASSWD:ALL # 添加的一行,表示不需要输入密码[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf...EnableRemoteCommands=1 #允许接收远程命令LogRemoteCommands=1 #把接收的远程命令记入日志[root@node1 ~]# systemctl restart zabbix-agent.service
测试动作是否执行: 在被监控端,将httpd服务停止,查看是否会重启
等待一会儿,可看到,问题已被解决
被监控端查看httpd服务状态,也可看到httpd服务已被重启
刚刚一旦发生问题,我们添加了第一步需要做的事情,也就是重启服务,如果重启不成功怎么办呢?我们就需要来添加第二步:
第二步,可以是发送邮件,让我们及时知道问题仍然存在,然后人工介入紧急处理;邮箱报警,需要创建媒介邮箱类型有很多种,比如QQ邮箱,阿里云邮箱,163邮箱等;想用邮箱接收报警,要开启邮箱的SMTP服务
我们这里用QQ邮箱: 开启邮箱POP3/SMTP服务
在QQ邮箱界面--设置--账户
获取授权码并保存:
10、创建媒介
媒介是Zabbix中用于发送通知和告警的传输通道。
问题发现邮件内容:
问题恢复邮件内容:
测试媒介是否可用(本人目前测试失败)
成功后前往"动作"->"操作",进行设置
11、动作
将Admin用户和local_email媒介进行关联
接下来自行进行测试