美文网首页ElasticSearch/Lucene
如何向ElastAlert添加告警方式

如何向ElastAlert添加告警方式

作者: 囧雪啥都不知道 | 来源:发表于2019-01-22 16:56 被阅读1次

    截止v0.1.31版本,Elastalert本身提供了多达20中告警方式。

    然而由于业务需要,国内用户往往需要定制更多告警方式,如微信(聊天、群聊天、订阅号),短信,钉钉等新的告警途径,或者一些不能被elastalert直接满足的告警需求。

    我的需求是需要针对query_key的不同值来对不同用户进行告警,同时,需要通过邮件,短信等多种途径进行告警。而query_key的取值与用户的对应关系存放在我的业务系统中;而短信、邮件发送系统也是现成的。

    于是我选择添加一个告警方式,将告警文本和Query_key等信息存入Kafka,而我的业务系统去Kafka中消费告警,并执行发送操作。

    1. alerts.py

    告警类型都在此这里维护。我们仿照EmailAlerter,在其下方添加一个类 KafkaAlerter。

    class KafkaAlerter(Alerter):
        """ Sends alert into kafka """
        required_options = frozenset(['balabala...'])
     
        def __init__(self, *args):
              super(KafkaAlerter, self).__init__(*agrs)
            print('init')
     
        def alert(self, matches):
            print('alert')
     
        def create_default_title(self, matches):
            print('create title')
    
          def create_alert_body(self, matches):
            print('create alert body')
     
        def get_info(self):
            return {'type': 'kafka'}
    
    1. required_options: 这里表示KafkaAlerter需要在配置文件中读取的字段,这里设置为集群的IP cluster ips 和 要存储告警信息的topic topic name
    2. init:定义KafkaAlerter中需要的变量
    3. alert: 进行告警的主题方法,这里我生成包含告警信息的json串,并将其存入kafka
    4. create_default_title/create_alert_body:这里直接复用EmailAlerter的方法
    5. get_info: 返回alerter的关键信息,这里我返回了topic name

    2. config.py

    在 alert_mapping 中需要指明告警方式与执行类的对应关系:


    3. config.yaml

    添加kafka的配置项目,如cluster地址,待写入的topic name

    4. 测试

    新建一个告警执行文件,将其告警方式设置为 alert: ‘kafka’,启动elastalert执行此告警文件,即可看到效果。

    相关文章

      网友评论

        本文标题:如何向ElastAlert添加告警方式

        本文链接:https://www.haomeiwen.com/subject/sihrjqtx.html