Giter Site home page Giter Site logo

hmonitor's Introduction

HMonitor

简介

HMonitor是一个用于从Zabbix处接收告警后,进行告警管理、告警自动化处理等功能的一个工具平台。目前提供的功能包括:

  1. 查看告警事件。使用者可以在“事件查看”标签下查看自己订阅的告警以及所有告警,并且了解有哪些告警需要自己处理
  2. 告警通知的订阅管理。在“订阅管理”标签下使用者可以订阅告警,对告警进行屏蔽,并查看一段时间内的告警情况
  3. 告警的自动修复。在“自动修复”标签下使用者可以查看目前提供的自动修复脚本,并且可以将告警事件和对应的修复脚本绑定,绑定后后续的告警会首先由修复脚本尝试修复,修复失败后才会告警。同时在该标签页下可以查看修复的成功率以及修复失败的原因。

系统架构

image

安装

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

HMonitor/AutoFixer属于无状态服务,如果集群中告警或需要自动处理的主机较多,可以启动多个HMonitor/AutoFixer并将他们放在如nginx之类的LB后面。

使用

订阅管理

点击订阅告警,即可查看所有可以被订阅的告警。如果对某个告警赶兴趣则可以在操作栏下点击订阅告警,如果不想再次接收这个告警则可以点击取消订阅

image

订阅告警后,可以在我的订阅下面查看自己订阅的告警。不同级别的告警被不同颜色标记。

image

如果某端时间某个主机在做类似扩容的操作,期间会触发很多IO wait的告警,则可以在这段时间内屏蔽这些告警。屏蔽告警可以在告警屏蔽中进行。

image

另外,可以在告警统计下查看最近一段时间的告警发送情况。

image

事件查看

在订阅了告警后,就可以看到自己订阅的告警产生的事件了。这个在我的事件中可以查看。

image

如果想查看所有事件,可以在所有事件中查看。

image

告警自动化处理(告警自动修复)

在HMonitor中,可以预先上传一些自动修复的脚本(这个下面会专门讲到)。上传后可以在修复脚本中查看这些脚本。

image

告警项需要和修复脚本关联后,相应的告警才能被脚本自动处理。关联操作可以在绑定关系中进行。

image

可以在修复统计中查看修复情况。

image

告警自动化处理

所有的告警自动化处理的脚本都是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会捕获这个异常,知道自动修复失败了,然后告警会发给相应的告警接收人,由接收人进行处理。异常信息中建议写明原因,之后可以在”修复统计“页面看到失败的原因。

hmonitor's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

hmonitor's Issues

Important

请问你的登录用户名,密码是多少?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.