1. 程式人生 > >Grafana+Prometheus系統監控之webhook

Grafana+Prometheus系統監控之webhook

tps pan {} 高效 mixed eval eid 建立 eth

概述

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":"http://grafana.org/assets/img/blog/mixed_styles.png",
* "message":"Someone is testing the alert notification within grafana.", * "ruleId":0, * "ruleName":"Test notification", * "ruleUrl":"http://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

Grafana+Prometheus系統監控之webhook