一、zabbix-server 添加被监控主机

1、Node1节点安装zabbix-agent,zabbix-sender并修改配置文件

[root@Node1 ~]# yum install http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm 

[root@Node1 ~]# yum install zabbix-agent zabbix-sender

修改配置文件

[root@Node1 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.6
ServerActive=192.168.10.6
Hostname=Node1
Include=/etc/zabbix/zabbix_agentd.d/

启动zabbix-agent:

[root@Node1 zabbix]# service zabbix-agent start
Starting Zabbix agent:                                     [  OK  ]
[root@Node1 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  填上相应信息即可

wKiom1e_DSHhXPSJAACJryDGkvw550.png

添加完成后:

wKioL1e_DXaz5rwMAAEZx1uY8rc077.png


host name:必须是唯一的,用来标识主机的地址,必须要和agent配置文件中填写的host name保持一致(不区分大小写)。否则会报错,

查看监控机上的/var/log/zabbix/zabbix_server.log,
显示日志:
cannot send list of active checks to [192.168.10.1]: host [Zabbix server] not found
查看被监控机上的/var/log/zabbix/zabbix_agentd.log,
显示日志:
No active checks on server: host [Zabbix server] not found

这是因为,通过zabbix configuration页面配置的被监控主机名跟被监控主机上zabbix_agentd.conf中配置的Hostname不一致。
修改为一致的名字后,重启zabbix_agentd即可。

visible name:在zabbix-server中显示的名字


二、添加监控项

1、监控项(item)

  “ 监控项(item)”是Zabbix 服务器用于监控一个特定对象上的一个特定指标,并负责针对其收集相关的监控数据

       比如CPU每分钟的平均负载可以是一个item,每5分钟的平均负载是一个item,某特定网络接口接收报文的速率又是一个item等


每一个Item都拥有相应的“类型(Type)”

例如:

          “Zabbix agent”、“SNMP”、“External check”、“IPMI agent”、“SSH agent”、“JMX agent”等


Zabbix服务器会使用相应类型的协议或机制同被监控端通信


2、item构成

      tem由key+参数组成

             监控项中需要获取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等等。


3、主要属性介绍

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:不支持


4、item key

       每一个item都有其专用的“Key”

      Zabbix服务器在与被监控端通信时就使用相应的协议或机制去询问被监控端这个Key的值,被监控端则调用与此Key对应的监控脚本获取数据并返回给服务器端

      Key的命名只能使用“0-9a-zA-Z_-.”等字符,且可以接受参数

其命令习惯如system.cpu.load[<cpu>,<mode>],其中,中括号中的内容为参数,且分别可以按次序使用$1、$2、…进行引用,此示例中仅有两个参数,若要使用不定数目的参数,则可以使用“*”表示

      注意:每个key背后都应该有一个命令或脚本来负责数据收集,此命令或脚本可调用传递给key的参数,调用方式为$1,$2...

      zabbix有许多预定义的key,详细信息的获取地址:

https://www.zabbix.com/documentation/2.0/manual/config/items/itemtypes/zabbix_agent

       对于每一个item,Zabbix服务器还定义了怎么存储这个item的数据、数据采集的频率及历史数据的保存时长等

     多个item还可归类为一个由“application”定义的逻辑组


5、获取item key的值

[root@Node6 ~]# rpm -ql zabbix-get
/usr/bin/zabbix_get
/usr/share/man/man1/zabbix_get.1.gz
[root@Node6 ~]# 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]"


[root@Node6 ~]# 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


6、创建监控项

        点击配置(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对应了第一个参数”/“,你明白了吗?

Typeitem类型(常见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  

                              64位无符号×××数字

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 valueAs 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依旧会再固定的时间间隔内重新获取数据


更多关于item key的格式、参数:

      http://www.ttlsa.com/zabbix/zabbix-item-key/



二、Graphs 图表

1、简易图表

   创建item后,zabbix会自动为每个item生成graphs(monitoring -->latest data)


简易图表详解

   http://www.ttlsa.com/zabbix/zabbix-simple-graphs/


2、自定义图形(graphs)

          今天我们要讲的是zabbix自定义图表功能,这个自定义图表是什么呢?顾名思义,zabbix提供了一个自定义图表的功能,这不是废话么?呵呵~前面文章 讲到的《zabbix简易图表》只能显示单个item的数据图表。如果我们想显示多个信息到一个图表上,那必须使用zabbix自定义图表功能

比如,我 们最常用的网卡流量监控,一张流量图上会包含进/出的流量信息。一个图表的数据可以来源一台主机,也可以来源于多台主机


        只有需要把多个item在一个graphs中显示时,才需要自定义图形

        自定义图形中可以集中展示多个时间序列的数据流

        支持“线状图(normal)”、“堆叠面积图(stacked)”、“饼图(pie)”和“分离型饼图(exploded)”四种不同形式的图形


创建自定义图表步骤如下:

Configuration→Hosts(或者templates),点击hosts/template列的Graphs,点击右上角的Create graph,出现如下表单。

cacti

zabbix自定义图表

Graph属性:

属性描述
Name

图表名称(唯一

Name:图形的独有名称;建议使用hostname+application+item

Width图表宽度(单位:像素)(仅用于预览和pie/exploded图表).
Height图表高度(单位:像素)
Graph type图表类型:
Normal - 常规图表, 值显示为线条
Stacked - 叠图, 显示填充区域
Pie - 饼图
Exploded - “裂开的”饼图,显示部分切出的饼图
Show legend显示图例说明,例如item名称与最大、平均、最小的数据,一般显示在图表的下方
Show working time是否显示工作时间,如果选择这个复选框,那么非工作时间背景为灰色。备注:饼图和爆炸式饼图没有这个参数
Show triggers显示触发器,那么触发器将会用红线表示. 两种饼图不包含这个功能
Percentile line (left)左Y轴百分数.
Percentile line (right)右Y轴百分数
Y axis MIN valueY轴最小值:
Calculated - 自动计算Y轴最小值(取item最小值)
Fixed - 固.定Y轴最小值. 饼图与裂变式饼图没有这个参数
Item - 选中item的最新值(例如你选中某网卡,那么它的最小值将来自这个网卡item的最新值)
Y axis MAX valueY轴最大值:
Calculated - 自动计算Y轴最大值(取item最大值)
Fixed - 固.定Y轴最大值. 饼图与裂变式饼图没有这个参数
Item - 选中item的最新值(例如你选中某网卡,那么它的最大值将来自这个网卡item的最新值)
3D view立体风格图表,仅适用于饼图与爆炸式饼图.
Items监控项,图表的数据来源

配置图表items

             图表的数据来源于items,点击add选择需要显示到图表的item,可以添加多个。

在一个图形中,不同item的图形还有一些可单独配置的属性,如图形颜色、绘图风格等

Item展示属性:

参数描述
Sort order (0→100)

绘图顺序,可以上下拖动items来改变他们的顺序.这个顺序用来决定图层的顺序。

Nameitem名称


Type

Type (仅用于两个饼图图表):
Simple - 按比例显示
Graph sum - 充满整个饼图
一 张图表只允许有一个items是Graph sum,否则报错:ERROR: Cannot display more than one item with type “Graph sum”,通常用于影片,硬盘大小item使用Graph sum,剩余空间则使用simple。这样一个饼图的硬盘使用情况便一目了然。

Function当一个item有多种数值时,选择一种数值用于图表展示
all - 所有值 (最小、平均、最大)
min - 仅最小值
avg - 仅平均值
max - 进最大值
Draw style

绘制风格(只有常规图表存在该选项):
Line - 绘制线条
Filled region - 绘制填充区域,,即面积图;

Bold line - 画粗线
Dot - 画点,虚线图,以稀疏的点组成;

Dashed line - 画虚线,以破折号组成;

Y axis sideY轴在左边还是右边
Colour颜色

图表预览

在创建图表的过程中,我们可以随时预览修改的配置图表,点击标签preview即可。

备注:如果是template预览时没有意义的,毕竟没有任何数据。

关于触发器限制

如果图表的高度小于120像素,那么图标上将不会展示触发器相关信息。


例子:

wKiom1jowGew9BXMAAFNrd047Z8235.png



三、zabbix agent类型所有的key

zabbix-agent有两种工作模式:  # 是对于zabbix-agent而言的工作模式

  passive:被动等待zabbix-server来Item采集数据

  active:主动发送Item数据


1、网卡流量相关

 功能           key              返回值          例子


网卡入口流量   net.if.in[if,<mode>]    整数      net.if.in[eth0,errors] 

网卡出口流量    et.if.out[if,<mode>]    整数      net.if.out[eth0,errors] 

网卡进/出流量的总和    net.if.total[if,<mode>]      整数      net.if.total[eth0,errors]


参数详解:   # < >表示必须参数

if    网卡名称

mode   可用值:

         bytes – 字节数 (默认)

         packets – 包数量

         errors – 错误数量

         dropped – 丢包数量

请使用增量存储方式:Delta(speed per second)

units:bps

update interval:60

一般监控每个网卡进和出的流量即可,可参考zabbix-server模版上设置


2、端口相关

检测端口是否开启 net.tcp.listen[port]  0–未监听,1–监听中  net.tcp.listen[80]

port – TCP端口

           net.tcp.port[<ip>,port]


3、进程相关

          kernel.maxfiles

          kernel.maxproc


4、CPU相关

         system.cpu.intr

         sys.cpu.load[<cpu>,<mode>]

         system.cpu.switches

利用率     system.cpu.util[<cpu>,<type>,<mode>]


5、磁盘IO相关

         vfs.dev.read[<device>,<type>,<mode>]



zabbix agent 类型所有的key 详情: 

  运维生存时间:http://www.ttlsa.com/zabbix/zabbix-agent-types-and-all-keys/

  官网:

  https://www.zabbix.com/documentation/2.4/manual/config/items/itemtypes/zabbix_agent 


6、用户也可以自定义item

  关键:选取一个唯一的key

  命令:数据收集的命令或脚本

    后面详细学习