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":"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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM