Zabbix 5.0 监控实战(二)如何配置自定义的模板

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情

引子

前文《Zabbix 5.0 监控实战(一)服务器的基本性能指标监控》中我们使用了开箱即用的模板,这些模板丰不丰富?好不好用?满不满足基本指标的监控需求?答案无疑是肯定的。不过,出于各种各样的原因,可能我们就是想要创建一套自己的模板,比如一套更为整洁、清爽,更符合使用者审美的模板。

本篇主要介绍如何从 0 到 1 ,配置一套完全自定义的模板(主机群组、主机在前文中已经创建,本篇不再赘述)。

1 创建模板

进入菜单:【Configuration】 -> 【Template】,再点击右上角的【Create template】:

Zabbix 要求一个模板必须至少隶属于一个主机群组,这里填写完模板名称后还需要选择主机群组:

由于我们想要创建一个清爽的模板,这里就不再关联已有的任何模板了。

2 创建应用集

应用集不是必须的,创建应用集能够对后续的监控项进行合理的归类分组。

选择刚刚新建的模板,点击模板名称右侧的【Applications】,再点击右上角的【Create application】,输入应用集名称即可:

扫描二维码关注公众号,回复: 14316513 查看本文章

这里我们为基础模板创建 4 类基础的应用集:CPU、Memory、Network 和 Hard Disk 。

3 创建监控项

监控项的配置最为复杂,所需填写的信息项很多都很有讲究,对于新接触 Zabbix 的人来说其实是很难上手的。笔者认为最好的上手方式,就是直接去借鉴开箱即用的模板中的监控项配置。虽然是 CV 大法,但重要的是我们在自己动手实践的这个过程中,去体会、理解,最终掌握所实践的知识。

说回到配置页面,我们先整体上看一下配置监控项所需要填写的信息,点击模板名称右侧的【Items】,再点击右上角的【Create item】:

3.1 关键信息项说明

3.1.1 类型

Zabbix 5.0 可以选择 17 种监控项 Type(类型),这里仅介绍本文涉及到的 3 种,可以满足基本的监控要求:

(1)Zabbix agent:默认的监控项类型,此类监控项与 Zabbix Agent 进行通信进而获取监控数据。通信是过程由 Zabbix Server 向 Agent 索要数据,也称作被动模式。

(2)Zabbix agent (active):同样与 Zabbix Agent 进行通信进而获取监控数据,但通信过程是由 Agent 主动上报数据给 Zabbix Server ,也称作主动模式。

我们来细谈一下 Zabbix agent 的被动模式与主动模式的区别与优缺点:

  • 被动模式是默认的工作模式,我们可以看到开箱即用的模板中,绝大多数的监控项都是此类型。

  • 被动模式的优点就是配置简单,在 Zabbix Agent 安装完成后,即可使用。而主动模式则需要更多额外的配置才能使用:

    • 安装 Zabbix Agent 的主机,其 zabbix_agentd.conf 中需要配置 ServiceActive ,指向 Zabbix Server 的 IP 地址;

    • 安装 Zabbix Agent 的主机,其 zabbix_agentd.conf 中还需要配置 Hostname ,在 Zabbix Server 配置页面中添加主机时,主机的名称必须与这个值保持一致,才能使 Zabbix agent (active) 类型的监控项生效。

  • 在大多数的快速检查的情况下,主动模式的性能更好,主动模式下, Zabbix Server 不需要向 Agent 去索取监控值,而这个索取的过程中 Zabbix Server 需要等待 Agent 上的脚本执行完成。不过在监控数据能够快速返回的情况下,其实使用默认的被动模式,也不会有太大问题。

  • 当一个监控项需要执行一个较慢的脚本来获取监控数值时,此时就不应使用被动模式了,而是应该使用主动模式, Agent 执行脚本的耗时就不要让 Zabbix Server 一同承受了。

注意:
当一个主机上只有 Zabbix agent (active) 类型的监控项,而没有 Zabbix agent 类型的监控项时,该主机的 ZBX 图标是不会亮起的:

(3)Dependent item(从属监控项):从属监控项,可以基于一个现有的监控项,在其获取到新的监控值时,根据主项的值,自动计算得到从属监控项的值。从属监控项仅可以依赖于一个监控项,不过这个被依赖的监控项可以同样是一个从属监控项(这种依赖最大不可以超过三层)。

举个例子,我们有一个监控项 CPU IDLE TIME ,它能够获取 CPU 的空闲时间比率,如果我们想要监控 CPU 的利用率,就可以使用 【 100% - CPU 空闲时间比率 】 这样的方式,在 Zabbix Server 得到空闲率的同时计算得到利用率。

3.1.2 键值

Key(键值)是一个在单主机内唯一的标识。

我们这样理解键值,键值会告诉 Zabbix Server 或 Agent 去执行某一个命令,或引导它们去执行某一个脚本,从而获取到监控值。

不同的监控项,其支持的值也是有差异的。当我们的监控项是 Zabbix AgentZabbix agent (active) 类型时,可用的键值通过官方文档快速获取。

当我们的监控项是 Dependent item 类型时,键值由我们自行定义就好。

3.1.3 数据类型与单位

  • Type of information(信息类型):包含了整数、浮点数、短字符、日志、长文本,我们常用整数与浮点数。

  • Units(单位):这一项不是必录的,当我们设置了单位, Zabbix 会将所得到的数据进行转换,使其匹配我们所设置的单位。

3.1.4 更新间隔与保留时长

  • Update interval(更新间隔):每隔多长时间检索一次监控项的新值。

  • History storage period(历史数据保留时长):历史监控数据保留多久。

  • Trend storage period(趋势数据保留时长):趋势数据保留多久。

什么是趋势数据?
Zabbix 为每一个监控项保留其每小时内的最大值 / 最小值 / 平均值 / 统计值,这些数据就是趋势数据,它们用来形成趋势图形和历史图形。

这三个指标的配置十分重要,因为它们涉及到产生数据的体量,也就是涉及到数据库存储所需的磁盘空间。如果随意的将更新间隔设置的很小,保留数据的时间又很长,则很有可能会撑爆数据库。

这里我们细谈一下用于支撑 Zabbix Server 的数据库的磁盘需求:

数据库磁盘空间 = 配置文件数据 + 历史数据 + 趋势数据 + 事件数据

  • 配置文件数据:这部分大小固定,在 10M 左右。

  • 历史数据:大致的计算公式如:监控项总数 / 秒级更新频率 * 秒级保留时间 * 每个监控值的大小 ,其中数值类型的值大概占 90 个字节,而长文本、日志类型的值,可以按大约 500 个字节计算。

  • 趋势数据:趋势数据的更新频率是固定的,因此计算公式为:监控项总数 / 3600 * 秒级保留时间 * 每个监控值的大小

  • 事件数据:上篇中我们使用了自动发现、自动注册功能,这样的功能就会产生相应的事件,事件数据所需磁盘空间的计算公式为:每秒产生事件数 * 秒级保留时间 * 每个事件的大小 ,其中每一个事件大约需要 170 字节的磁盘空间。每秒产生事件数是无法预估的,我们在估算数据库所需磁盘空间时,可以按最坏的情况估算事件数据,即每秒产生 1 个事件。

3.2 实操

3.2.1 最普通的监控项

了解了上面的一些基础概念,我们就可以创建出最普通的监控项了。我们创建以下 Zabbix agent 类型的监控项(更新间隔统一设置为 1m ):

名称 描述 键值 数据类型 单位 所属应用集
Available memory 可用内存 vm.memory.size[available] 整数 B Memory
Avaliable memory in % 可用内存率 vm.memory.size[pavailable] 浮点数 % Memory
Total memory 内存总量 vm.memory.size[total] 整数 B Memory
CPU idle time CPU 空闲时间比率 system.cpu.util[,idle] 浮点数 % CPU
CPU iowait time CPU IO 等待时间比率 system.cpu.util[,iowait] 浮点数 % CPU
CPU system time CPU 系统时间比率 system.cpu.util[,system] 浮点数 % CPU
CPU user time CPU 用户时间比率 system.cpu.util[,user] 浮点数 % CPU
Hard disk utilization on / 根目录硬盘空间使用率 vfs.fs.size[/,pused] 浮点数 % Hard Disk
Total capacity on / 根目录总硬盘空间 vfs.fs.size[/,total] 整数 B Hard Disk
Uesd capacity on / 根目录已使用硬盘空间 vfs.fs.size[/,used] 整数 B Hard Disk

3.2.2 带有预处理的监控项

下面我们来创建两个稍微特殊一点的监控项,它们还是 Zabbix agent 类型:

名称 描述 键值 数据类型 单位 所属应用集
Network incoming on eno0 网卡入口流量速率 net.if.in[eno0,bytes] 整数 bps Network
Network outcoming on eno0 网卡出口流量速率 net.if.out[eno0,bytes] 整数 bps Network

因为我们需要得到的是流量速率,也就是一个差值,此时我们就需要对获取的监控数据进行预处理,在监控项创建页面中,点击【Preprocessing】选项卡,然后增加 1 条预处理规则,这里直接选择【Change per second】,就可以让我们的监控项存储差值了:

3.2.3 从属监控项

接下来再复杂一点点,我们创建两个类型为 Dependent item 的监控项,这跟创建 Zabbix agent 类型的监控项时,所需填写的信息有一点点区别:

  • 此时键值直接录入而不在可选;

  • 需要选择一个主监控项;

  • 从属监控项不能设置更新间隔,它的更新间隔同主监控项。

我们创建以下两个从属监控项:

名称 描述 键值 主监控项 数据类型 单位 所属应用集
CPU utilization CPU 使用率 system.cpu.util CPU idle time 浮点数 % CPU
Memory utilization 内存使用率 vm.memory.utilization Avaliable memory in % 浮点数 % Memory

这两个监控项都是基于主监控项进行简单的减法计算,计算的规则需要写在预处理中,预处理规则选择 JavaScript 类型,参数设置为 return (100 - value)

3.2.4 确认监控项生效

监控项创建完毕后,我们将模板挂载至某一主机上,稍等一会,然后进入菜单:【Monitoring】 -> 【Hosts】,点击该主机的【Latest data】链接,看到每一个监控项都收到了数据,就可以确认监控项已经生效了(注意,从属监控项的数据不会在此体现):

4 创建触发器

触发器能够通过一个或多个监控项来评估主机某一方面的状态(普通信息、警告、一般严重、十分严重、灾难等)。

我们基于 CPU 使用率来创建一个触发器,点击模板名称右侧的【Triggers】,再点击右上角的【Create trigger】:

  • Name:指定了触发器的名称,同时也是发生问题时的提示语;

  • Severity(严重性):包含未分类、普通信息、警告、一般严重、十分严重、灾难 6 种状态,每种状态对应着不同的颜色;

  • Expression(表达式):点击右侧的【 Add 】按钮,新增逻辑表达式:

  • Item(监控项):选择作为逻辑判断条件基础的监控项,这里是 CPU 使用率;

  • Function(函数):这里我们选择 min() 取最小值;

  • Last of (T)(最后一段时间内的所有值或最后几个值):这里我们设置为最后 3 个值;

  • Result(结果):这里设置为 > 80 ,连起来的语义就是 CPU 利用率的最后 3 个值中的最小值大于 80 。

这样我们就创建了一个简单的触发器,相似的,我们还可以创建以下触发器:

当监控指标达到了触发器所设置的逻辑条件时,我们可以在监控大屏( Dashboard )中看到相应的告警信息:

5 创建图形

接下来创建图形,来展示监控数据。点击模板名称右侧的【Graphs】,再点击右上角的【Create graph】可以进入到图形创建界面。

5.1 Normal(普通图形)

普通图形是使用最广泛的图形,也就是折线图。

以 CPU 利用率为例,我们看一下配置:

像百分率这样的监控数据,我们将 Y 轴的最小、最大值设置为固定的 0 和 100 ( X 轴为时间轴,不能被手动设置),监控项的折线可以更改样式,这里我们先使用最普通的 Line 看一下效果:

再配置一张网络流量图:

此时 Y 轴的最小、最大值根据实际的监控数据自动计算,再将折线样式修改为 Gradient line 渐变线,效果如下图:

5.2 Stacked(堆叠图)

堆叠图会以填充区域的形式展现,多个指标堆叠在一起。

CPU 的详细使用情况,适合以堆叠图展示:

图形效果如下:

5.3 Pie(饼图)

饼图适合展示只关心当前状况而不关系历史趋势的监控项,比如硬盘使用状况:

这里注意总量指标的类型要设置为 Graaph sum ,饼图效果如下:

5.4 Exploded(分解饼图)

分解饼图跟饼图的配置没有什么区别,只是在图形展示上有些不一样而已:

6 创建聚合图形

聚合图形就是将多个图形放在 m 行 * n 列的一屏中进行展示,详细的步骤在上篇中已经讲解过了,本篇不再赘述。

结语

自己配置了一大堆,回头看看开箱即用的模板,是真香啊!

猜你喜欢

转载自juejin.im/post/7112696252604612639