Zabbix Zabbix监控第一台服务器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zabbix Zabbix监控第一台服务器相关的知识,希望对你有一定的参考价值。
一、zabbix-server添加被监控主机
1、Node1节点安装zabbix-agent,zabbix-sender并修改配置文件
[[email protected] ~]# yum install zabbix-agent zabbix-sender Dependencies Resolved =================================================================================================================================== Package Arch Version Repository Size =================================================================================================================================== Installing: zabbix-agent x86_64 2.4.8-1.el6 Zabbix 175 k zabbix-sender x86_64 2.4.8-1.el6 Zabbix 66 k Installing for dependencies: zabbix x86_64 2.4.8-1.el6 Zabbix 165 k Transaction Summary =================================================================================================================================== Install 3 Package(s)
修改配置文件
[[email protected] zabbix]# grep -v ‘^#\|^$‘ zabbix_agentd.conf #修改后 PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=192.168.10.2 ServerActive=172.168.10.2 Hostname=Node1 Include=/etc/zabbix/zabbix_agentd.d/
启动zabbix-agent:
[[email protected] zabbix]# service zabbix-agent start Starting Zabbix agent: [ OK ] [[email protected] zabbix]# netstat -nlptu|grep zabbix tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 3352/zabbix_agentd tcp 0 0 :::10050 :::* LISTEN 3352/zabbix_agentd
2、zabbix-server添加被监控主机Node1
点击configuration -->hosts-->Create host 填上相应信息即可
添加完成后:
host name:必须是唯一的,用来标识主机的地址,大多数用ip来表示。如果填的是主机名必须要能解析到对应的ip,要和agent配置文件中填写的host name保持一致。
visible name:在zabbix中显示的名字
二、添加监控项
1、监控项(item)
“ 监控项(item)”是Zabbix 服务器用于监控一个特定对象上的一个特定指标,并负责针对其收集相关的监控数据
比如CPU每分钟的平均负载可以是一个item,每5分钟的平均负载是一个item,某特定网络接口接收报文的速率又是一个item等
每一个Item都拥有相应的“类型(Type)”
例如“Zabbix agent”、“SNMP”、“External check”、“IPMI agent”、“SSH agent”、“JMX agent”等
Zabbix服务器会使用相应类型的协议或机制同被监控端通信
2、主要属性介绍
Host:选择新建的item所属的主机或模板;默认为点击“item”时所属的主机或模板;
Name:item的名称,可以使用宏$1、$2、……、$9,用于引用相应Key中的对应的参数;
例如,名称“CPU $2 time”对于system.cpu.util[,iowait]来说,其名称为“CPU iowait time”;
Type:item类型;
Key:当前item的key,每个item所支持使用的key取决于所选择的“Type”;对一个主机来讲,每个key必须是惟一的;如果Type为“Zabbix agent”, “Zabbix agent (active)”,“Simple check”或者“Zabbix aggregate”,其Key值必须要被Zabbix agent及Zabbix Server支持才行;
Update interval (in sec):获取数据的时间间隔,0表示不去拉取数据;
Flexible intervals:自定义数据更新时间间隔,例如Interval (in sec)为10,Period值为6-7,00:24:00表示周六和周日全天每10秒钟获取一次数据;
Keep history (in days) :历史数据保留时长,单位为天;超过此时长的数据都会由Housekeeper清除;一般来说,仅需要保留所需要的时间跨度的最小天数内的数据;
Keep trends (in days):聚合(趋势)数据(如min、max、avg、count等数据)的保留时长,单位为天;超过此时长的数据都会由Housekeeper清除;
Store value:
As is:不做任何处理;
Delta (speed per second):保存为(value-prev_value)/(timeprev_time)的计算结果,即当前值减去前一次获取的数据值,除以当前时间戳减去前一次值获取时的时间戳得到的结果;如果当前值小于前一次的值,其将会被丢弃;
Delta (simple change):保存为 (value-prev_value)的计算结果;
Status:
Enabled:启用;
Disabled:禁用;
Not supported:不支持
3、item key
每一个item都有其专用的“Key”
Zabbix服务器在与被监控端通信时就使用相应的协议或机制去询问被监控端这个Key的值,被监控端则调用与此Key对应的监控脚本获取数据并返回给服务器端
Key的命名只能使用“0-9a-zA-Z_-.”(引号中的内容)等字符,且可以接受参数,其命令习惯如system.cpu.load[<cpu>,<mode>],其中,中括号中的内容为参数,且分别可以按次序使用$1、$2、…进行引用,此示例中仅有两个参数,若要使用不定数目的参数,则可以使用“*”表示
zabbix有许多预定义的key,详细信息的获取地址:
https://www.zabbix.com/documentation/2.0/manual/config/items/itemtypes/zabbix_agent
对于每一个item,Zabbix服务器还定义了怎么存储这个item的数据以、数据采集的频率及历史数据的保存时长等
多个item还可归类为一个由“application”定义的逻辑组
4、获取item key的值
[[email protected] ~]# rpm -ql zabbix-get /usr/bin/zabbix_get /usr/share/man/man1/zabbix_get.1.gz [[email protected] ~]# zabbix_get --help Zabbix get v2.4.8 (revision 59539) (20 April 2016) usage: zabbix_get [-hV] -s <host name or IP> [-p <port>] [-I <IP address>] -k <key> Options: -s --host <host name or IP> Specify host name or IP address of a host -p --port <port number> Specify port number of agent running on the host. Default is 10050 -I --source-address <IP address> Specify source IP address -k --key <key of metric> Specify key of item to retrieve value for -h --help Display help information -V --version Display version number Example: zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg1]" [[email protected] ~]# zabbix_get -s 192.168.10.1 -k "system.uname" Linux Node1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64
历史数据:过去每次采样生成的数据
历史趋势数据:每小时的最大值,最小值,平均值统计
As is:不做任何处理
Delta(差量)(speed per second): (value - pre_value)/(time-pre_time)
Delta(simple chang):(value-pre_value)
三、添加触发器
1、触发器(trigger)
“监控项”仅负责收集数据,而通常收集数据的目的还包括在某指标对应的数据超出合理范围时给相关人员发送告警信息,“触发器”正是用于为监控项所收集的数据定义阈值
每一个触发器仅能关联至一个监控项,但可以为一个监控项同时使用多个触发器;事实上,为一个监控项定义多个具有不同阈值的触发器,可以实现不同级别的报警功能
一个触发器由一个表达式构成,它定义了监控项所采取的数据的一个阈值
一旦某次采集的数据超出了此触发器定义的阈值,触发器状态将会转换为“Problem”;而当采取的数据再次回归至合理范围内时,其状态将重新返回到“OK”
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次取值之和;
此外,avg、count、last、min和max还支持使用第二个参数,用于完成时间限定;
例如,max(1h,7d)将返回一周之前的最大值;
一个例子:
{www.magedu.com:system.cpu.load[all,avg1].last(0)}>3
表示主机www.magedu.com上所有CPU的过去1分钟内的平均负载的最后一次取值大于3时将触发状态变换
对last函数来说,last(0)相当于last(#1)
3、触发器间的依赖关系
在一个网络中,主机的可用性之间可能存在依赖关系
例如,当某网关主机不可用时,其背后的所有主机都将无法正常访问
如果所有主机都配置了触发器并定义了相关的通知功能,相关人员将会接收到许多告警信息,这既不利于快速定位问题,也会浪费资源
正确定义的触发器依赖关系可以避免类似情况的发生,它将使用通知机制仅发送最根本问题相关的告警
注意:目前zabbix不能够直接定义主机间的依赖关系,其依赖关系仅能通过触发器来定义
4、触发器等级
unknown severity 未知的严重性 灰色
for information purposes 供参考 亮绿灯
average 常见问题 橙色
disaster 灾难
5、创建触发器
创建触发器可用的各属性说明
Name:触发器名称,可以使用宏,如$1、$2、……、$9等;
Expression:逻辑表达式,用于评估触发器状态;
Multiple PROBLEM events generation:依赖于当前触发器的“Problem”状态生成其它事件;
Description:当前触发器的描述信息;
URL:在screen的“Status of Trigger”中显示的内容的链接;
Severity:当前触发器的严重级别;
Enabled:是否启用当前触发器;
四、执行动作(action)和事件(event)
1、action
在配置好监控项和触发器之后,一旦正常工作中的某触发器状态发生改变,一般意味着有异常情况发生,此时通常需要采取一定的动作(action),如告警或者执行远程命令等
并非所有的触发器状态发生改变的场景都需要对其进行干预,如转变为“OK”状态时,相应地,如果触发器的状态转变为“Problem”,就需要告知所有关心其相关监控指标的人员了。
“通知(notification)”是zabbix中最常用的“动作”之一
实现zabbix的通知功能,一般需要两个步骤:
定义所需的“媒介(media)”:通常指发送信息的途径,如邮件、Jabber和SMS等;
配置一个“动作(action)”:发送信息至某“媒介”;
动作由“条件”和“操作”组成,它的逻辑为当“条件”满足时,就执行相应的“操作”
“发送通知”和“执行远程命令”是两个最基本的操作
2、event
Zabbix的事件是基于时间戳进行标记的,它们是采取动作(action)如发送邮件通知的基础,其主要来源于三种途径
触发器(trigger)事件:触发器状态每次发生改变,都会生成相应“事件”,且通常包含详细信息,如发生的时间及新的状态等;
发现(discovery)事件:zabbix会周期性地扫描“网络发现规则”中指定的IP范围,一旦发现主机或服务,就会生成一个或几个发现事件;
发现事件有8类:Service Up、Service Down、Host Up、Host Down、Service Discovered、Service Lost、Host Discovered和Host Lost;
主动agent自动发现事件(也称作“自动注册事件”):当一个此前状态未知的主动agent发起检测请求时会生成此类事件;
因此,Zabbix的通知机制也称作基于事件的通知机制,也只有理解了事件本身,才能定制出符合需求的通知系统
3、媒介类型 (Media type)
在zabbix中,媒介指发送通知信息的通道,其通常有以下几种类型
E-mail:电子邮件,即通知邮件的方式传送通知信息;
SMS:手机短信,即通过连接至zabbix服务器GSM Modem发送通知;
Jabber:jabber消息;Jabber是一个开放的、基于XML的协议,能够实现基于Internet或LAN的即时通讯服务;
自定义的通知脚本:以上方式不能满足需求时,zabbix可以调用位于其配置文件“AlertScriptsPath”变量所定义的脚本查找目录中的脚本来完成通知功能;
4、定义报警的步骤
创建电子邮件-->定义通知信息接受者-->创建动作
1)创建电子邮件
2)定义通知信息接受者
3)创建动作
action主要属性的说明:
Name:当前action的独有名称;
Default operation step duration:默认每一级“告警升级“的周期;
Default subject:默认的消息主题,可以使用宏;
Default message:默认的消息,可以包含宏;
Recovery:监控项从“问题”状态恢复之后是否发送的消息;如果启用,恢复消息仅发送给监控项转换为“问题”状态时的通知对象;
Recovery subject:恢复消息主题,可以包含宏;
Recovery message:恢复消息,可以包含宏;
Enabled:是否启用当前action;
Action的操作(operation):
zabbix支持的操作有两类:“发送通知”和“执行远程命令”
而对于“发现”类事件来说,其支持的操作还有添加主机、移除主机、启用主机、禁用主机、添加到组、从组中删除、链接到模板及从模板上拆除关联等
对于“自动注册”类事件来说,支持的操作为添加主机、禁用主机、添加到组及链接至模板等
Operation相关的属性说明:
Step:告警升级(escalation)调度方式;
From:操作开始的位置;即第几次升级间隔时间到达后检测仍然有“问题”时开始执行操作;
To:直到哪一步为止,其减去From中的数字再加1即表示要操作的次序;0表示无限;
Step duration:前述自定义告警升级的时间间隔,0表示使用默认;
Operation type:操作类别;选定不同的操作类别,其后续的其它属性也有所不同;
Send message:发送消息;
Remote command:执行远程命令;
Conditions:执行操作的条件;
Not ack:仅在事件为“未知(unacknowledged)”时执行操作;
Ack:仅在事件可被识别(acknowledged)时执行操作;
类别为“Send message”时的相关属性:
Send to User groups:给选定组中的所有用户发送通知;
Send to users:给选定的用户发送通知;
Send only to:发送通知时所使用的媒介,all为所有媒介;
Default message:如果启用,则发送默认消息;
Subject:消息的自定义主题,可以包含宏;
Message:要发送的消息内容,可以使用宏;
类别为“remote command”时的相关属性:
Target list:远程命令执行的目标主机,可以是当前主机、其它主机或主机组;
Type:命令类型;
IPMI:IPMI命令;
Custom script:自定义脚本,可以选择其是在zabbix server上还是zabbix agent上执行;
SSH: 通过ssh执行命令,需要提供目标主机上的用户帐号、相关的认证方式及认证所需要额外信息;
Telnet:通过telnet执行命令,需要指定用户名、口令及远程主机telnet服务监听的端口;
Global script:全局脚本,执行“Administration→Scripts”定义的脚本的其中之一;
Commands:要执行的命令;
告警升级(escalation)
escalation用于实现用于定制发送通知或执行远程命令的方式,
常用于实现如下场景:
出现问题时立即发送通知;
问题得不到解决时多次发送通知给用户;
按需延迟发送通知;
问题长久得不到解决时发送给级别更高的用户;
立即执行远程命令或经过一个预定的时长后仍未解决问题时执行远程命令;
故障恢复时发送相关信息;
实际操作中,action的escalation机制的实现依赖于“escalation step(升级步长)”,step是一个时间长度;
为了简化操作过程,可以为step定义默认的时长,只有在必要时才为action自定义其step
可以在任何有效的step到达时启动action,第1个step表示立即启动;
如果要延迟启动action,可以选择在后面的其它step上启动
下面示例表示延迟一个step之后才启用action
zabbix监控某关注的指标:
host group -->host --> item(存储mysql) -->graph(zabbix-web)-->trigger -->event -->action
本文出自 “xiexiaojun” 博客,请务必保留此出处http://xiexiaojun.blog.51cto.com/2305291/1844032
以上是关于Zabbix Zabbix监控第一台服务器的主要内容,如果未能解决你的问题,请参考以下文章