zabbix详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix详解相关的知识,希望对你有一定的参考价值。
zabbix 触发器triggers
触发器使用逻辑表达式来评估通过item获取到的数据是处于哪种状态。
触发器的状态只有两种:OK和PROBLEM
一个trigger只能属于一个Item, 但一个Item可以有多个trigger
(1)创建触发器
点击Configuration -> Host 或 Template
点击Hosts或Template相关行的triggers,再点击右上角的create trigger
在表单中输入相应的信息
Severity用途和定义说明:
可视化显示,不同级别显示不同颜色
声音报警,不同级别不同声音
可使用用户自定义媒介报警,例如短信或邮件
严重性 | 定义 | 颜色 |
Notclassified | 未知 | 灰色 |
Information | 一般信息 | 浅绿 |
Warning | 警告 | *** |
Average | 一般问题 | 橙色 |
High | 严重问题 | 红色 |
Disaster | 灾难,会带来损失的那种 | 深红 |
自定义severity名称和颜色(一般不用修改,默认挺好的)
触发器Expression中的表达式:
{<Server>:<key>.<function>(<parameter>)}<operator><constant>
例:{node2.magedu.com:net.if.in[eth0,bytes].last(#1)}>1200
<function>:评估采集到的数据是否在合理范围内时所使用的函数;其评估过程可以根据采集到的数据、当前时间或其它因素;
常用函数:
avg, count, change, date, dayofweek,dayofmonth, delta, diff, iregexp, regexp, last, max, min, nodata, now, prev,str, strlen, sum
详细说明:
last:表示最后一次采样。例如从老到最新值为1,2,3,4,5,6 last(#3)=4 last(#2)=5。
avg:最后几次采样的平均值,可以是最近几次或最近几分钟,即可选时间或次数
max:最近几次采样中的最大值,可以是最近几次或最近几分钟,即可选时间或次数
min:最近几次采样中的最大值,可以是最近几次或最近几分钟,即可选时间或次数
change:差值,最后一次与上次(倒数第二次)采样的差值,对于字符串返回值0为没有变化,1为发生变化。对于数值则为具体数值
delta:返回指定时间范围内或采样范围内的最小值与最大值之差
dayofweek: 本周第几天
dayofmonth: 本月第几天
diff:用来比较最后一次的采样和倒数第二次采样他们彼此间的值是否存在不同,通常用来监控文件
iregexp:忽略大小写的正则表达式
sum:指定时间或次数内的数据之和
regexp:检查最后一次采样的数据是否能够被指定的模式所匹配;1表示匹配,0表示不匹配;
now:返回自Unix元年至此刻经历的秒数;
prev:倒数第二个采样值;
str:从最后一次的采样中查找此处指定的子串,区分大小写,找到返回1,找不到返回0;
strlen:字符串长度比较
<operator>操作符:
优先级 | 操作 | 定义 |
1 | / | 除 |
2 | * | 乘 |
3 | - | 减 |
4 | + | 加 |
5 | < | 小于 |
6 | > | 大于 |
7 | # | 不等于 |
8 | = | 等于 |
9 | & | 逻辑与 |
10 | | | 逻辑或 |
(2)触发器依赖关系
触发器可以设置依赖性,例如我配置了两个触发器,一个触发器定义www.163.com这个host是否在运行中,另一个是www.163.com的网络是否畅通。假如网络出现故障,但是163服务器并未出现故障,我们依旧会受到这两个触发器给到的故障通知。
可以看出, 163服务器是正常工作的,肯定不希望收到它的故障信息。所以在配置www.163.com这个Host触发器时,我们需要增加依赖关系,依赖网络是否畅通这个触发器。一旦网络出现故障,将不会发出Host故障的通知。
一个触发器可以依赖于多个触发器
依赖设置:
Configuration -> Templates或Hosts 选定的模板或主机行->点击Triggers
编辑选定的trigger或点击右上角create trigger
zabbix action 动作
action触发条件一般为事件,支持如下事件:
Trigger events: OK --> PROBLEM
Discovery events: zabbix的network discovery工作时发现主机;
Auto registration events:主动模式的agent注册时产生的事件;
Internal events:Item变成不再被支持,或Trigger变成未知状态
(1)action创建
Configuration -> Actions -> 选择相应的事件 ->create action
这里以创建triggers的action为例
(2)conditions配置
(3)Oprations配置
3.1关于远程命令的执行remotecommand
(1) 给zabbix定义sudo规则;
zabbixALL=(ALL) ALL
(2) 不支持active模式的agent;
(3) 不支持代理模式;
(4) 命令长度不得超过255个字符;
(5) 可以使用宏;
(6) zabbix-server仅执行命令,而不关心命令是否执行成功;
命令执行的前提:zabbix-agent要配置为支持执行远程命令:
vim /etc/zabbix/zabbix_agent.conf 使EnableRemoteCommands=1,如有需要记录远程命令可打开LogRrmoteCommands=1
另外,还需要定义sudo配置文件,支持zabbix用户通过sudo执行命令
visudo 添加
zabbix ALL=(ALL) NOPASSWD:ALL
(zabbix用户,无须密码可执行所有命令)
注意
如果用到以其它用户身份执行命令的话,那么命令本身要以sudo方式运行:
sudo /etc/rc.d/init.d/httpd restart
在各agent上的sudoers文件,(vimsudo)要注释如下行(因为sudo默认是需要一个安全的tty环境来运行命令,zabbix agent并没有在tty环境中,所以要取消默认的):
Defaults requiretty
zabbix inventory资产清单
类似于备注,设备的详细描述
上面有一个手动和自动的选择,自动的话会自动带入一些主机的基本信息,大部分还得自己填写。这些信息还有一个作用,在发送警报通知时可以使用其中的信息,{INVENTORY.*}这样来获取之前填写过的信息。例如这台服务器故障了,需要发送邮件给当前服务器的联系人,我们可以发送邮件给{INVENTORY.CONTACT1}...
zabbix Media types媒介
Media types包括mail、sms、script、jabber、commercial,通常会使用email和script比较多
(1)email类型的使用
Administration -> Media types ->create... 就可以创建了,这里创建用于本地的邮件发送,用来通知本机用户
创建后,只要在Administration -> User 中新建或现存的相关用户中使用这个Mediatypes 就可以了,例:
(2)Script类型的使用
当事件通知到脚本,会传递三个参数给它,分别是$1(发送给谁),$2 (标题),$3(内容)
Administration -> Media types ->create... 就可以创建了
然后再和上面email的一样,指定用户即可使用。
注意:
脚本的路径为相对路径,脚本的目录需要先定义AlertScriptsPath
vim/etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts改为自己需要的目录即可
以上是关于zabbix详解的主要内容,如果未能解决你的问题,请参考以下文章