這篇文章主要介紹“如何設(shè)計(jì)elasticsearch的自定義業(yè)務(wù)告警”,在日常操作中,相信很多人在如何設(shè)計(jì)elasticsearch的自定義業(yè)務(wù)告警問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何設(shè)計(jì)elasticsearch的自定義業(yè)務(wù)告警”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
成都創(chuàng)新互聯(lián)公司2013年至今,先為故城等服務(wù)建站,故城等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為故城企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
A系統(tǒng)與B系統(tǒng)之間有很多接口交互,但是有一段時(shí)間接口經(jīng)常報(bào)錯(cuò),作為開發(fā)如果不能第一時(shí)間知道問題且及時(shí)解決的話就會(huì)收到業(yè)務(wù)投訴,當(dāng)月績(jī)效涼涼。
如果你也有這種場(chǎng)景,那么你就需要一個(gè)及時(shí)告警的功能。
實(shí)現(xiàn)及時(shí)告警分以下兩種場(chǎng)景:
有ELK日志收集
沒有ELK日志收集
很簡(jiǎn)單,搭建一個(gè)日志收集環(huán)境(O(∩_∩)O哈哈~)需要在業(yè)務(wù)代碼中嵌入硬編碼,每次catch到異常直接發(fā)送告警信息告警平臺(tái)進(jìn)行告警
最核心的是 elasticsearch組件,所有的告警方案前提條件都是告警日志需要進(jìn)ES,然后定時(shí)從ES中檢索出符合業(yè)務(wù)規(guī)定的告警日志(比如ERROR日志),如果檢索出來的告警日志滿足一定條件就觸發(fā)告警通知。
實(shí)現(xiàn)方式主要有以下幾種:
ES WATCHER 這個(gè)是elasticsearch的官方插件,它可以根據(jù)數(shù)據(jù)的變化提供警報(bào)和通知,目前是收費(fèi)的,具體操作配置可以參看官方地址
elastalert 是Yelp公司基于python寫的告警框架,大家可以去GitHub上查看具體使用方法。elastalert
自定義開發(fā)
主要由以下幾個(gè)步驟實(shí)現(xiàn):
分離出單獨(dú)的告警日志,與業(yè)務(wù)日志分離
在logstash中解析日志,構(gòu)建格式化的告警日志,需要有以下幾個(gè)關(guān)鍵參數(shù): 日志級(jí)別、日志時(shí)間、日志描述、開發(fā)模塊、關(guān)聯(lián)主鍵、請(qǐng)求參數(shù)、響應(yīng)參數(shù)
定時(shí)任務(wù)每隔一段時(shí)間去ES中檢索符合要求的日志,如果檢索到就發(fā)送告警通知。
日志格式化 我們直接在客戶端構(gòu)建好格式化的日志,以json的形式輸出到日志文件中,這樣在logstash解析的時(shí)候直接使用json解析即可。 這一步不是必須的,可以自由構(gòu)建日志格式,然后在logstash解析的時(shí)候使用grok語法進(jìn)行解析。
public class AlarmLog { /**日志級(jí)別*/ private String logLevel; /**日志描述*/ private String message; /**關(guān)聯(lián)主鍵 一般使用requestId*/ private String refCode; /**請(qǐng)求參數(shù)*/ private String parm; /**響應(yīng)數(shù)據(jù)*/ private String response; /**開發(fā)模塊,根據(jù)此參數(shù)配置模塊負(fù)責(zé)人*/ private String module; /**日志時(shí)間*/ private long logTime; ... }
關(guān)鍵查詢 在單獨(dú)的定時(shí)器項(xiàng)目中使用如下查詢語法就可以檢索出具體的告警日志。檢索出來就可以根據(jù)日志中的模塊字段找出具體的模塊負(fù)責(zé)人,然后發(fā)送告警通知給負(fù)責(zé)人。
public List<LogDoc> findRangeLogByLevel(DateTime minRange, DateTime maxRange, String logLevel) { //需要強(qiáng)制轉(zhuǎn)換成小寫 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); }
到此,關(guān)于“如何設(shè)計(jì)elasticsearch的自定義業(yè)務(wù)告警”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
名稱欄目:如何設(shè)計(jì)elasticsearch的自定義業(yè)務(wù)告警
網(wǎng)址分享:http://www.rwnh.cn/article44/ghcjhe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、用戶體驗(yàn)、手機(jī)網(wǎng)站建設(shè)、服務(wù)器托管、網(wǎng)站建設(shè)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)