上节回顾

对于许多 IT 和运维团队来说,Nagios 既是一个福音也是一个诅咒。一方面,Naigos 在 IT 应用的工作领域中,给予了你可以实时查看告警数据的可能性;但是另一方面,Nagios 也能够生成超级多的告警,对于任何一个运维人员或是运维团队来说都是 hold 不住的。

由于告警浪潮的原因,我们收件箱时常会爆满,移动电话也会被逼调成静音状态。更令人沮丧的是,这些告警只不过仅仅是噪音而已。

Nagios 所欠缺的就是一个智能的管理系统,可以在噪音背景中,帮助运维人员挑选出真正的有意义的告警。

当然,说起来容易做起来难。

在上一篇文章中,我们讨论了为什么 Naigos 起初会生成如此之多的告警,并且很少是需要实际执行的。

那么现在,让我们来讨论下该如何把告警智能化。

告警关联

唯一使监控和报警都步入正轨的好办法,就是通过告警关联。如果成百上千个告警都潜在的指向着同一个根本问题「当然情况也常常如此」,我们需要的就是一种能够瞬间查找到关联这些告警的方法,这才是真正的问题所在。

以下这个例子,可以很好的理解告警关联,并告诉你如何提升应用监控。

例如一个 MySOL 集群,这里面一些主机的页面上有着很高的错误率,而其余一些只是发出低内存的警告。此时你的 Nagios 图表盘在30分钟里,会接受到不止20个独特的告警,这其实看起来没有太大的意义。你的电子邮件收件箱看起来就像一个垃圾桶,并且当你离开办公室以后,你口袋里的移动电话还会嗡嗡的响。

我们可以用一个正确的方式和一个错误的方式来分别处理这些告警。错误的方式就是将所有这些告警都作为单一的独立信息,而不是把这些警告看做是一个完整事件的代表。这样当告警洪潮来临的时候,我们根本无法寻找到这个发起者。

而正确的方法则是,透过图表盘的数据来看这些报警关联的特征,整条告警潮流可能都会被组合在一起。所有这些集群的页面错误告警都将被聚合,指出真正的根源所在,并且会一直在我们的掌控中,即使被告警浪潮淹没也不怕。

除了没有关联性质的「比如在 MySQL 节点上的一个存储问题」事件,大部分的告警都可以被整合收集在一起。我们可以轻易的归类这些告警信息,并跟其他的类似事件划分开。这样在一个告警洪流中,被湮灭的将会是其他无意义的告警了。

告警关联是一个分组的方法,有着高度相关联的一系列告警信息,就会被分为一个高级事件。

告警过滤

还有其他方法可以对抗告警洪潮吗?有是有,但它们都很无用。

一个通常被用于企业的方法,就是告警过滤。监控工程师自己配置的图表盘,仅局限于少量的警报,指定为高安全性的警报。可预计的到,这样的图表盘将比一个完整的图表盘会大大的减少告警噪音。

但是,这里有三个关于告警过滤的问题不容忽视。首先,它在你的操作可视化上创造了一个盲点,这样会使问题癌变,因为通常情况下,低程度的告警是高程度告警的前提。例如,一个 CPU 负载事件可能很快就会演变成一个全面的故障。

通过忽视掉低程度的问题,你强迫自己进入一个只操作高程度告警的反应模式。此时你已经背离了告警监控的初衷了———接收告警的目的是在他们急剧上升之前就能够解决掉潜在的问题。然而,告警过滤经常是完全相反地,因为低程度的事件会被积极的开除的,等到潜在的威胁已经影响到了用户以后,风险报警才会对团队做出响应。

第二个问题是关于过滤本身的,过滤后图表盘上的信息会变更得非常的简单且难以捉摸。以上面 MySQL 为例,在你的高严重报表的仪表盘中,要了解到所有的页面故障率是不现实的。因此,当你消除掉低内存的告警后,你的肩上依然有可能背负着其余的有效告警。

最后也是最主要的问题,就是这种过滤的设定只能锁定已知的问题。如果一个新的高风险事件出现,将会被过滤器无情的回避忽视掉,从而无法被归类到既定的图表盘中去查看与处理。

告警关联的必然性及应对措施

相比之下,告警关联可以使你很好的抵抗告警洪潮,也不会丢失问题的可见性。企业如果适应了告警关联,信息告警的图表盘上确实能减少很多压力。

Onealert 中,我们开发了一个基于云端的分布式现代化告警关联性平台,并且我们还优化了与 Nagios 等一系列开源监控工具的集成。

Onealert 能够集成你的 Nagios 告警,它会用一个智能算法,来处理和关联这些告警。整个 Onealert 图表盘是一个基于云端的应用服务,代表着所有 Nagios 告警,可以有效地组合成高层次的事件。

使用 Onealert 的好处有
  • 高效精准: Onealert 的算法能够减少你99%的告警负荷,同时保持高精度性。
  • 自定义配置:Onealert 允许你为特定的告警事件配置自定义规则,避免遗漏。
  • 一站式关联:除了 Nagios,Onealert 在其他监控工具中也可以完美的结合,比如 Zabbix,监控宝,阿里云等。

然而你也不必要完全相信我的话,咱们可以尝试着自己安装下 Onealert,学习更简单的生活,使你的工作也在无穷无尽的告警中变得更有意义。

如何把关联性的告警智能添加到 Nagios 上?(2)的更多相关文章

  1. Cloud Alert 实现告警智能降噪,成功规避告警风暴

    # 前言 睿象云前段时间发表了一篇[< Zabbix 实现电话.邮件.微信告警通知的实践分享>](https://www.toutiao.com/i6734876723126469127/ ...

  2. 将项目添加到服务上时报web modules的错误

    将项目添加到服务上时报web modules的错误如下图: 这是tomcat的版本和web modules的版本不支持造成的,如果在如下地方修改不了: 这时候就要在项目的根目录修改如下图: 用工具打开 ...

  3. Git创建本地仓库&把pycharm项目添加GitHub仓库上

    一.创建本地仓库 1.1.下载Git地址:https://git-scm.com/downloads 下载完,一路next就可以 1.2.打开Git Bash输入: #创建一个learngit目录 $ ...

  4. PHPCMS_V9 模型字段添加单文件上传功能

    后台有“多文件上传”功能,但是对于有些情况,我们只需要上传一个文件,而使用多文件上传功能上传一个文件,而调用时调用一个文件URL太麻烦了. 使用说明: 1.打开phpcms\modules\conte ...

  5. 给view添加类似系统上拉快捷菜单的手势

    iOS7以后从屏幕最下方上划会滑出快捷菜单,感觉这个效果不错,就想做个类似的效果,这个东西技术含量不高,每次都写一遍的话就太浪费时间了,所以就把它写成了一个分类,用起来会方便一点. demo地址:ht ...

  6. C# 对sharepoint 列表的一些基本操作,包括添加/删除/查询/上传文件给sharepoint list添加数据

    转载:http://www.cnblogs.com/kivenhou/archive/2013/02/22/2921954.html 操作List前请设置SPWeb的allowUnsafeUpdate ...

  7. asp.net 动态添加多附件上传.

    最近有人问起动态多文件上传,想要做到类似于邮箱添加附件的效果,这个功能其实比较简单,就是往form中添加file元素.在用户选择完文件后,再添加一个file控件,由于file控件过多,视觉上不好看,所 ...

  8. 智能指针剖析(上)std::auto_ptr与boost::scoped_ptr

    1. 引入 C++语言中的动态内存分配没有自动回收机制,动态开辟的空间需要用户自己来维护,在出函数作用域或者程序正常退出前必须释放掉. 即程序员每次 new 出来的内存都要手动 delete,否则会造 ...

  9. C++智能指针剖析(上)std::auto_ptr与boost::scoped_ptr

    1. 引入 C++语言中的动态内存分配没有自动回收机制,动态开辟的空间需要用户自己来维护,在出函数作用域或者程序正常退出前必须释放掉. 即程序员每次 new 出来的内存都要手动 delete,否则会造 ...

随机推荐

  1. 转:通过API获取和创建 Oracle GL Account Code Combination ID’s (CCID’s)的几种方法汇总

    1] FND_FLEX_EXT.GET_COMBINATION_ID: This API Finds combination_id for given set of key flexfield seg ...

  2. Java并发——使用Condition线程间通信

    线程间通信 线程之间除了同步互斥,还要考虑通信.在Java5之前我们的通信方式为:wait 和 notify.Condition的优势是支持多路等待,即可以定义多个Condition,每个condit ...

  3. 了解JavaScript的执行上下文

    转自http://www.cnblogs.com/yanhaijing/p/3685310.html 什么是执行上下文? 当JavaScript代码运行,执行环境非常重要,有下面几种不同的情况: 全局 ...

  4. mysql相关重要问题解决

    root密码修改 MySQL 的管理员密码: sudo mysqladmin -u root password newpassword: mysql无法安装:删除/etc/mysql,   /var/ ...

  5. Multiple methods named 'status' found with mismatched result, parameter type or attributes

    出现这个这个错误, 有可能是由于你直接通过一个数组的索引获取一个对象(或模型)然后直接调用这个对象(或模型)的某个方法 例如: NSString *status = [self.models[inde ...

  6. OpenCV(4)-图像掩码操作(卷积)--平滑处理

    卷积定义 矩阵的掩码操作即对图像进行卷积.对图像卷积操作的意义为:邻近像素对(包括该像素自身)对新像素的影响:影响大小取决于卷积核对应位置值得大小. 例如:图像增强可以使用 \[ I(i,j)=5*I ...

  7. c#根据文件大小显示文件复制进度条实例

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  8. 记录一次mount问题

    linux  centos 6.5 _64 oracle 11.2g 今天接到一个客户电话说重启了服务器,数据库没有重启来,看了数据库的报错 没有找到control文件的路径,数据库启动到了 unmo ...

  9. ubuntu14.04+opencv 3.0+python2.7安装及测试

    本文记录了ubuntu下使用源码手动安装opencv的过程.步骤来自opencv官网 此外记录了在python中安装及载入opencv的方法. 1.安装opencv所需的库(编译器.必须库.可选库) ...

  10. bootstrap Tooltip换行问题

    bootstrap自身带有tooltip,使用起来很方便,但是美中不足,它的tooltip并不支持换行. 比如我们通过<textarea>输入框传入到数据库的长文本,文本是带有换行符的,但 ...