報(bào)警平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)

報(bào)警平臺(tái)

整個(gè)平臺(tái)依賴(lài)于es進(jìn)行日志存儲(chǔ),客戶(hù)端通過(guò)文件保存日志,并推送到es中。服務(wù)器端從es拉取日志進(jìn)行解析并報(bào)警。

1.業(yè)務(wù)報(bào)警日志格式的設(shè)計(jì)

一個(gè)優(yōu)雅的日志格式設(shè)計(jì),能夠有效的改善內(nèi)存使用,硬盤(pán)存儲(chǔ),網(wǎng)絡(luò)資源占用等問(wèn)題。這里通過(guò)借鑒別人的一些經(jīng)驗(yàn)高性能的智能日志,來(lái)設(shè)計(jì)一個(gè)合適的日志格式。

字段名稱(chēng) 數(shù)據(jù)類(lèi)型 字段說(shuō)明 備注
uuid long 日志唯一id 非空
time timestamp 時(shí)間戳 非空
level int 日志級(jí)別 1 info,2 warn,3 error
ip long 所在機(jī)器ip 非空
group int 日志所屬組 非空
app int 項(xiàng)目名稱(chēng) 1 項(xiàng)目a ,2 項(xiàng)目b
msg String 日志標(biāo)題 非空
detail String 完整信息 非空

2.報(bào)警日志SDK

sdk必須要滿(mǎn)足的幾點(diǎn):
1.異步保存日志(降低引入sdk對(duì)系統(tǒng)帶來(lái)的影響)

sdk內(nèi)維護(hù)一個(gè)存儲(chǔ)報(bào)警日志的list。每次有報(bào)警日志時(shí),只用添加到list中就行。

2.定時(shí)寫(xiě)入日志文件(通過(guò)隊(duì)列的形式,定時(shí)寫(xiě)入本地文件,降低對(duì)文件的頻繁寫(xiě)入,當(dāng)然可以根據(jù)日志的級(jí)別來(lái)確定).初版需要先寫(xiě)入本地文件,后期需要加上直接寫(xiě)入es或者kibana等的方式,這樣,不用落盤(pán)直接將數(shù)據(jù)送出去。
3.定義日志文件需要的一些基礎(chǔ)信息:項(xiàng)目枚舉,level枚舉
4.針對(duì)不同項(xiàng)目提供不同的方法接口

3.上報(bào)報(bào)警日志

在docker環(huán)境下,可以通過(guò)阿里開(kāi)源的log-pilot來(lái)進(jìn)行日志上報(bào)。如果沒(méi)有在docker環(huán)境下,可以通過(guò)logstash將文件上報(bào)到es中。上報(bào)這里,針對(duì)不同的并發(fā)情況進(jìn)行調(diào)優(yōu),等實(shí)戰(zhàn)的時(shí)候再更優(yōu)化的細(xì)節(jié)。

4.報(bào)警日志的分析與報(bào)警

其實(shí)有了報(bào)警日志之后,最重要的是,如何優(yōu)雅把這條報(bào)警信息及時(shí)的推送給對(duì)的人。以及在通知過(guò)之后,該條報(bào)警信息時(shí)候已經(jīng)被處理,被誰(shuí)處理了。所以這里,大概梳理了幾個(gè)功能點(diǎn):
1.定時(shí)從es拉取報(bào)警信息

    通過(guò)定時(shí)任務(wù)來(lái)實(shí)現(xiàn)的拉取報(bào)警信息,開(kāi)始我想的是定義一個(gè)時(shí)間差,每隔幾秒去讀取es某個(gè)時(shí)間段的數(shù)據(jù),要保證所有時(shí)間段都是相接的。
但是這樣有個(gè)問(wèn)題就是,es在存儲(chǔ)數(shù)據(jù)的時(shí)候是有一定的延遲的,數(shù)據(jù)創(chuàng)建完成到完全存儲(chǔ)肯定是要在數(shù)據(jù)創(chuàng)建之后的時(shí)間發(fā)生的。這個(gè)時(shí)間
差由中間的網(wǎng)絡(luò)傳輸以及磁盤(pán)消耗導(dǎo)致的。所以這時(shí)按時(shí)間段去拉數(shù)據(jù),會(huì)因?yàn)檠舆t的問(wèn)題,導(dǎo)致數(shù)據(jù)丟失。
    所以,我們采用了確認(rèn)更新的策略,通過(guò)對(duì)所有已讀的數(shù)據(jù)進(jìn)行標(biāo)記,來(lái)確認(rèn)我們消費(fèi)過(guò)的數(shù)據(jù)不會(huì)被重復(fù)消費(fèi),同樣每次也只獲取到未消費(fèi)的數(shù)據(jù)。

2.根據(jù)報(bào)警信息,推送(釘釘,微信,郵件)給指定用戶(hù)組內(nèi)的所有用戶(hù)。用戶(hù)確認(rèn)接收?qǐng)?bào)警信息。
3.統(tǒng)計(jì)分析時(shí)間段的報(bào)警信息。

5.系統(tǒng)監(jiān)控的報(bào)警日志

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,068評(píng)論 25 709
  • 頂霜披雪傲嚴(yán)寒, 冰天雪地展笑顏。 蟄伏三季只等閑, 百花敗殘獨(dú)代言。
    蜀山袖手人閱讀 333評(píng)論 1 9
  • 終于難得有時(shí)間靜一靜,安撫一下自己這顆跳動(dòng)的心,雖然按照慣例每年都會(huì)寫(xiě)一寫(xiě)年度總結(jié),但回憶往年,貌似總也得不...
    GabrielMorningS閱讀 429評(píng)論 0 0
  • 經(jīng)常聽(tīng)到很多微商團(tuán)隊(duì)領(lǐng)袖說(shuō)團(tuán)隊(duì)不好管,說(shuō)了不聽(tīng),聽(tīng)了不做,做了沒(méi)效果......團(tuán)隊(duì)沒(méi)士氣,留不住人才等等。大智集...
    博弈聊賺錢(qián)閱讀 427評(píng)論 0 0

友情鏈接更多精彩內(nèi)容