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等等。
那么在哪里可以看到这些东西呢?一般在创建或者配置一个监控项的时候。每次创建监控项你都必须选择一个检测类型。看如下图:
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。具体看截图,各个参数我都已经标注清楚了。
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名是否合法,如果存在参数那么验证参数是否合法,如果没有参数那直接跳过。如下图的意思大家现在懂了吗?
3. Key名称
key允许如下字符作为名称:
0-9a-zA-Z_-.
大致意思是说允许字符:所有数字、有大小写字幕、下划线、减号、点.
key名称从左到右走下规则,只要又一个字符不符合,那么key就不合法。
4. Key参数
item key可以又多个参数,他们之间用逗号’,’分开。如下图
key参数可以是带引号的字符串、不带引号的字符串以及数组。如下图。
quoted string:带引号字符串
unquoted string:不带引号字符串
array:数组
参数如果为空,那么将会使用他设置的默认值。例如key icmpping[,,200,,500],其中3个参数都为空,那么每200ms会ping一次,超时时间为500ms,其它为空的参数使用默认值。
4.1 参数- 带引号
如果key参数带引号,那么任何unicode数据都合法,如果参数里面带有双引号,那么要使用”\"来转义。具体如下
4.2 参数- 不带引号
如果kye参数是一个不带引号的字符串,除了逗号和右中括号其他任何unicode字符串都合法。具体看如下图
4.3 参数- 数组
如果key参数是一个数组,那么数组要多加一对中括号,并且数组里面的参数同样要遵循参数规范,具体如下图
为什么要自定义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等等。
那么在哪里可以看到这些东西呢?一般在创建或者配置一个监控项的时候。每次创建监控项你都必须选择一个检测类型。看如下图:
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天,老数据将被清除