base.py 文件源码

python
阅读 19 收藏 0 点赞 0 评论 0

项目:gelyung 作者: denglj 项目源码 文件源码
def judge_and_alert(instance):

    def _get_query_datas():
        # ??????????ES????
        alert_items = get_alert_items()
        _query_constructor = partial(
            get_alert_type_strategy_and_query_body, hostname=instance)
        return map(_query_constructor, alert_items)

    querys = _get_query_datas()
    strategys = {q['alertname']: q['strategy'] for q in querys}

    # alertname?key???es??????value
    workdic = {q['alertname']: send_es_query(q['query_body']) for q in querys}
    # ?????????ES????
    waiter = gen.WaitIterator(**workdic)
    while not waiter.done():
        try:
            es_ret = yield waiter.next()
        except Exception as e:
            logging.error(e, exc_info=True)
        else:
            alertname = waiter.current_index
            # ?????es????
            alert_content = yield judge_result_and_make_alert_msg(alertname,
                                                  strategys[alertname],
                                                  json.loads(es_ret))
            # ???????????
            if alert_content.get('body'):
                receive_group = strategys[alertname]['contact_group']
                alert_level = strategys[alertname]['level']
                alerting = Alert(receive_group, alert_level, alert_content)
                # ???????
                yield alerting.send()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号