配置Zabbix的注意事项

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 的注意事项

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 的注意事项

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 名是否合法,如果存在参数那么验证参数是否合法,如果没有参数那直接跳过。如下图的意思大家现在懂了吗?

配置 Zabbix 的注意事项

 3. Key 名称

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

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

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

配置 Zabbix 的注意事项

 4. Key 参数

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

配置 Zabbix 的注意事项

key 参数可以是带引号的字符串、不带引号的字符串以及数组。如下图。
配置 Zabbix 的注意事项

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

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

配置 Zabbix 的注意事项

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

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

为什么要自定义 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 的注意事项

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 天,老数据将被清除

IT 敢客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:配置 Zabbix 的注意事项
喜欢 (3)
[313176056@qq.com]
分享 (0)
IT敢客
关于作者:
“我所做的一切都是为了方便我的生活~~~“
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址