91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何設計elasticsearch的自定義業務告警

發布時間:2021-06-26 14:06:06 來源:億速云 閱讀:399 作者:chen 欄目:大數據

這篇文章主要介紹“如何設計elasticsearch的自定義業務告警”,在日常操作中,相信很多人在如何設計elasticsearch的自定義業務告警問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何設計elasticsearch的自定義業務告警”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

A系統與B系統之間有很多接口交互,但是有一段時間接口經常報錯,作為開發如果不能第一時間知道問題且及時解決的話就會收到業務投訴,當月績效涼涼。

如果你也有這種場景,那么你就需要一個及時告警的功能。

實現方案

實現及時告警分以下兩種場景:

  • 有ELK日志收集

  • 沒有ELK日志收集

沒有ELK日志收集的方案

很簡單,搭建一個日志收集環境(O(∩_∩)O哈哈~)需要在業務代碼中嵌入硬編碼,每次catch到異常直接發送告警信息告警平臺進行告警

有ELK日志收集的方案

最核心的是 elasticsearch組件,所有的告警方案前提條件都是告警日志需要進ES,然后定時從ES中檢索出符合業務規定的告警日志(比如ERROR日志),如果檢索出來的告警日志滿足一定條件就觸發告警通知。

實現方式主要有以下幾種:

  • ES WATCHER 這個是elasticsearch的官方插件,它可以根據數據的變化提供警報和通知,目前是收費的,具體操作配置可以參看官方地址

  • elastalert 是Yelp公司基于python寫的告警框架,大家可以去GitHub上查看具體使用方法。elastalert

  • 自定義開發

自定義開發實現

主要由以下幾個步驟實現:

  1. 分離出單獨的告警日志,與業務日志分離

  2. 在logstash中解析日志,構建格式化的告警日志,需要有以下幾個關鍵參數: 日志級別、日志時間、日志描述、開發模塊、關聯主鍵、請求參數、響應參數

  3. 定時任務每隔一段時間去ES中檢索符合要求的日志,如果檢索到就發送告警通知。

核心代碼

  1. 日志格式化 我們直接在客戶端構建好格式化的日志,以json的形式輸出到日志文件中,這樣在logstash解析的時候直接使用json解析即可。 這一步不是必須的,可以自由構建日志格式,然后在logstash解析的時候使用grok語法進行解析。

public class AlarmLog {
    /**日志級別*/
    private String logLevel;
    /**日志描述*/
    private String message;
    /**關聯主鍵 一般使用requestId*/
    private String refCode;
    /**請求參數*/
    private String parm;
    /**響應數據*/
    private String response;
    /**開發模塊,根據此參數配置模塊負責人*/
    private String module;
    /**日志時間*/
    private long logTime;
	...
}
  1. 關鍵查詢 在單獨的定時器項目中使用如下查詢語法就可以檢索出具體的告警日志。檢索出來就可以根據日志中的模塊字段找出具體的模塊負責人,然后發送告警通知給負責人。

public List<LogDoc> findRangeLogByLevel(DateTime minRange, DateTime maxRange, String logLevel) {
	//需要強制轉換成小寫
	logLevel = logLevel.toLowerCase();
	SearchQuery searchQuery = new NativeSearchQueryBuilder()
			.withQuery(boolQuery()
					//module 必須有值才能告警
					.must(existsQuery("module"))
					.must(termQuery("logLevel", logLevel))
					.must(rangeQuery("logTime")
							.from(minRange.getMillis())
							.to(maxRange.getMillis())))
			.build();

	return elasticsearchTemplate.queryForList(searchQuery, LogDoc.class);
}

到此,關于“如何設計elasticsearch的自定義業務告警”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高陵县| 永寿县| 无极县| 乐昌市| 辽宁省| 乌兰察布市| 灵武市| 长子县| 闽清县| 香港| 寻乌县| 荥经县| 丁青县| 临桂县| 陆丰市| 临沭县| 恩平市| 长白| 新竹县| 玛多县| 股票| 黑龙江省| 浦江县| 黔西| 鄂州市| 米林县| 丰县| 吉木萨尔县| 光山县| 辉南县| 得荣县| 新平| 营山县| 灵璧县| 嘉义县| 岳普湖县| 原平市| 泸州市| 湟中县| 大安市| 石城县|