閱讀549 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Grafana+Prometheus係統監控之webhook

概述

Webhook是一個API概念,並且變得越來越流行。我們能用事件描述的事物越多,webhook的作用範圍也就越大。Webhook作為一個輕量的事件處理應用,正變得越來越有用。

準確的說webhoo是一種web回調或者http的push API,是向APP或者其他應用提供實時信息的一種方式。Webhook在數據產生時立即發送數據,也就是你能實時收到數據。這一種不同於典型的API,需要用了實時性需要足夠快的輪詢。這無論是對生產還是對消費者都是高效的,唯一的缺點是初始建立困難。

Webhook有時也被稱為反向API,因為他提供了API規則,你需要設計要使用的API。Webhook將向你的應用發起http請求,典型的是post請求,應用程序由請求驅動。

配置

前兩篇文章主要講的是郵件和釘釘的警報通知方式,但是通知方式單一,並且依賴於第三方服務無法做集群處理。為了更加靈活方便並且高可用的實現我們的預警通知功能,這裏我們自己實現Webhook功能。

前兩篇看這裏:
Grafana+Prometheus係統監控之郵件報警功能

Grafana+Prometheus係統監控之釘釘報警功能

Webhook實現看這裏:
我們使用最近比較流行的spring-boot來實現這個功能,部分代碼如下:

/**
     * JSON數據格式
     * body:{
     *       "imageUrl":"https://grafana.org/assets/img/blog/mixed_styles.png",
     *       "message":"Someone is testing the alert notification within grafana.",
     *       "ruleId":0,
     *       "ruleName":"Test notification",
     *       "ruleUrl":"https://grafana.52itstyle.com/",
     *       "state":"alerting",
     *       "title":"[Alerting] Test notification",
     *       "evalMatches":[
     *             {"value":100,"metric":"High value","tags":null},
     *             {"value":200,"metric":"Higher Value","tags":null}
     *          ]
     *  }
     */
    @RequestMapping("/send")
    public String webhook(@RequestBody String body) {
        //處理預警信息(郵件、短信、釘釘)
        logger.info("webhook警報係統,body:{}",body);
        return "success";
    }

源碼

碼雲地址:https://gitee.com/52itstyle/spring-boot-webhook

最後更新:2017-11-17 19:04:16

  上一篇:go  Consul+Prometheus係統監控之注冊發現
  下一篇:go  《設計模式》學習筆記1——七大麵向對象設計原則