×

扫描二维码登录本站

标签: 暂无标签
HMonitor简介
HMonitor是一个用于从Zabbix处接收告警后,进行告警管理、告警自动化处理等功能的一个工具平台。目前提供的功能包括:
  • 查看告警事件。使用者可以在“事件查看”标签下查看自己订阅的告警以及所有告警,并且了解有哪些告警需要自己处理
  • 告警通知的订阅管理。在“订阅管理”标签下使用者可以订阅告警,对告警进行屏蔽,并查看一段时间内的告警情况
  • 告警的自动修复。在“自动修复”标签下使用者可以查看目前提供的自动修复脚本,并且可以将告警事件和对应的修复脚本绑定,绑定后后续的告警会首先由修复脚本尝试修复,修复失败后才会告警。同时在该标签页下可以查看修复的成功率以及修复失败的原因。

系统架构
安装
  • 在Zabbix处配置script类型的媒体类型,脚本设置为HMonitor源码目录下的scripts/zabbix_hm.py
  • 配置trigger,trigger名需要以HM-打头
  • 配置相应的接收告警用户,用户的send to配置为HMonitor的地址
  • 在某台主机安装MySQL
  • 执行HMonitor源码目录下的db.sql建立对应的表
  • 执行hmonitor.py即可运行HMonitor/AutoFixer
  • 执行hmonitor_agent.py即可运行HMonitor Agent
  • 执行scripts/zabbix_hm_trigger_sync.py可以同步zabbix的trigger

HMonitor/AutoFixer属于无状态服务,如果集群中告警或需要自动处理的主机较多,可以启动多个HMonitor/AutoFixer并将他们放在如nginx之类的LB后面。
使用订阅管理
点击订阅告警,即可查看所有可以被订阅的告警。如果对某个告警赶兴趣则可以在操作栏下点击订阅告警,如果不想再次接收这个告警则可以点击取消订阅
订阅告警后,可以在我的订阅下面查看自己订阅的告警。不同级别的告警被不同颜色标记。
如果某端时间某个主机在做类似扩容的操作,期间会触发很多IO wait的告警,则可以在这段时间内屏蔽这些告警。屏蔽告警可以在告警屏蔽中进行。
另外,可以在告警统计下查看最近一段时间的告警发送情况。
事件查看
在订阅了告警后,就可以看到自己订阅的告警产生的事件了。这个在我的事件中可以查看。
如果想查看所有事件,可以在所有事件中查看。
告警自动化处理(告警自动修复)
在HMonitor中,可以预先上传一些自动修复的脚本(这个下面会专门讲到)。上传后可以在修复脚本中查看这些脚本。
告警项需要和修复脚本关联后,相应的告警才能被脚本自动处理。关联操作可以在绑定关系中进行。
可以在修复统计中查看修复情况。
告警自动化处理
所有的告警自动化处理的脚本都是Python格式的,在HMonitor启动的时候,会的去hmonitor/autofix/scripts中加载所有的.py文件,文件名既是自动修复脚本名。下面是一个样例文件。
# -*- coding: utf-8 -*-
from hmonitor.autofix.scripts import AutoFixBase

class JustShowEventInfo(AutoFixBase):

    def do_fix(self, trigger_name, hostname, executor, event, *args, **kwargs):
        raise Exception("ERROR TEST")

    def get_author(self):
        return "Qin TianHuan"

    def get_version(self):
        return "1"

    def get_description(self):
        return u"测试用脚本"

    def get_create_date(self):
        return "2015-06-30 09:00:00"
        
大部分method的含义根据其名称就能明白。真正会被调用执行自动修复的method为do_fix。其参数说明如下:
  • trigger_name:告警项名称
  • hostname:发生告警的主机名
  • executor:一个HMonitor允许的可以执行远程调用的对象。下面会说到
  • event:告警的其它信息,一般不会用到

当修复脚本被调用的时候,do_fix就会的被调用,一般只需要trigger_name和hostname就能明白什么主机上出了什么问题,因此这是两个最常会被用到的参数。
由于大部分操作都需要去故障主机执行一些命令,因此HMonitor提供了executor,目前的executor只是SSH。比如我想在远端主机执行一个过滤文件的操作,则代码可以如下:
     ret, result = executor.execute("ls -l | grep 'helloworld'")
        

注意,executor执行的命令是发生在产生告警的主机上的。
由于远程执行命令存在较多的安全隐患,所以根据实际情况可以选择不同的executor类型。如果要实现一个新的executor类型,则可以仿造hmonitor/utils/executor/ssh.py进行开发。实现基类的方法即可。实际使用的时候,配置文件中的”executor_driver“改成新实现的executor类型即可。无需改动其它已有代码。
对于自动修复脚本,如果一切执行顺利,则do_fix直接返回即可。如果修复过程中出现了意外,比如do_fix当前的逻辑无法修复某个问题,则直接抛出异常即可。比如上面的样例程序,其do_fix直接抛出了异常,因此HMonitor会捕获这个异常,知道自动修复失败了,然后告警会发给相应的告警接收人,由接收人进行处理。异常信息中建议写明原因,之后可以在”修复统计“页面看到失败的原因。
下载$ git clone QthCN/hmonitor


原创: DevOpsDevOps

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x




上一篇:关于zabbix安装、部署和配置的详解(Server端)
下一篇:关于Zabbix的使用,可调用API
monicazhang

写了 2297 篇文章,拥有财富 12859,被 21 人关注

您需要登录后才可以回帖 登录 | 立即注册
B Color Link Quote Code Smilies

成为第一个吐槽的人

Powered by ITIL  © 2001-2025
返回顶部