zabbix item详解

        zabbix监控项item是什么 


 什么是item

Items是从主机里面获取的所有数据。通常情况下我叫itme为监控项,例如我们ttlsa云服务器加入了zabbix监控,我需要监控它的cpu负载,那么实现这个方法的东西就叫item。接下来zabbix教程中提到的item都翻译为监控项。

item构成

item由key+参数组成,item详细介绍请看下回分析。

监控项中需要获取cpu信息,则需要一个对应的监控key:system.cpu.load。如果是获取网卡流量,那么获取网卡这个监控项需要key:net.if.in或者net.if.out。

一 般情况下key要与参数结合起来使用,例如获取5分钟的负载情况:system.cpu.load[avg5],avg5是对应的参数,如果是1 分钟则使用avg1,如果是15分钟则使用avg15(有人会问,如果是2分钟是不是avg2,-!-,没有这种说法)。网卡流量 net.if.in[eth0],使用eth0作为参数可以获取到eth0网卡的进入流量,同样看一看换成eth1,eth2等等。

结束

zabbix item是什么,想必大家心中已经有了这个概念了,item types有那些呢


 

            item types

1. 什么是item types

item types是由zabbix提供的各种类型的检查器(这样翻译很奇怪),大致就是Zabbix agent, Simple checks, SNMP, Zabbix internal, IPMI, JMX monitoring等等。

那么在哪里可以看到这些东西呢?一般在创建或者配置一个监控项的时候。每次创建监控项你都必须选择一个检测类型。看如下图:

nagios

zabbix监控类型

2. item types注意点

从zabbix 2.0开始一台主机可以定义多个接口,什么是接口?agent、jmx、impi、snmp这些都是接口。假如你需要检查他的硬件那你需要配置impi,如果你还需要检测他的mysql、nginx之类的,你需要agent,监控什么类型的item,你需要配置什么类型的接口。如果你配置来多个接口,当需要检查一个tiem,zabbix会依次(Agent→SNMP→JMX→IPMI)调用接口,直到找到合适的接口为止。

有些监控项完全由服务器端来完全,根本不需要agent,这个大家可以记一下。接下来的大部分时间都要花费在zabbix的监控类型。大家要做好心理准备。

3. 结束

大家知道了什么是item types,那么我该如何创建监控项呢?


             zabbix创建监控项item


 上一篇文章我们已经了解了什么叫zabbix item,本节内容来详细讲解如何创建一个item。我们带着目的来学习这节内容。本节目标为,创建获取cpu个数的监控项。

1. 创建监控项

点击配置(configuration)->主机(Hosts)->在你要配置的主机一栏上点击Items->点击create item。具体看截图,各个参数我都已经标注清楚了。

item

zabbix-create-item

2. Item 属性详解

 

属性 描述
Host 主机或者模板
Name 监控项item名称可以使用如下宏变量:

$1, $2…$9,这9个参数对应item key的参数位置。

例如: Free disk space on $1

如果item key为“vfs.fs.size[/,free]”,那么对应的名称会变成”Free disk space on /“,$1对应了第一个参数”/“,你明白了吗?

Type item类型(常见agent、SNMP、agent(active)等),请看后续监控项类型相关文章.
Key 监控项item的key.点击select可以看到系统很多自带的key,也可以看到用户自定义的key,如何自定义key,情继续关注ttlsa后续的zabbix教程.
Host interface 主机接口,例如agent、SNMP、impi等
Type of information 获取到得数据类型

Numeric (unsigned) – 64bit unsigned integer

Numeric (float) – floating point

numberCharacter – 字符串,最长255字节

Log – 日志文件. key必须为log[].

Text – 大小无限制的文本

Data type 定义获取到整数数据的数据类型

Boolean – 数据为0或者1.’true’表示1,’false’为0,不区分大小写。

如下为True和False的定义:

TRUE – true, t, yes, y, on, up, running, enabled, available

FALSE – false, f, no, n, off, down, unused, disabled, unavailable

任何非0数字都被认为是TRUE,0被定义为FALSE.负数呢?

Octal – 八进制

Decimal – 十进制

Hexadecimal – 十六进制

zabbix将会自动把他们转为数字

Units 默认情况下,如果原始值超过1000,那么他会先除以1000并且显示出来例如,设置了单位为bps并且收到的值为11102,将会显示为11.1Kbps

如果单位被指定为 B (byte), Bps (bytes per second) ,那么它会除以1024然后再显示数据。所以大家在监控流量和文件大小的时候不要用错单位,否则会出现数据不一致的情况。

如下为时间单位:

unixtime – 转为 “yyyy.mm.dd hh:mm:ss”. 只能使用正数。

uptime – 转为“hh:mm:ss” 或者“N days, hh:mm:ss”

例如,收到的值为881764秒,他将会显示为“10 days, 04:56:04”

s – 转为“yyy mmm ddd hhh mmm sss ms”;

例如,收到的值为881764(单位秒),他将会被显示为10d 4h 56m”,只会显示3个单元。有时候只会显示2个单元,例如”1m 5h”(不包含分,秒,毫秒),如果返回的值小于0.001,他只会显示”<1 ms”禁用单位:ms、rpm、RPM、%

Use custom multiplier 如果启用这个选项,所有接收到的整数或者浮点数都会乘以这个文本框里面的值。使用这个选项,zabbix将会把收到的KB,MBps等数据先转为B,Bps。否则zabbix不能正确设置前缀(K,M,G等等).

zabbix 2.2开始支持科学计数法,例如:1e+70.

Update interval (in sec) 数据更新时间注意:如果设置为0,那么这个数据将永久不更新。但是如果在灵活更新间隔(flexible interval)里面设置了一个非0间隔,那么以这个为准
Flexible intervals 可以创建例外的更新间隔,例如:

Interval:10,Period:1-5,10:00-19:00,表示周一到周五的早上10点到晚上19点每十秒更新一次数据。其余时间使用默认值。这边最多只能设置7个灵活更新间隔.如果设置的多个灵活时间间隔有冲突,那么他会使用最小的时间间隔。

两个注意点:如果时间间隔被设置为0,那么数据永久不会更新。它不能用在zabbix主动方式的item

Keep history(in days) 历史记录可以在数据库中保存多久,过期的历史数据将会被Housekeeper删除.

从Zabbix2.2开始,这个值可以被一个全局值覆盖:Administrator->General->Housekeeper->勾选Keep history(in days),输入你希望历史记录保留的时间。

zabbix官方推荐大家尽量开启他,尽量使用一个较短的历史记录。如果你想看历史数据的画,你可以将”趋势历史记录Keep trends”的保留时间设置长一点。

Keep trends(in days) 趋势数据(以小时为单位的min,max,avg,count的数据)在数据库中保留时常,过期数据将会被HouseKeeping删除。

从zabbix2.2开始.这个值可以被一个全局值覆盖(请参考上面的Keep history)

备注:趋势数据只能存数字类型数据,字符、日志这些都无法存储。

Store value As is – 数据不作处理

Delta (speed per second)

计算值公式为 (value-prev_value)/(time-prev_time)

value – 获取到得原始值

value_prev – 上次接收到的值

time – 当前时间

prev_time – 上次接收数据的时间一般用于数据增长的类型,例如:

网卡流量,每次获取到得都是当前网卡总流量。比如第一次给的值是0字节(UNIX时间为1),第二获取到得是3000字节(UNIX时间为31),那么套用公式(3000-0)/(31-30),可以得出数据是100字节/秒

备注:如果当前获取到的值比上一个值更小,那么zabbix会忽略这个值,等待下一次的值

Delta (simple change)

计算公式为 (value-prev_value),value – 当前值value_prev – 上次获取到得值

Show value 值映射,需要配置数字映射到字符的映射表。例如:

1=>ttlsa.com访问正常。如果key返回的数据为1,那么监控页面不会显示1,而是显示ttlsa.com访问正常。key返回的数据只能为整数,并且不做任何修改保存到数据库中。只有在显示的时候才会根据映射表来展示相应的内容。

Log time format 只可以用在LOG类型中,支持占位符:

* y: 年(0001-9999)

* M: 月(01-12)

* d: 日(01-31)

* h: 小时(00-23)

* m: 分钟(00-59)

* s: 秒(00-59)如果时间搓留空不会被解析。

例如:

如 下为zabbix agent日志” 23480:20100328:154718.045 Zabbix agent started. Zabbix 1.8.2 (revision 11211).”前面6个字符是PID,后面更上日期,时间和日志内容,日志时间类为“pppppp:yyyyMMdd:hhmmss”

备注:“p” 与 ”:” 为占位符,除了“yMdhms”不能为占位符,其它任意字符都可以作为占位符

New application 创建一个新的应用
Applications 包含多个应用,例如:

cpu、disk、network,监控项可以属于多个应用

Populates host inventory field 数据自动填充到inventory资产清单的相应属性,前提是你的inventory处于自动模式
Description 监控项的描述
Enabled 是否启用这个监控项.

创建item快捷方法,编辑一个item,然后克隆这个item,修改name等等其它数据即可。

 3. 不可用的items

 由于各种原因,某些item的数据无法获取到,但是zabbix依旧会再固定的时间间隔内重新获取数据

 4. 结束

 不可不说这篇文章很重要,下一步zabbix item key详解


            zabbix item key详解

上篇文章详细介绍了zabbix创建item,本节详细介绍item key的规范,涉及到key的名称如何定义,key的参数如何定义。看完这片,以前总看不懂的key今天算是明白了。

1. 灵活的参数

 参数位置可用接收任意参数则是灵活的。例如vfs.fs.size[*],”*”星号可以使用任意的参数,例如:
vfs.fs.size[/]
vfs.fs.size[/opt]

 2. Key格式

 Item key格式包含key名称和他得参数,参数必须符合规范,请看下面的图片。key的定义要遵循箭头从做到右的规则,如果都符合,那这个key合法,否则不 合法。大致流程是:首先验证key名是否合法,如果存在参数那么验证参数是否合法,如果没有参数那直接跳过。如下图的意思大家现在懂了吗?

item

 3. Key名称

key允许如下字符作为名称:
0-9a-zA-Z_-.

大致意思是说允许字符:所有数字、有大小写字幕、下划线、减号、点.

key名称从左到右走下规则,只要又一个字符不符合,那么key就不合法。

item

 4. Key参数

item key可以又多个参数,他们之间用逗号’,’分开。如下图

item

key参数可以是带引号的字符串、不带引号的字符串以及数组。如下图。
item

quoted string:带引号字符串
unquoted string:不带引号字符串
array:数组

参数如果为空,那么将会使用他设置的默认值。例如key icmpping[,,200,,500],其中3个参数都为空,那么每200ms会ping一次,超时时间为500ms,其它为空的参数使用默认值。
4.1 参数- 带引号
如果key参数带引号,那么任何unicode数据都合法,如果参数里面带有双引号,那么要使用”\"来转义。具体如下

item

4.2 参数- 不带引号
如果kye参数是一个不带引号的字符串,除了逗号和右中括号其他任何unicode字符串都合法。具体看如下图
item

4.3 参数- 数组
如果key参数是一个数组,那么数组要多加一对中括号,并且数组里面的参数同样要遵循参数规范,具体如下图
item

为什么要自定义KEY

有时候我们想让被监控端执行一个zabbix没有预定义的检测,zabbix的用户自定义参数功能提供了这个方法。我们可以在客户端配置文件zabbix_angentd.conf里面配置UserParameter.
语法如下:

UserParameter=key,command

用户自定义参数包含一个key和一个命令,key必须整个系统唯一,配置好之后,重启客户端。

然后配置item,在key的位置填上我们自定义的key即可。

用户自定义参数里指定的脚本由zabbix agent来执行,最大可以返回512KB的数据.

用户自定义key实例

简单点的命令示例:
UserParameter=ping,echo 1
如果调用ping这个key,将会收到返回值1.
更复杂的命令示例:
UserParameter=mysql.ping,mysqladmin -uroot ping|grep -c alive
如果返回1表示MySQL运行中,如果返回0表示MySQL挂了

灵活的自定义key:

如下为灵活的用户自定义参数

    UserParameter=key[*],command

 

参数 描述
Key 唯一. [*]表示里面可以传递多个参数
Command 需要执行的脚本,key的[]里面的参数一一对应$1到$9,一共9个参数。$0表示脚本命令.

注意事项

1. 如果需要使用命令行里面出现$2这种变量,那么你要使用两个$$2,例如awk ’{ print $$2 }’,之前就遇到过这个问题,不停的测试自己脚本输出正常,但是zabbix却拿不到数据,原来是出在这里。为了防止和参数冲突,所以zabbix做了这 个规定。
2. zabbix禁止使用一些不安全的参数,如下:
\ ' ” ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
3. 从zabbix 2.0开始,zabbix返回文本数据可以是空格。

示例1

UserParameter=ping[*],echo $1
ping[0] - 将一直返回0
ping[aaa] - 将一直返回 'aaa'

示例2

UserParameter=mysql.ping[*],mysqladmin -u$1 -p$2 ping | grep -c alive
如下参数用于监控MYSQL,并且可以传递用户名和密码。
mysql.ping[zabbix,our_password]

示例3----统计一个文件中有多少行被匹配?

UserParameter=wc[*],grep -c "$2" $1
如下方法将会返回文件中出现指定字符的行数
wc[/etc/passwd,root]
wc[/etc/services,zabbix]


 

        zabbix item types监控类型


1. 什么是item types

item types是由zabbix提供的各种类型的检查器(这样翻译很奇怪),大致就是Zabbix agent, Simple checks, SNMP, Zabbix internal, IPMI, JMX monitoring等等。

那么在哪里可以看到这些东西呢?一般在创建或者配置一个监控项的时候。每次创建监控项你都必须选择一个检测类型。看如下图:

nagios

zabbix监控类型

2. item types注意点

从zabbix 2.0开始一台主机可以定义多个接口,什么是接口?agent、jmx、impi、snmp这些都是接口。假如你需要检查他的硬件那你需要配置impi,如果你还需要检测他的mysql、nginx之类的,你需要agent,监控什么类型的item,你需要配置什么类型的接口。如果你配置来多个接口,当需要检查一个tiem,zabbix会依次(Agent→SNMP→JMX→IPMI)调用接口,直到找到合适的接口为止。

有些监控项完全由服务器端来完全,根本不需要agent,这个大家可以记一下。接下来的大部分时间都要花费在zabbix的监控类型。大家要做好心理准备。

一旦我们创建好web监控之后,我们便可以查看web站点的性能状况。zabbix一共给我们提供了6个item key,实际上就三个,分别针对单个阶段和整个阶段,三个item分别为web.test.in、web.test.fail、web.test.error,下面看看它的具体用法。


      zabbix web监控项item详解

web方案监控项

当web监控项创建好之后,下面的key会被自动添加好

key 描述
 web.test.in[Scenario,,bps]  整个阶段中的下载速度,单位字节/秒
类型: Numeric(float)
 web.test.fail[Scenario]  整个检测阶段,失败的阶段个数,如果所有的阶段(step)都成功,那么返回0
类型: Numeric(unsigned)
 web.test.error[Scenario]  返回最后一个错误信息(文本)

web监控项实例

创建触发器“Web scenario failed”,表达式如下

{host:web.test.fail[Scenario].last(0)}#0

创建触发器“Web application is slow”,表达式如下

{host:web.test.in[Scenario,,bps].last(0)}<10000

备注:Scenario改成你web方案的名称即可

web方案阶段监控项

key 描述
 web.test.in[Scenario,Step,bps] 检索指定阶段的下载速度,字节每秒
类型: Numeric(float)
 web.test.time[Scenario,Step] 获取指定阶段响应时间,时间计算从开始请求道获取到所有响应信息之后
类型: Numeric(float)
 web.test.rspcode[Scenario,Step] 检索指定阶段的http响应代码
类型: Numeric(unsigned)

 

step item使用实例

创建触发器 “Zabbix GUI login is too slow” trigger, 触发器表达式如下

{zabbix:web.test.time[ZABBIX GUI,Login].last(0)}>3

说明:ZABBIX GUI是web方案的名称,Login为阶段(step)名称

web监控项数据保留时间

web监控历史数据数据保存30天,趋势数据保存90天,老数据将被清除

zabbix agent 类型所有key:http://www.ttlsa.com/zabbix/zabbix-agent-types-and-all-keys/

 来源:http://www.ttlsa.com/zabbix/

posted on 2016-09-03 12:07  losbyday  阅读(17725)  评论(0编辑  收藏  举报

导航