@Mr-13
2020-09-11T06:02:01.000000Z
字数 4459
阅读 53
zabbix
前文中,已经描述了怎样在zabbix中添加主机,但是,我们并没有对主机进行任何指标的实际监控,那么现在,我们来说说,具体怎样监控我们想要监控的指标。
在具体操作之前,我们先聊聊理论,假设我们想要监控磁盘的使用率,在没有zabbix这种监控工具时,我们怎样监控呢,再或者,我们不仅没有zabbix这种监控工具,我们也不会写脚本,更不会写任何程序,我们该如何监控磁盘的使用率呢。没错,人工监控,当我们无法依赖任何工具或者脚本等外部助力时,我们只能不停的看着屏幕,查看当前磁盘的使用率,如果磁盘使用率达到了我们设定的阈值,我们就会作出相应的处理动作。即使我们是通过人工完成监控的,我们也要想办法能够获取到被监控目标的数据,比如我们想要监控磁盘使用率,那么我们就要不停的获取磁盘的使用率信息,以便我们能够随时的了解磁盘的空间使用情况,那么我们怎样获取磁盘的使用率呢,就拿centos为例,我们可能会通过如下命令,获取每个分区的磁盘使用率。
我们通过命令,获取到了磁盘使用率的信息,当然,这个命令比较简短,方便我们从键盘键入,如果一条简单的命令,无法获取到磁盘使用率的信息呢,那么我们可能会通过一条稍微复杂的命令去实现监控,比如,如果我们只想要监控"根分区"磁盘使用率,我们可能会使用如下命令实现。
我们发现,获取监控信息的命令越来越长了,那么我们能不能尽量简化这些较长的命令呢,必须能啊,设置个别名不就行了,那么,我们把刚才的命令设置一个别名,直接执行命令别名试试。
可以看到,原本比较长的命令只缩减为了rdu三个字符。是不是比原来方便了许多呢,我们只需要三个字符,就能获取到根分区的使用情况。
linux的命令别名与zabbix的监控项并没有什么关系,但是他们有一些类似的地方,比如,我们刚才做的工作,无非就是获取监控信息,需要获取监控信息,就要执行对应的命令,我们也可以通过别名,调用对应的命令,从而获取到我们想要或得到的监控信息。
在zabbix中,我们要监控的某一个指标,被称为 "监控项"(item)
,就像我们的磁盘使用率,在zabbix中就可以被认为是一个"监控项"(item),如果要获取到"监控项"的相关信息,我们则要执行一个命令,但是我们不能直接调用命令,而是通过一个"别名"去调用命令,这个"命令别名"在zabbix中被称为 "键"(key)
,所以,在zabbix中,如果我们想要获取到一个"监控项"的值,则需要有对应的"键",通过"键"能够调用相应的命令,获取到对应的监控信息,我们暂且这样理解,方便我们入门。
好了,我们此处又提到了两个新的术语,我们来总结一遍:
监控项(item):
某个监控指标,在zabbix中就被称之为一个item,某个主机中可能有多个需要被监控的指标,也就是说,某个host中可能有多个item
键(key 、item key):
如果想要获取监控项对应的数据,则必须通过某个key去获取,我们可以把key想象成调用对应命令的"命令别名",zabbix中自带一些key,这些key往往比较通用,比如,通过这些key,我们可以监控cpu,内存,硬盘等常用指标,获取不同的指标信息,需要不同的key,但是如果这些自带的key无法满足我们的监控需求时,我们也可以自定义key,通过自定义key执行对应的操作,这些都是后话,我们 慢慢来。
继续上一篇的设置,我们已经在zabbix中添加了一台主机,现在,我们继续在这台主机上操作。
首先,打开我们zabbix控制台,点击 "配置" -- "主机" ,可以看到我们上次创建的主机,虽然我们为对应的被监控主机安装了agent,但是主机对应的ZBX仍然显示为灰色,代表我们还没有任何监控项被检测到,那么现在,我们来为testzbx1主机添加一个监控项。
按照上图的步骤,直接来到创建监控项的页面;创建一个检测主机CPU上下文切换次数的监控项。先上配置图,再逐项说明内置内容:
zabbix官方文档: https://www.zabbix.com/documentation/4.0/zh/manual/config/items/item
3、键值:
在键值一栏中,我们可以选择对应的key,也就是说,我们通过哪个key,获取到cpu的上下文切换次数的信息。
点击"选择"按钮后,可以看到非常多的预先定义好的key,这些key都是zabbix自带的key,这些key一般都是系统级别的通用的监控项所能够用到的key,如果这些"键"不能满足我们的需求,我们则需要自定义key,这是后话,到时再聊,此处,我们选择system.cpu.switches;选择后,相应的key值会自动填充到“键值”文本框中。
在继续操作之前,先插一段zabbix_get的内容:
前面在介绍zabbix的概念时已经说过:管理员可以在server端使用一个名为zabbix_get的工具,测试是否能够从agent端拉取数据。我们可以先通过命令行,看看对应的"键"返回的信息到底是什么样子的。
我们在server端,使用如下命令,获取一下system.cpu.switches这个键对应的值。
$ zabbix_get -s 58.57.86.166 -p 19450 -k system.cpu.switches
# zabbix_get参数说明:
# -s --host : 指定客户主机名或IP
# -p --port : 客户端端口,如不指定,默认10050端口
# -I --source-address : 指定源IP,写上zabbix server的IP地址,一般留空,服务器如果有多个IP,制定一个即可
# -k --key : 想要获得的key
# 至于使用长参数还是短的,自己选,我经常使用-s而不是-host,
# 如果不知道key参数可以使用 zabbix_agentd -p 寻找自己想要找的参数
上图中,我们在server端通过zabbix_get命令,使用system.cpu.switches这个"键",获得了主机上的cpu上下文切换次数。我们运行了三次这个命令,可以看到,cpu的上下文切换次数是在不停的增长的,而且返回的值是一个整数。
好了,回到我们的图形化配置界面,继续看我们的监控项配置。
6、更新间隔时间:
数据更新间隔表示每隔多长时间获取一次监控项对应的数据,为了演示方便,能够尽快获取到数据,我们设定为每隔1分钟获取一次监控信息。但是需要注意,在生产环境中,如果不是特别重要的、敏感的、迅速变化的数据,不要获取的这么频繁,因为如果我们的监控项变得特别多时,获取信息的时间间隔过于频繁会带来巨大的监控压力,同时对数据库的写入也是一种考验。
当然,我们也可以灵活的定义时间间隔,比如,周一到周五我们的业务量比较少,可以10分钟获取一次数据,而周六周日的业务量会剧增,为了实时监控,可以设置5分钟获取一次数据,这里只是举个例子,如果有类似的需求,可以通过"自定义时间间隔"配置段,添加不同时间段的不同监测频率。
7、数据存留时间:
因为我们每隔1分钟就获取一次数据,那么这些数据都会变成历史数据,存入数据库中,通过上图中的历史数据文本框,可以设置历史数据的保存时长。
上图中,我们设置历史数据保存15天,此监控项超过15天的数据将会被zabbix删除。
从上图中,还可以看到有一个趋势数据保存天数,趋势数据是什么意思呢?趋势数据就是每个小时收集到的历史数据中的最大值、最小值,平均值以及每个小时收集到的历史数据的数量,所以,趋势数据每小时收集一次,数据量不会特别大,一般情况下,历史数据的保留时间都比趋势数据的保留时间短很多,因为历史数据比较多,如果我们监控的主机非常多,而且监控的频率特别频繁,那么数据库的压力则会变得非常大。
8、应用集:
我们可以把"应用集"理解为同一类型的监控项的集合,"应用集"英文原词为application ,application为一组item(监控项)的集合,比如,我们有3个监控项,它们分别监控"磁盘使用率","磁盘写入速率","磁盘读取速率",虽然它们监控的指标不同,但是他们都是监控"磁盘"的监控项,所以,我们可以把它们归类为"磁盘"应用集,同理,如果有2个监控项,一个是监控nginx连接数量的,一个是监控nginx请求数量的,虽然它们监控的指标不同,但是他们都是监控nginx相关指标的,所以,我们可以把他们归为nginx应用集。
但是,由于我们没有创建过任何应用集,所以上图中,应用集选择框中没有任何可选应用集,如果没有可选的合适的应用集,我们可以直接在"新的应用集"文本框中填入要创建的应用集名称,那么对应应用集会自动被创建,当前监控项也会自动归类为这个应用集。
设置完成后,点击保存,继续设置“进程”。
9、进程设置:
在进程步骤中,我们可以对采集回来的数据进行各种格式化处理;点开下拉框,可以看到有非常多的处理选项,这里我们暂时只关注两个选项:
简单更改: 表示本次收集到的信息值 减去 上一次收集到的信息值 得出的差值。
每秒更改: 表示本次收集到的值减去上次收集到的值以后,再除以两次收集信息的间隔时间。
而此处,我们监控的指标为cpu上下文切换次数,这是一个不断增长的整数值,所以,我们选择"差量(每秒速率)"最为合适。这样我们就能够监控到不同时间段内cpu上下文切换的频率了。
保存后,可以看到监控项列表中已经添加了刚才我们所设置的监控项内容;状态为“启用”;等待10秒左右刷新,可以看到 ZBX
的标记也已经被点亮。
在主机的应用集中,也存在了对应的监控项。
监控项已经创建成功,那怎么查看这个监控情况呢,点击“监测”----“最新数据”,设置必要的查询条件,这里我设置了主机查询条件,点击查询后,就可以看到所创建的监控项。如果是刚刚创建的监控项,数据手机需要一段时间。
但是如果超出了正常的数据手机时间之后,很长时间内仍然无法收集到数据那么有可能是因为agent端与server端时间不同步引起的,请确定你的agent端与server端的时间是同步的。
点击“图形”,就可以查看到所采集的数据图表了;可以点击右上角,查看数据值