Zabbix 官方推荐的标签使用准则

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zabbix 官方推荐的标签使用准则相关的知识,希望对你有一定的参考价值。

本文介绍了 Zabbix 官方所推荐的标签使用准则。这些准则虽然没有强制性,但若坚持下来能明显提升使用体验并减少长期运维成本。

另外,掌握这些技巧和细节,也有助于您更有效的建立自己的标签体系。

Zabbix

1. 如何更高效的应用标签

小伙伴们对于 Zabbix 内的标签一定都很熟悉了。标签确实非常灵活,配置好了能大大提高运维工作的效率,但一个个模板、甚至一个个指标的去维护标签也是件痛苦的事情。

Argus运维平台,一个基于 Zabbix 的IT运维监控平台,能针对大量模板内的指标实现标签的自动化添加,并基于此提供基于标签的、跨模板的指标 Top N 功能。

2. 官方推荐的标签使用准则

这里将分使用场景来介绍具体的标签使用准则。

注意,这些标签使用准则都是 Zabbix 官方所推荐的。

2.1 模板配置

2.1.1 名称

标签的名称和值大小写敏感,比如“Zabbix server”。

注意,这里所说的只是强制性的要求,所以看起来很宽松。但为了更好的效果,建议遵从下文的 2.1.3 标签名和标签值的格式

2.1.2 标签

用下面推荐的标签模型使用标签来对模板进行逻辑分组。

请注意,在 Zabbix 未来的发行版中,该标签模型可能会变为强制性的。不遵循该规则的模板需要更新后才能继续使用。

模板标签

标签key

标签值

描述

class

application - 面向用户的软件,比如 MS Exchange,Jenkins,GitLab

business - 为用户自定义模板保留

database - 数据库管理系统,比如 MongoDB

device - 嵌入式硬件和设备,如手机、智能电灯、摄像机等

hardware - 电脑硬件,比如服务器、工作站等

network - 网络硬件,如路由器、交换机、WLAN等

os - 操作系统,如FreeBSD、Windows、Linux

power - 电源,例如APC UPS

service - 外部服务和API,如银行的 PSD2 API

software - 系统软件和应用平台,如 VMware、K8s

storage - 网络和附加存储,如SAN、磁盘箱等

voip - VOIP硬件或软件(包括视频会议),如Asterisk、Cisco PBX

指定监测对象的类别(例如区域、类型等)

必须至少有一个该标签;允许使用多个该标签,但不建议如此使用。

target

产品名称、品牌名称、名称和型号的组合或任何其它方便的参考。

在类别中明确监测对象。

必须至少有一个该标签;允许使用多个该标签。

例如,模板 Huawei VRP by SNMP 包含下列标签:

​class: network; target: huawei; target: huawei-vrp​

2.1.3 标签名和标签值的格式

  • 必须小写
  • 允许下列字符:a-z, 0-9, -, _, .(字母,数字,减号,下划线,英文句号)
  • 对于单词分隔,首选连字符(减号)而不是下划线(“cloud-region”,而不是“cloud_region”)
  • 首选ASCII编码,但也支持UTF-8
  • 当使用普通名词作为标签值时,以单数形式使用,除非该名词仅以复数形式使用(“pipeline”,而不是“pipelines”)
  • 每个标签名称或值的长度限制为255个字符

2.2 监控项

2.2.1 标签

用下面推荐的标签模型使用标签来对监控项进行逻辑分组。

请注意,在 Zabbix 未来的发行版中,该标签模型可能会变为强制性的。不遵循该规则的模板需要更新后才能继续使用。

监控项标签

标签key

标签值

描述

component

cpu

device

memory

network

storage

power

environment

os

system - 低级和与操作系统无关的系统指标,除非定义了更具体的组件

application

raw - 表示技术性的指标(例如主监控项或仅被其它计算型监控项所需的监控项),本身并不直接代表任何业务含义

business - 内部信息,例如公司分支机构的数量

kpi - 内部信息,例如每月返回的客户数量

sensor - 内部信息,例如蒸馏塔中的压力

指定指标的类型

如果预定义值无法涵盖,则可以使用自定义的值

每个监控项必须至少有一个该标签;允许多个该标签。

如果监控项可以与多个组件相关,请为每个组件设置一个单独的标签(请参见下面的示例)。

例如,监控项 ICMP ping 包含下列标签:

​component: health; component: network​

2.2.2 更新间隔,历史和趋势数据的存储周期

如果监控项包含标签“data: raw”(主监控项或仅被其它计算型监控项所需的监控项,详见上面的表格)——那么设置历史和趋势数据的存储周期为0即可,因为用不着保存这些中间值。

2.3 低级自动发现规则

低级自动发现(LLD)里的监控项和触发器可以包含标签,就像常规监控项和触发器一样,但 LLD 监控项还可以有包含 LLD 宏的标签。

例如,低级自动发现监控项 Interface #IFNAME(#IFALIAS) 可能包含以下标签:

​component: network; description: #IFALIAS; interface: #IFNAME​

如果适用,可配置 LLD 主机发现规则,将主机标签 ​​service​​ 分配给发现的主机,以指定资源引用。

例如,发现的主机“load_balancer”、“web01”、“web02”、“webforum”都包含下列标签:

​service:webserver​

2.4 触发器

用下面推荐的标签模型使用标签来对触发器进行逻辑分组。

触发器标签

标签key

标签值

描述

scope

performance

availability - 可能变得不可用的监测目标或其部分

capacity - 可能耗尽的被监控资源

notice

security

compliance - 为用户自定义模板保留

定义问题的类型。

必须至少有一个该标签;允许使用多个该标签。

例如,触发器 High ICMP ping loss 包含下列标签:

​scope: availability; scope: performance​

2.5 创建 webhook

2.5.1 参数

Webhook 使用参数来获取配置和宏的值。

以下与标签有关的宏可用于实现附加逻辑或提供补充信息:

  • EVENT.TAGS 或 EVENT.TAGSJSON - webhook 可使用这些宏以所需的格式(纯文本或结构化数据)将事件标签传递给外部系统。

2.5.2 webhook 标签

标签用于存储事件的数据(仅用于基于触发器的事件,即告警)。webhook 使用标签来存储从外部系统接收的令牌ID、链接或任何其它信息,应该将这些信息存储为事件标签。创建标签名时应考虑以下规则:

  • 应避免使用触发器级别上的常用词
    例如,触发器会有一个 URL 标签,以记录与触发器相关的系统地址。如果 webhook 还使用 URL 标签名来存储从令牌系统检索到的链接,这将会导致混乱(将出现两个同名的标签,并且 webhook 逻辑可能会受到影响)。
  • 标签名应以唯一字符串作为前缀,以避免在不同的 webhook 中重复
    例如,如果 Redmine 和 Jira webhook 具有完全相同的 ticket_id 标签名(不带前缀),那么当两个 webhook 在同一动作中使用时,标签值可能会混淆。

2.5.3 返回值

虽然没有返回特定值的要求,但在定义 webhook 的响应时,应使用下列方法之一:

  • 如果 webhook 不使用标签:建议返回一个通用字符串(例如 OK),以表示执行成功。
  • 如果 webhook 使用标签(选中了 Process tags 复选框):webhook 应始终返回一个JSON对象,该对象至少包含一个空的标签对象:tags: 。

示例

如果 webhook 正在使用基于令牌的系统,并希望在事件标签中存储令牌ID,那么它仍应返回空标签以进行更新/恢复操作。这是确保 Zabbix 服务器在解析 webhook 结果时不会产生错误的唯一方法,也是确保在不需要解析现有标签时不会产生开销的唯一方法。请注意,JSON 应该作为字符串返回,而不是作为对象返回,因为 Zabbix 服务器会将对象转换为[Object object]字符串。

C++核心准则T.24:使用标签类或特征区分只有语义不同的概念


T.24: Use tag classes or traits to differentiate concepts that differ only in semantics.

T.24:使用标签类或特征区分只有语义不同的概念

 

Reason(原因)

Two concepts requiring the same syntax but having different semantics leads to ambiguity unless the programmer differentiates them.

两个概念具有相同的语法需求但是语义不同会引起歧义,除非程序员可以区分它们。

 

Example (using TS concepts)(示例(使用TS概念))

template<typename I>    // iterator providing random access
concept bool RA_iter = ...;

template<typename I> // iterator providing random access to contiguous data
concept bool Contiguous_iter =
RA_iter<I> && is_contiguous<I>::value; // using is_contiguous trait

The programmer (in a library) must define is_contiguous (a trait) appropriately.

程序员(在库代码中)必须恰当地定义is_contiguous(特征)。

Wrapping a tag class into a concept leads to a simpler expression of this idea:

将一个标签类封入概念可以更简单地表现想法。

template<typename I> concept Contiguous = is_contiguous<I>::value;

template<typename I>
concept bool Contiguous_iter = RA_iter<I> && Contiguous<I>;

The programmer (in a library) must define is_contiguous (a trait) appropriately.

程序员(在库代码中)必须恰当地定义is_contiguous(特征)。

 

Note(注意)

Traits can be trait classes or type traits. These can be user-defined or standard-library ones. Prefer the standard-library ones.

特征的表达可以通过特征类和类型特征给你来实现。它们可以是用户定义的,也可以由标准库提供。标准库提供的方式更好。

 

Enforcement(实施建议)

  • The compiler flags ambiguous use of identical concepts.
  • 编译器应该标记想定义完全相同的概念的混乱用法。
  • Flag the definition of identical concepts.
  • 标记完全相同的概念定义。

 原文链接

​https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#t24-use-tag-classes-or-traits-to-differentiate-concepts-that-differ-only-in-semantics​


 

新书介绍

​《实战Python设计模式》​​是作者最近出版的新书,拜托多多关注!

C++核心准则T.24:使用标签类或特征区分只有语义不同的概念_语义

本书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。

对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。

 


 

觉得本文有帮助?请分享给更多人。

关注微信公众号【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!

 

C++核心准则T.24:使用标签类或特征区分只有语义不同的概念_概念_02

 

以上是关于Zabbix 官方推荐的标签使用准则的主要内容,如果未能解决你的问题,请参考以下文章

centos7下搭建zabbix监控

如何只使用标签来构建一个简单的电影推荐系统

Zabbix 6 系列学习 10:原生高可用介绍及使用

Zabbix修改显示语言为中文

使用Zabbix监控MySQL数据库

zabbix使用SSL证书实现https登录