实战二:zabbix 基础操作
声明:我下边已切换为3.4版本了
1、设置items监控项,采集信息(1)对node1 添加名为rate of packets(in) 入站包的个数 的items监控项
① key 值选的是: net.if.in[if,<mode>]网络接口上传流量统计;可以加参数
② 点击进程,可以选择更多选项;比3.2不一样的地方
③ 查看图形
(2)克隆items 监控项
① 设置rate of packets(out) 出站包的个数,因为和in 很相似,可以克隆再设置
② 修改为out,其他都无需修改
(3)为了后边的实验,多定义2个items 监控项
① rate of bytes(out) 出站字节数
② rate of bytes(in) 入站字节数
2、设置trigger 触发器(1)介绍
① 界定某特定的item采集到的数据的非合理区间或非合理状态:逻辑表达式
② 逻辑表达式,阈值:通常用于定义数据的不合理区间;
OK:正常 状态 --> 不满足阈值(不合理区间)为OK
PROBLEM:非正常状态 --> 满足阈值
③ 触发器存在可调用的函数:(对数据进行评估)
nodata():没有数据
last():最近几次的平均值
date()
time()
now()
dayofmonth()
...
注意:常用nodata()、last();能用数值采集的结果保存,就不要用字符串;计算机处理数值要快的多
(2)创建trigger 触发器
① 创建
② 设置
③ 表达式可以自己手写;也可以按选择生成
次数count / 时间time 选项:二选一
time 时间
④ 下边的选择根据自己的需求选择,我没有设置
(3)查看图形,会发现多了一根警告线
3、设置触发器的依赖关系(1)介绍
① 在一个网络中,主机的可用性之间可能存在依赖关系
例如,当某网关主机不可用时,其背后的所有主机都将无法正常访问
如果所有主机都配置了触发器并定义了相关的通知功能,相关人员将会接收到许多告警信息,这既不利于快速定位问题,也会浪费资源
正确定义的触发器依赖关系可以避免类似情况的发生,它将使用通知机制仅发送最根本问题相关的告警
② 注意:目前zabbix 不能够直接定义主机间的依赖关系,其依赖关系仅能通过触发器来定义
(2)依赖的解释:
被依赖者会报警;依赖者不会报警
分析:监控到交换机故障,网卡和主机上的服务不用报警;
监控到主机上的服务,网卡和交换机不用报警
(3)设置依赖
4、设置Media 媒介(1)Media 的介绍
Media:媒介,告警信息的传递通道;任何用户收到报警信息,都需要有媒介的端口
类型:下面3个中国都没实现,中国可以实现微信,需要特殊插件
Email:邮件
Script:自定义脚本,每一个script都是一个媒介
SMS:短信,只适用于北美地区
Jabber:
Ez Texting:
接收信息的目标为zabbix用户:
需要用户上定义对应各种媒介通道的接收方式;
每一类媒介,也能分很多种类型,如下图
系统自带的3中媒介
(2)定义一个media ,可以在email 模板上直接修改
在选项中可以设置并发会话
(3)用户使用media媒介
① 选择用户中的admin用户
② 添加media 报警媒介,一个用户可以添加多个
为了实验展示,我选择所有等级
(4)实现给公司用户发短信的媒介
① 创建一个名为 duanxin 的媒介
设置,关于发短信的脚本,网上有很多,自己找一个使用
② 设置个用户,使用duanxin的媒介
(5)互联网中有发微信做媒介的
需先发个公众号,且公众号中所有人都能收到
5、设置Actions 动作(1)设置action 动作的准备
① 准备一个被监控的服务redis
yum -y install redis 下载一个redis 服务做实验
vim /etc/redis.conf 修改配置文件
bind 0.0.0.0 监听本机所有端口
systemctl start redis 开启服务
② 因为要执行动作时需远程操作,给admin 用户设置sudo权限
a) visudo 修改sudo的配置
zabbix ALL=(ALL) NOPASSWD: ALL 允许zabbix用户能在所有主机,以所有人的身份执行所有命令
Defaults !visiblepw 默认所有命令要依靠tty执行,先注释掉
b) vim zabbix_agentd.conf 设置agent允许执行远程命令
EnableRemoteCommands=1 允许执行远程命令
LogRemoteCommands=1 把远程执行的命令记录在日志中
systemctl restart zabbix-agent.service 重启zabbix-agent服务
(2)设置redis 的监控项items
① 监控端口的key
net.tcp.listen[port] 监听本地listen:检查 TCP端口是否处于侦听状态,返回 0 - 未侦听;1 - 正在侦听
net.tcp.port[<ip>,port]:server远程扫描redis服务:检查是否能建立 TCP 连接到指定端口,返回 0 - 不能连接;1 - 可以连接
net.tcp.service[service,<ip>,<port>] 直接指定服务:检查服务是否运行并接受 TCP 连接,返回 0 - 服务关闭;1 - 服务运行
(3)设置triggers 触发器
① 设置表达式
(4)设置action 动作
a) 创建一个action
b) 设置action
① 设置action 的动作
② 设置action 的操作
③ 设置要操作的步骤1:重启redis服务
④ 设置要操作的步骤2:给admin发邮件
⑤ 设置完的action 的操作:共两步
c) 设置action 的恢复操作
d) 设置action 成功
6、测试动作(1)手动停掉redis 服务,模拟服务故障
systemctl stop redis
(2)可以看到problem 问题已产生
① 问题生成
② 执行动作,10s,第一个action 1 执行成功,problem问题解决
因为第一个action1 执行成功,所以action 2没有执行
③ 恢复操作执行了,zabbix server 收到了mail "Resolved"
(3)模拟故障,且无法恢复
systemctl stop redis && rpm -e redis 停止服务,且删除redis
① 问题产生
② action 1 无法完成
③ action 2 执行:给admin 发邮件