如何向ElastAlert添加告警方式

截止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执行此告警文件,即可看到效果。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 13,147评论 0 13
  • 本文转载自http://dataunion.org/?p=9307 背景介绍Kafka简介Kafka是一种分布式的...
    Bottle丶Fish阅读 10,807评论 0 34
  • kafka的定义:是一个分布式消息系统,由LinkedIn使用Scala编写,用作LinkedIn的活动流(Act...
    时待吾阅读 10,745评论 1 15
  • 张海萍 焦点网络中级八期 山西晋中 坚持分享第290天 2018年12月9日 周日 “生命即关系。”、“关系大于...
    小海儿2阅读 3,736评论 0 0
  • “自己都快穷死了,对生活都失去希望了,啥也不敢想,这就是没钱的结果。经历过才知道是什么感受,没有找对象的,可一定要...
    hey_沙子阅读 1,462评论 1 2