Zabbix既想做好监控和告警,还想做好可视化分析?看看创始人怎么说

原创
2020/10/24 10:30
阅读数 1.4K

“我们的目标不是要分离Zabbix中不同的功能组件,而且要使之水平可扩展以适应不同的需求和负载,在新版本研发中,我们正在朝着这个方向努力。”

——Zabbix创始人&CEO Alexei Vladishev



Zabbix创始人&CEO Alexei Vladishev 连续5年参加Zabbix中国峰会!今年以视频形式给大家带来精彩分享——《Zabbix5.0新功能介绍和5.2简介》,同时回答了两个“犀利”的提问,来看看有多犀利~

  互动问答  

社区伙伴

现在看来Zabbix既想做好监控和告警,同时也想做好可视化分析。你能把两者都做好吗?

谢谢你的问题。我们的目标不是要分离Zabbix中不同的功能组件,而且要使之水平可扩展以适应不同的需求和负载,在新版本研发中,我们正在朝着这个方向努力。


Zabbix 5.2将引入API和UI(用户界面)的负载平衡功能。它将使在云和容器环境中启动这些组件成为可能,以实现高可用性和更高的性能。另外,如果您查看路线图,您可能注意到我们已经计划在Zabbix 5.4中分离数据收集和数据分析组件,我们希望使它们更加独立。


这仅仅是转换工作的开始,我们希望使大多数Zabbix组件独立,并且更加模块化。它有助于更好地扩展Zabbix,并以更快的速度实现新功能。

 Alexei


社区伙伴

在未来的版本中,Zabbix是否支持多服务器管理?这对于百万级的大型实例很重要。

是的,我希望在Zabbix的未来版本中实现它。我认为第一个重要的阶段是使Zabbix仪表盘和问题视图能够显示来自各种Zabbix服务器的信息。我不知道具体什么时候可以实施,但它肯定在我们的长期路线图中。


此功能将有助于使Zabbix真正成为分布式监控解决方案,而不会出现单点故障。

 Alexei


从这两个问题,能看出Zabbix既仰望星空又脚踏实地。着眼当下,Zabbix5.0具体有什么新功能,它如何帮助你的工作更便捷有效?以及5.2的路线图的简介。小Z整理了Alexei长达1小时的精选文字,便于伙伴们阅读,欢迎收藏起来慢慢看。

还可点击视频观看,在路上的伙伴可以听起来。

点击跳转至Bilibili,观看完整视频


  演讲正文  

1024,祝程序员比我还帅~


大家早上好,很高兴能够参加此次Zabbix峰会,这是我们在中国的第五届峰会,很高兴能参加并向大家介绍Zabbix产品。首先,我要感谢我们的赞助商们,没有赞助商们的鼎力支持,我们也无法成功举办,感谢各位一直伴我们同行。当然,我还要感谢这次会议的主办方,我们的中国的合作伙伴——上海宏时数据系统有限公司,感谢团队为此次峰会所做的努力和付出。

01- 回顾Zabbix 4.2和4.4版本


今天我想和大家分享一些关于目前Zabbix最新版本——Zabbix 5.0的功能和介绍。在正式介绍Zabbix 5.0之前,我先带着大家简单回顾一下Zabbix 4.2和4.4版本。Zabbix 4.2于去年4月份正式发布,距今已有一年半的时间。Zabbix4.2版本中也发布了一系列非常好的功能,能够使运维人员、系统管理员和开发人员更轻松地实现监控需要。


借助数据节流的功能,Zabbix可实现高频监控,实现亚秒级的数据采集,利用这一特性可实现对某些核心业务系统的实时监控。

除此之外,Zabbix 4.2还支持http agent,支持使用http协议进行数据采集。这个功能使得Zabbix可以从不同的API采集数据,如云API,不同的应用和服务API等等。对于业务监控,这是非常重要的一个功能。


除此之外,还引入了增强的预处理功能,引入了数据格式校验和自定义脚本预处理,使用Javascript语言进行数据处理。借助Javascript能够使预处理变得非常灵活。只要你能想象到的逻辑和处理方式,使用Javascript脚本都可以在预处理实现。任何类型的数据(二进制数据、文本数据和数字数据)都可以通过多种不同的方式进行转换,从而使其符合数据采集的需要。同时Zabbix Proxy可对监控指标进行预处理,可有效降低Zabbix Server的压力,以上就是Zabbix4.2版本的主要功能介绍。


半年之后,去年9月份,距今也有一年多的时间了,我们正式发布了Zabbix 4.4,在4.2版本原有的功能之外,Zabbix 4.4又推出了很多新功能,让Zabbix使用变得更加灵活、更加易用。

同时还推出了Zabbix下一代Agent,Zabbix Agent2。Zabbix Agent2目前已经得到了官方支持,Zabbix Agent2的插件和调度器等特性,我稍后会进行详细介绍。Zabbix 4.4版本可使用Webhook发送告警和通知,我个人非常喜欢这个功能,这个功能让我们社区的用户、合作伙伴可以直接对接其他系统,增强Zabbix的集成性,而无需对Zabbix本身进行任何代码更改,这是一个很有价值的功能。你只需根据需要集成的接口逻辑,使用Javascript语言编写,并将其包含添加到Zabbix之中即可实现告警和消息的对接。


Zabbix 4.4也支持时序数据库,后面我会做详细介绍。刚刚提到可通过Webhook进行告警或通知,Zabbix内置了一些简单的知识库,鼠标悬停,即可在Zabbix中看到触发器和指标的一些描述性介绍。我们还发布了Zabbix模板建立标准,以文档的形式把模板创建最佳实践分享给大家。

02- Zabbix 5.0新功能

接下来,我将向大家介绍Zabbix 5.0。该版本于今年正式发布,这是一个LTS版本,LTS 版本意味着长期的支持,Zabbix 5.0有长达五年的支持期。Zabbix5.0是今年五月份正式发布的。


在正式介绍产品功能之前,我想给大家说一下我们当前正努力实现的目标。可以先看一下Zabbix提供的集成列表,可以看到,目前Zabbix已经集成和提供了数百个集成方案,数百个模板用于监控不同的服务、应用和网络设备,不同的技术平台。我们还支持很多系统的集成,让Zabbix和其他系统互联。所以,一方面我们可以看到,我们提供了很多监控的模板和插件,随着Zabbix agent2的引入,插件的开发难度也降低了,使用 Zabbix采集数据将变得更加简单和快速。另一方面,基于Webhook功能集成了众多工单管理系统,故障管理系统,事件平台等等。这就是我们想要实现的目标:让Zabbix更加灵活可扩,使其适用于不同的公司、不同的行业以及不同的企业规模等各种业务场景。


Webhook,在Zabbix 5.0中开箱即用很多集成,其中包括工单系统如OTRS,Zendesk,Jira,Redmine,ServiceNow等等。除此之外,还支持多种告警通知方式,如Slack、Pushover、Victorops、PagerDuty、Matterost、Microsoft teams等等。一旦有新的集成测试通过,我们都会在Zabbix官网上发布给用户,发布到官网之后,大家可以搜索感兴趣的集成插件,下载 XML文件,导入Zabbix即可使用。


再来看看Zabix Agent2,我们已开发并内置了一些插件。已经可以利用现成的插件监控很多主流的应用和服务,比如redis,NGNIX,Windows,Memcached,Elasticsearch,HAproxy,postgreSQL,MySQL等,后续我们将会集成更多的插件。这一切不能仅仅归功于Zabbix,还要感谢我们的合作伙伴,我们的用户和社区成员,感谢大家的付出。因此,如果你有好想法和建议,可以随时与社区交流分享。社区可以帮你改进和提升,也可以给你助力。

03- 成为Zabbix产品的贡献者


现在,我们发布了一个简单的流程,让用户可以成为Zabbix产品的贡献者。如果你有一个好主意,或是你写了一个插件、开发了一个模板,那么你随时可以成为Zabbix的贡献者--只需签署一份协议,非常简单易懂的贡献者协议。你就可以提出一个Pull Request,然后Zabbix团队会审核。如果综合评估下来,觉得你做的功能很好,可以被很多社区成员使用,被很多Zabbix用户使用,那么我们可能会将其纳入到Zabbix产品之中,你做的功能被纳入Zabbix产品的好处就是这个功能将受到我们的全面支持,任何使用Zabbix的用户都可以免费使用这个功能。

04- Zabbix Agent 2

Zabbix是一个免费开源通用的企业级监控解决方案,每个人,无论身在何处,都可以在我们的网站下载,并用于任何场景。同时,我们也一直在努力让Zabbix尽可能兼容多个平台,在多个平台上可获取,让用户能够更容易的使用。我们一直致力于增加兼容的操作系统列表,我们为不同的Linux发行版(例如redhat、Centos或Debian Ubuntu)等多个平台构建了相应的软件包。除此之外,我们还提供了Docker镜像和其他容器技术的镜像包。并且我们还提供了可以用于不同虚拟化平台的镜像和系统镜像。我们在许多公有云平台以及OpenStack和Redhat OpenShift中发布了Zabbix。简而言之,一方面我们正在尽最大努力让Zabbix尽可能开放。它是免费开源的软件。另一方面,我们也正在努力让尽可能多的用户可以更便捷的使用到Zabbix。


还有,随着Zabbix 5.0的发布,Zabbix Agent2目前已有官方支持。什么是Zabbix Agent2,这是我们官方发布的一个新的监控agent,适用于Linux和Windows的更加强大的agent,我相信未来会支持更多的平台。

与原来的Agent相比,agent2具有许多显著的优点。至少在当前,我认为我们开发的Agent2是市场上最先进的监控agent之一。它支持各种类型的数据采集,它支持推拉方式,同时支持主动或被动检查。Agent2支持长连接和并发检查,使数据采集更高效,在数据库等监控应用场景尤为适用。Zagent Agent2为开箱即用,可直接替换现有Agent。Zabbix Agent2是一个模块化、高性能和可拓展的监控agent,可适用于各种不同场景。在Zabbix 5.0中, Agent2支持监控数据的本地持久化存储。是什么意思呢?这就意味着如果Zabbix agent和Zabbix server或Zabbix proxy之间连接中断,Zabbix agent会将收集到的数据存储在内存缓存中。但如果中断时间过长,采集的数据可能会丢失,因为内存缓存空间是有限的,老的数据将会丢失。


但在Zabbix 5.0中,这种情况并不会出现,我们可以通过调整Zabbix agent2的配置文件,启用持久缓冲区, 这样Zabbix agent采集的所有数据都会持久保存至本地磁盘。现在如果Zabbix agent和Zabbix server之间连接中断,所有采集数据会被保留,并存储在本地文件系统中。连接恢复后,比如当Zabbix server和agent正常连接时,采集了1h的数据,然后Zabbix server和agent链接断了数小时之后又恢复正常,重新启用agent后,agent会将所有数据发送回Zabbix server,以此来保证监控数据是绝对安全的,永不丢失。

05- 安全性


在Zabbix5.0中,我们针对Zabbix的安全性做了很多工作,其中不乏一些重要的改进。这展示的是一个比较的小的改进点,关于Webhook,前面提到了我们使用Webhook方式使Zabbix与外部系统进行集成和对接。比如告警系统、故障管理系统、事件管理系统和通知系统。这时Zabbix是需要和外部系统对接,但对于一些企业客户来讲,可能会顾虑安全性,所以我们现在支持http proxy,所以如果你有云服务等需要对接,可通过Zabbix的http proxy方式,以保证传输和数据的安全,这也是对安全性的一个很好的小改进。

另一项改进是,现在可以在Zabbix agent端限制指标采集。你可以定义采集指标的白名单或黑名单,例如,如果你只想启用与MySQL相关的采集指标,可以使用特别的参数-Allow Key,然后使用通配符,就像我的示例中的Allow Key=MySQL[*],这样所有带MySQL Key的指标都可以采集,除此之外其他指标就都会被拒绝。对于黑名单,只需配置不想要采集的监控指标Key即可。这样可以大大提高Zabbix agent端的安全性,提升你监控的服务的安全性。


我们还引入了可配置的密码,提高了加密传输的安全性,对于TLS加密通信,用户可灵活配置各种加密方式 。在对安全性有高要求的多业务场景下,这个功能非常有用。如果安全审计部门的人员告诉你在现行标准下你使用的密码太弱,Zabbix现在可支持根据需要,来配置加密方式。


除此之外,在Zabbix5.0中,支持数据库链接加密,如MySQL数据库和Postgres数据库链接,你需要在MySQL和Postgres中配置支持并接受安全连接,在这种情况下,Zabbix与MySQL和Postgres的连接都将被加密。同样还支持数据库连接的可配置证书加密,安全性将大幅度提升。


我们提高了Zabbix数据库中用户密码存储方面的安全性。由于历史原因,之前我们使用MD5、哈希算法(Hash algorithms)对用户密码进行加密,而MD5目前普遍被认为是不安全的加密算法,这也是我们为什么改用Blowfish加密算法的原因,现今Blowfish被认为是业界标准。这就是为什么我们不用MD5的原因,就是简单的从一个不太安全的算法切换到更加安全的算法。用户登录过程中,Zabbix 5.0如果发现仍然使用MD5,Zabbix会根据您在登录表单中提供的密码进行适配,可进行无缝升级和兼容。


在Zabbix 5.0中,我们还引入了对保密宏的支持,我认为这是一个巨大的安全性改进,这意味着,现在我们有了两种类型的宏。一个就是已经有的文本宏,现在我们也支持保密文本宏了。所以如果宏被配置为秘密文本,type是秘密文本的话,基本就意味着该信息只支持写入。保密宏可配置为例如密码、令牌或身份验证ID等信息,在前端它是不可见的,会显示为星号,且无法被识别,会被隐藏。对于关注宏安全性的用户这是一个很重要的功能,是一个巨大的进步。当然,它可以用于隐藏你不希望外部系统或Zabbix其他用户看到的信息。即使在告警消息和通知中调用加密宏,也是使用星号代替显示,无法获取保密宏的数据。


所以说可以看到,在Zabbix中,一切都变的更加安全。我们在几乎所有的地方都使用远程连接的通信加密,比如几乎Zabbix UI和API与数据库之间的所有通信,Zabbix server、Zabbix server之间、Zabbix proxy、Zabbix server和Proxy和agent 之间都是用了TLS。我们还可以使用白名单和黑名单,以便仅允许agent进行特定的指标采集。在告警通知中我们支持Webhook,并且Webhook也可以使用HTTPS协议。在Zabbix中目前已经不再有明文通信。


在Zabbix 5.0中,我们还为单点登录引入了SAML身份验证。是什么意思呢?现在你可以进入Zabbix界面中的配置,选择身份验证方法,选择启用SAML即可配置使用。这意味着你可以将Zabbix连接到不同的身份提供商,如Azure或可从公共云身份提供商,或来自不同软件供应商的身份提供商,如Microsoft、联合服务或OpenAM等。在这种情况下,单点登录具有很大优势,只需输入密码一次,使用单向或双向因子授权,即可免输入密码。

06- 易用性


Zabbix5.0的易用性在多处都做了提升。其中一个就是Zabbix界面的外观。5.0中做了哪些改变呢,来看一下,我们优化了5.0前端界面布局,修改为宽屏布局了。现在大多数人都使用宽屏,呈现信息并以优化的方式呈现信息非常的重要,我们做了哪些改动呢?顶层菜单移到了左侧,可以在三种不同的模式下使用,你可以将其隐藏,也可以根据需要将其展开。顶部菜单栏原来占用的空间现在可以用于展示信息了,这就是新的界面。

对于仪表板,我们引入了复制粘贴功能。现在如果你想将小部件从一个仪表板复制到同一仪表板或另一个仪表板,只需单击该小部件,按复制,然后使用粘贴功能将其粘贴到相同或不同的仪表板。非常简单,有助于更快地构建新仪表板和/或修改现有仪表板。

现在你还可以将Dashboard中的图形导出为PNG图像,非常简单,看到需要导出的图形,单击仪表板小部件,然后点击下载即可下载图形的PNG文件,这样就可以更方便的分享你的Dashboard。

现在还可以按严重性筛选一些仪表板小部件、问题小部件,以及按标签筛选问题主机,例如,如果我想要查看单个数据中心中发生的情况,我只需选择一个数据中心,而且我可以看到哪些服务可用,在实际使用中可以看到,我这个数据中心,可能有多少问题存在,这是另外一个数据中心。这里有更详细的环境信息。所以说,通过标签过滤是一个很强大的功能,我可以筛选掉我不想看的问题。

07- UI模块化、预处理、监控设备状态及批量更新


UI模块化,这是另外一个扩展Zabbix的方法。之前讲了Webhooks,我们还有Zabbix agent插件,接下来为大家介绍UI模块,它可以帮助我们灵活扩展Zabbix前端的功能。怎么做呢?


我们可以开发自己的模块,然后在Zabbix前端创建一个新的菜单项。也可以会创建一些新的页面,比如要开发一个新的状态报告页面、一个新的Zabbix可视化特性、一个新页面,或者是扩展现有页面的功能,这都得益于Zabbix5.0中引入的UI模块化的功能。可以去看一看,以上功能在官网在线文档中都有详细的介绍和说明,大家可以去官网文档页面查看。下面以一个小模块的制作为例,介绍如何创建自定义UI模块,可以参考这个例子,基于此代码构建你自己的功能模块。具体看下怎么做,该模块的文件结构非常简单。有几个php文件,几个json文件,这些文件能够大致描述模型的内容、版本、创建者等信息,都在json文件,module.php是整个逻辑都构建在几个php文件中来表示逻辑的数据,这样就可以实现。因此,在Zabbix的前端创建一个新页面并不需要太多编码即可实现。

08- 监控设备状态总览


在Zabbix5.0中,我们引入了一个新视图来查看我们监控的所有设备和服务的状态列表,称为监控设备状态总览。到Zabbix页面,单击监控-主机,就可以在列表中看到所有设备及其属性的列表。如你所见,有设备的名称、接口的IP地址、标记和有关问题的信息,以及设备问题统计。此外,此页面还可以非常轻松地导航到与主机相关的资源,因此,如果你要转到此特定设备或服务的最新数据或问题,或转到screen查看图表,只需单击,单击一下,我们就可以立即看到这台特定的主机有多少问题,有哪些问题,非常非常容易。监控设备的列表有高级的筛选选项,如果我所有的设备都有问题,我想看灾难问题或者高优先级的问题,通过筛选过滤,可以很容易的做到这一点。如你所见,也有按标签过滤的功能,这是一个非常实用的功能。如何筛选,如何操作不同的设备列表,具体的可以看一下,我觉得这是5.0里非常非常不错的一个功能。

09- 新预处理选项


预处理功能也做了改进,引入了称为替换的新预处理选项,听起来只是小小的改变,仅仅是用一个字符串替换另一个字符串,实际使用过程中,有很大作用。使用替换选项可以帮助我们在文本及其数字表示之间创建数据映射。例如,我们可以删除或替换不同的字符和字符串。当然,我们可以使用正则表达式来实现同样的功能,不过我认为预处理更方便也更容易实现。

10- JSON路径的新运算符


另一个小改进是JSON路径的新运算符,增加了波浪号。它的功能是返回匹配元素的属性名。例如,如果我想要获取consul服务列表,使用API连接到consul,要求获取consul服务列表,则会返回一个服务列表。然后我们可以使用这个运算符来提取服务名称。在我的例子中,结果是consul, content, login和mail,非常容易处理。

11- 对与同一问题相关的电子邮件进行分组


Zabbix5.0还有另一个小的易用性改进,很小,但是非常实用,那就是对与同一问题相关的电子邮件进行分组。因此,在你的电子邮件客户端中,您可以看到按事件ID和媒体类型分组的所有电子邮件。例如,如果我收到一故障告警消息,我的服务ABC有问题,然后我收到一条恢复消息,问题已恢复,此这两条消息将被归入同一组。因此,虽然这种改进相当小,但它确实非常有用。

12- 支持IPMI用户和密码的用户宏


此外,还有支持IPMI用户和密码的用户宏新功能,非常有助于维护安全相关的信息,也更加的规范,不要忘了这里也支持保密宏,保密标记在这里也是支持的。批量更新主机和模板的用户宏,可以非常有效地对用户标签进行各种操作。我们只需选择主机数量或更接近的一组模板,然后就可以从一组主机或一组模板添加、更新、删除或删除所有宏和用户宏。这个非常棒。还有什么?

13- 媒介消息模板

媒介消息模板,也是最新的功能之一,可以帮助我们更高效的配置Zabbix告警,来看看怎么操作的。从Zabbix 5.0开始,在媒介类型的配置里,例如本例中的电子邮件媒介类型,将会有一个名为message templates的新选项卡。你可以为问题通知、问题恢复通知或问题更新通知、发现通知等每种消息类型定义一个消息模板。因此,现在你可以在媒体类型级别执行操作,这基本上意味着,可以看到这些消息类型,当你定义消息模板时,可以像我们通常所做的那样定义主题,定义消息本身。之前,我们只能在操作级别维护这些模板。如果监控大型环境,有很多用户,我们可能会定义很多很多操作,可能会有数百数千个不同的操作。以标准方式维护模板和所有消息将是一场噩梦。对于我们想要发送给用户的消息类型,很难强制执行一些标准,有了媒介消息模板,这就很容易实现。


在Zabbix5.0中,增加了一个新的命令行程序,来调试Javascript脚本。在Zabbix中JavaScript语言现在用的很多了,可以用来做预处理,也可以用来创建Webhook。这个新工具可以帮助我们测试我们的Webhook脚本,或预处理脚本,也可以用来调试数据,了解预处理的复杂流程。命令行可执行程序的名称为Zabbix_js,如果我们执行Zabbix_js help,你可以看到命令的帮助选项,可以指定js脚本的名称,并指定输入的参数及输入的文件。这里为大家举例,例如我有一个名为test.js的JavaScript文件。test.js只是一行js代码,内容为返回输入的对数值。在这种情况下,我可以进行很简单的测试,-p 指定输入的数据为10,即可看到处理的结果。第二个例子,在很多情况下,js脚本执行可能需要很长的时间,输入参数也可能需要很多行,当然也可以是一个1M左右的文件,为什么不呢?这种情况下,可以指定从文件读取输入数据。在我的示例中,我的输入为一个my.json文件。在第三个示例中,我引入了Zabbix.log函数,来简化我的脚本的故障排除和调试,非常的简单易用。只需调用Zabbix.log函数,并指定日志级别,指定要作为输出查看的值,就可以将其用于故障排除。

恭喜你,已经看了一半啦,继续加油!


14- 触发器对文本操作的支持


5.0版本引入了触发器对文本操作的支持,所以现在触发器支持文本操作,这是个很好很好的消息!这使得之前触发器表达式不支持的许多用例现在可以支持了。让我来举几个典型的例子,来说明什么时候会使用到文本触发器。有时候,我们希望验证软件版本是否与预期的软件版本相匹配,在许多情况下,软件版本是文本字符串。或者在日志文件监控时,我们需要将一项的最新值与另一项的最新值进行比较。也可能希望将先前的值与当前的值进行比较,文本值,我们现在指的是文本值。对于文本值可支持等于或不等于的逻辑运算,让我再来举几个例子。


正如你在第一个示例中看到的,我们在比较期间收到的最后一个值是文本常量,现在我们也支持文本常量了,只需要用双引号引起来就可以用来判断。如检查版本5.0.0是否等于5.0,或者是否等于定义为用户宏的Zabbix版本,可以这样来实现。由此可见将宏作为常量配置,是一种非常好的用法。我们还可以将上一个值与前一个值进行比较,看看现在的值是否不同。例如,有人安装了新版本的软件,我们想要检测我们是否有新版本的软件,校验和是否已更改或类似的情况。或者我们也可以比较不同项的值。例如,我们再需要确保不同的服务器和不同的群集节点运行的软件版本完全相同,在这种情况下,我们可以使用这样的触发器。

15-自动发现

自动发现,这也是多个更新中的一项,在Zabbix 5.0引入了对JMX发现的支持,对JMX计数器的发现,我们有两个新的检查,jmx.get[]和jmx.discovery[]。这一功能能够返回JMX检查的json数组,我们可以将其用于数据收集,或数据收集和低级发现。还有什么?我们还引入了Windows性能计数器的发现,又是一个非常有用的功能。


例如,如果你想要了解有多少个CPU,或者在Windows注册表中有多少其他资源,那么就可以使用发现性能计数器。更好的ODBC监控,在Zabbix5.0之前,为了进行ODBC监控,我们必须在odbc.ini文件中定义和配置大量参数,而且这都是需要在Zabbix外部进行独立的文件配置,而且配置是比较麻烦的。如果配置发生变更,需要更改2个地方,一个是ODBC配置文件,另外一个是监控指标配置。现在关于ODBC的配置,只需要在监控指标上配置相应的属性即可。比如定义驱动程序名称、服务器IP地址、密码、用户名等,ODBC连接所需的所有内容都可以在监控指标上配置实现,所以对于那些使用Zabbix,通过ODBC驱动程序进行数据库监控的人来说,这是一个非常非常好的消息。


还有ipmi.get,这是新增加的IPMI传感器发现,与jmx发现的实现非常相似,它会以json格式返回IPMI传感器列表,可以将其用于自动发现和数据收集。

16- 监控指标测试


另一个很好的功能就是可以在UI界面进行监控指标的测试。创建了一个新的监控采集项之后,具体怎么操作呢?配置参数和输入选项之后,如何判断这些指标是否配置正确,并且采集正常的呢?从Zabbix 5.0开始,我们有一个很好的解决方案,在前端界面会有一个测试的按钮。只要点击这个测试按钮,Zabbix会立即显示从agent、SNMP agent或jmx agent采集到的内容,以及所有预处理步骤的结果,并且还会显示每个步骤之后的数据结果,以及最后采集的数据是怎样的,这是一个非常好的功能。


在出现问题的时候,比如因地址配置错误导致主机不可用,或agent不可用,就可以收到直观的告警消息。不要忘记我们也可以对媒介类型进行测试,在4.2或4.4中已经引入了这个功能,在媒介类型列表,点击测试按钮即可,就可以看到你的 媒介类型、集成的告警系统或者信息系统是否正常工作。


此外我们还引入了对原型的用户宏支持,在某些情况下,这个功能很有用。例如,当我们在进行低级别发现时,我们需要收到一些值,这些值可用于这些宏,我认为这是一个非常非常好的功能,特别是对于Zabbix的高级用户。


除此之外,我们还引入了对Float 64数据类型的支持。事实上,我们这样做的原因有很多。首先,Float 64允许我们保留更大的数字。第二个原因是Float64数据类型的兼容性,你可以在不同的数据库和不同的系统中找到这些数据类型。例如 Prometheus也使用Float 64数据类型,因此它们现在可以兼容。为了使用新的数据类型,如果要从以前版本的Zabbix升级,需要为MySQL、Postgres和Oracle执行double.sql文件,这样你的数据库结构将升级,并且可以利用Float64的优势。

17- 可扩展性提升


此外,我们还有大量的可扩展性方面的改进,以确保Zabbix可以支持扩展到处理数百万台设备。这些变化包括我们去掉了下拉菜单,下拉菜单是一个UI元素,但是可扩展性不强,特别是对于那些想要显示几百台、几千台甚至几万台设备的人来说,这是不能实现的。因此,我们采用了一个高性能的开源工具来实现。此外,我们有一个硬编码的最大尺寸概览网格。我们还对监控主机的图形进行了重新设计,如引入了多选图形、显示下降曲线图、一些限制等。我们还引入了尽可能多的分页功能,所以现在所有页面、所有视图页都支持分页。所以现在如果你有数十万设备,Zabbix UI依然能很好的工作。

18- 时序数据库


可以通过压缩数据来提高效率。这是什么呢?大家已经知道Zabbix目前支持时序数据库。时序数据库实际是在PostgreSQL数据库的基础上加上一个扩展插件,TimescaleDB在PostgreSQL上安装时序数据库扩展插件即可实现。时序数据库有诸多优点,比如实现了自动分区。这个非常好,这样的话使用Zabbix和TimescaleDB的组合,TimescaleDB会自动管理与分区相关的所有事情,不需要任何人为干预和配置,所有与数据分区相关的操作都由数据库自动管理和控制,全部自动。时序数据库的另一个巨大优势,是它是面向高性能场景的数据库。在某种意义上,无论什么数据库的大小,它都可以提供相同级别的性能。假设您有一个100G的数据库,随着数据库的大小的增长,大小到了 1TB,所能提供的性能是一样的。TimescaleDB是一个非常好的时序数据库,可扩展性很强。

19- 数据压缩功能


现在我们还引入了对数据压缩功能的支持。这是一个非常好的消息。这意味着可以对存储的数据进行压缩。你只需要指定需要压缩的数据,在我的例子里,压缩的数据是储存时间超过7天的数据,这样超过7天的数据、趋势数据和历史数据都会被压缩。


这一功能非常不错。有什么意义呢?这意味着数据将占用更少的磁盘空间。我们做了一些测试,在生产环境中,使用Zabbix 4.x版本的一个用户,数据为355GB。但在切换到时序数据库并启用数据压缩功能后,数据大小减少到43GB。如你所见,压缩比约为5倍多,是非常不错的一个功能。

20- 将SNMP设置项移动到主机接口配置项


除此之外,我们在Zabbix5.0中实现的另一个改进是将SNMP设置项移动到主机接口配置项。目前,对于SNMP类型,一个SNMP主机接口只有一种SNMP类型,而不是SNMP版本1、SNMP版本2、SNMP 版本3几个版本;对于监控指标类型,也只有一种项类型,所有SNMP相关参数都移到了Zabbix接口。SNMP版本或上下文名称、安全名称、安全级别等都可以在主机接口级别设置。那我们为什么要这么做呢?首先,这当然可以帮助简化模板配置,这样只需一个模板即可,而不是配置三个不同SNMP版本的模板。另一个好处就是从一个版本的SNMP切换到另一个版本要容易得多。对于那些使用Zabbix进行网络监控,或网络设备监控的人而言,这是一个非常有用的功能。

21- proxy可用性

还有什么?可用性监控将关注proxy可用性,这是一个巨大的变化。让我向大家介绍一下具体的细节,假设我们想要监视主机A、主机B和主机C的可用性,它们是通过Zabbix proxy监控。现在先让我们了解Zabbix proxy如何检查主机是否不可用,可以使用nodata函数,例如,如果一分钟没有收到数据,我们就认为主机不可用,出现了问题。但是也可能有这种场景,由于我们正在进行Zabbix proxy升级,或者Zabbix proxy因某些网络问题导致不可用。proxy不可用之后,我们会收到什么告警消息呢?在Zabbix 4.x中,我们将收到四条不同的消息,主机a、主机b、主机c不可用,proxy不可用。在版本5.0中,情况大不相同,因为5.0版更加智能,知道主机A、B和C是通过Zabbix proxy代理监控的,现在无法确定被proxy监控的主机是否不可用,但可以100%确定该Zabbix proxy不可用。因此,Zabbix5.0会生成Zabbix proxy不可用的一条消息,对于其他主机主机的状态是无法判断的。


如果你想要监控主机可用性,我们仍然可以使用nodata函数。现在默认情况下,它反映Zabbix proxy可用性。但是,如果您想要使用nodata函数,但你不关心是Zabbix proxy不可用还是host不可用。不管发生什么,你都希望接收警报。那么你可以使用strict选项。在这种情况下,Zabbix在使用nodata函数时判断主机可用性时不会考虑Zabbix proxy的状态。

22 -全局管理低级别发现规则


Zabbix 5.0允许我们全局管理低级别发现规则。是什么意思呢?低级别发现规则列表,现在支持不同选项的过滤,例如状态,例如本例中的主机组选择、主机选择等。如果你想要在一个地方看到哪些低级别发现规则不受支持,或者有一些问题,或者被禁用,我们可以使用这些过滤选项,这确实有助于我们清楚地了解系统的整体运行情况。

23- 支持取消确认事件的功能


Zabbix5.0支持取消确认事件的功能。大家知道事件是可以确认的,但是现在可以取消确认。那么它是如何工作的呢?在问题更新页面弹出窗口,可以看到很多选项,可以更改严重性、添加一些注释,或确认问题,如果问题已确认,现在也可以取消确认。我们为什么需要这个功能?我认为有很多场景是需要的。首先,很明显,可以修复问题,由于我们操作失误,或者由于我们因为某些原因确认了问题,现在我们可以取消确认。或者,我们可以使用这个功能来创建一个可能更好、更复杂的工作流,进行对应的处理。

24- 对低级别发现规则覆盖的支持


Zabbix 5.0引入了对低级别发现规则覆盖的支持。这是一个非常强大的功能。如果你使用低级别发现规则,一定要看一看,这个功能会大大简化你的配置。具体如何操作呢?举个简单的例子,假设我发现了不同的文件系统,但是我想以独立配置发现Oracle文件系统。那我该怎么做?首先需要创建一个覆盖规则,并指定文件系统是oradata。文件系统将Oracle数据库保存在数据文件系统上,那么在本例中,我希望与此先关的触发器具有不同的问题严重级别,而不是默认情况下的警告严重级别,而是将与Oracle文件系统相关的问题配置为较高严重级别。基本上是这个原理,它能覆盖监控项和触发器的特定属性。


再举一个例子,假设我不想发现临时文件系统。首先我需要定义一个筛选器,文件系统与tmp匹配。然后,如果它与tmp匹配,那么我设置Zabbix不发现那个项原型。只需要在原型操作选项里,自动发现,设置为否。这种情况下,则不会创建项,也不会发现它们。但正如你所看到的,我们也可以更改不同的选项,例如,可以设置特殊的更新间隔,或者设置特殊的历史存储选项,或趋势存储选项,创建默认禁用或启用。实际上有很多不同的操作方式,允许我们在多个场景中使用此功能。所以如果发现选项设置为否,则这个项不会被创建。

25- 其他小功能更新

好了,这就是一些主要的功能,在5.0中也引入了大量的小功能更新,这里我给大家快速的过一下。我们增加了新的宏,现在我们在告警通知中支持新的宏{HOST.ID},可以帮助我们构建URL,指向Zabbix的主机地址。还支持新的宏{EVENT.TAGSJSON},支持宏事件持续时间。我非常喜欢这个功能。举个例子,一个简单的例子,恢复主题中可以使用这个宏来显示事件持续时间。在我的示例中,我将收到一条消息,“设备宕机已解决,故障持续5分钟”。可以看到问题已经得到解决,那么我可以清楚地知道停机时间是什么时候,宕机持续了5分钟。


还有很多其他的改进,我将介绍其中的一些,javascript中支持base64编码处理。在某些场景下,这可能会很有用。还增加了一个新的API来访问审计日志,支持监控Zabbix组件的版本。支持SNMP缓存,这对于那些使用SNMP v3监控的人非常有好处。增加了监控指标key的长度,之前是255个字符,现在已经扩展到2048个字节。


此外,我们还删除了一些遗留问题。例如,不再支持IE浏览器,我认为这对我们所有人都有好处,特别是对Zabbix开发人员来说,因为他们不再需要支持IE11了。我们还放弃了对IBM DB2数据库的支持,因此不能再使用DB2作为Zabbix的后端数据库了。php现在支持的最低版本是7.2,所以如果你要从以前的Zabbix版本升级到Zabbix 5.0,请确保您的系统运行的是php版本7.2或更高版本。


升级依旧非常简单,只需安装新的服务器二进制文件、代理二进制文件和前端文件即可完成。但历史数据升级到Float64可能需要一些时间,不过这只是一个可选项。正如我在前面提到的,需要提前升级php到7.2版本,数据库无需做任何升级。同时Zabbix 5.0不再支持IBM DB2数据库,更多细节可以查看官方文档的版本发布说明。

最后- Zabbix 5.2简介

现在,我想给大家简单介绍一下Zabbix 5.2的新功能。Zabbix 5.2即将发布,我们计划于今年10月中旬正式发布Zabbix 5.2。不过具体时间要取决于实际的进展,正常来说的话,目前距离5.2的发布还有大约两三周的时间,因此我会做一个非常非常简短的概述,让大家知道一下版本5.2中会有什么样的功能。


首先我需要再次强调的是,产品路线图已经在Zabbix官网发布了,是的,你可以访问zabbix.com来获取相关信息,在路线图页面可以看到Zabbix 5.2、5.4和6.0的新功能的描述,其中,版本5.2的说明中包含相当详细的信息,因此你可以看到5.2中可能会实现哪些功能,用户很快就能用到哪些功能。


首先可以看到Zabbix 5.2支持智能问题异常检测,事实上,这是我们很久以前就已经开始做的功能。我们将这一新功能称为Zabbix Insight,它确实有助于Zabbix以一种智能的方式来比较当前情况。例如,对比上个月的情况,和一个月前的情况。是的,能够生成像平均交易数量这样的消息,比如,9月份交易增加了24%,这是一个非常强大的功能。


还有Zabbix UI和API将支持负载均衡,这非常非常好,特别是对于那些在Kubernetes或Docker Swarm环境中部署Zabbix的用户。数据、收集和触发器处理的清晰分离,我不确定能否在5.2中做实现,但它可能会出现在Zabbix 5.4版本中。这是为了更好的提高性能和横向可扩展性。开箱即可支持监控IoT设备,支持MQTT协议和Modbus协议。


更安全的监控,我们在Zabbix 5.0中已经投入了大量精力来提升Zabbix的安全性,5.2中我们将引入两个有趣的功能。一个是对Zabbix用户角色的升级,可以更精细地管理Zabbix用户对Zabbix UI、API等的访问权限。此外,Zabix5.2还将支持在外部数据库中存储一些保密信息,这也是为了解决安全性的问题。比如保密宏、用户密码、token、api key都会存储到外部安全的数据库中,而不再存储在Zabbix数据库中。我也非常喜欢这个功能。


另外将会有许多与可用性和用户体验相关的新功能。首先是在一些页面,比如监控问题,或者主机维护等页面添加筛选器,以便更好的筛选主机。另外就是会支持用户配置不同时区,这个功能对于一些跨国公司或企业会特别有用。模版的版本,我希望在新版中能实现这个功能,但说实在的,我目前还不能够确定。

对于所有的导入和导出操作,我们将从JSON和XML格式切换到YAML,并将其作为默认格式。所以,如果你想要共享模板,模版将被导出为YAML,而不是XML。因此,从Zabbix5.2开始,您可以更轻松地对其进行编辑。Zabbix5.2还有一些其他的改进,但我在这里就不作详细介绍了,因为Zabbix5.2目前还没有发布。

最后感谢大家的聆听,希望大家在2020Zabbix中国峰会度过难忘的时光,我们2021年见!

想听我分享什么主题,或有什么想知道的,欢迎留言,说不定我会回答你哦!

点击预报名2021Zabbix峰会

Zabbix峰会是一年一度的技术盛会,2021Zabbix中国峰会将在上海举办!传承几大固定精彩板块:演讲分享、Workshop实践操作课、圆桌晚宴和趣味活动。悄悄告诉你,现在报名肯定比早鸟票还优惠~



联系我们

电话:13817720274(微信同号)

邮箱:china@zabbix.com

网站:www.zabbix.com/cn  www.grandage.cn

一键关注

关注公众号

加入社区群


点击在看,把好文章分享给你的朋友(•̀ᴗ•́)و ̑̑

本文分享自微信公众号 - Zabbix开源社区(china_zabbix)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部