日志數(shù)據(jù)的重要性(轉(zhuǎn)自知乎:日志易)

想分析日志價(jià)值廉嚼,你需要了解系統(tǒng)日志數(shù)據(jù)的重要性

與一個(gè)簡(jiǎn)單的算法不同药磺,一個(gè)合格的系統(tǒng)不僅僅要求具有運(yùn)行的高效和計(jì)算的準(zhǔn)確,同時(shí)又必須兼顧穩(wěn)定性舟舒、可靠性拉庶。其次,對(duì)于開發(fā)人員來說秃励,又必須具有可拓展性和可維護(hù)性氏仗。各方面都必須很完善,這樣的一個(gè)系統(tǒng)才能稱得上是一個(gè)合格完美的系統(tǒng)夺鲜。簡(jiǎn)單的站在開發(fā)人員的角度分析皆尔,比較重視的是系統(tǒng)的可維護(hù)性,畢竟開發(fā)人員直面的是系統(tǒng)的代碼實(shí)現(xiàn)币励。

一個(gè)代碼結(jié)構(gòu)冗雜慷蠕、模塊設(shè)計(jì)混亂、命名“異想天開”的系統(tǒng)對(duì)于開發(fā)者來說簡(jiǎn)直到了咬牙切齒的地步食呻!不能忍流炕!堅(jiān)決不能忍!所以在平時(shí)的開發(fā)過程中就要時(shí)刻注意著系統(tǒng)的實(shí)現(xiàn)機(jī)制仅胞,從宏觀設(shè)計(jì)和微觀實(shí)現(xiàn)上面同時(shí)進(jìn)行精雕細(xì)琢浪感。前幾天看到阿里巴巴出的《Java 開發(fā)規(guī)范》,建議大家看看饼问。

說到可維護(hù)性影兽,不得不涉及到系統(tǒng)監(jiān)控和Bug的快速定位。

在開發(fā)階段還比較容易對(duì)系統(tǒng)進(jìn)行監(jiān)控莱革,一般都會(huì)在本機(jī)上對(duì)系統(tǒng)的運(yùn)行進(jìn)行實(shí)時(shí)監(jiān)控峻堰。而對(duì)于bug的定位讹开,開發(fā)者都會(huì)熟練使用debug功能進(jìn)行bug定位,更有甚者通過多年的開發(fā)經(jīng)驗(yàn)根據(jù)系統(tǒng)的異常信息直接能分析出來Bug產(chǎn)生的原因捐名、位置以及解決方案旦万。但是,系統(tǒng)畢竟是人開發(fā)的镶蹋,我們無法預(yù)料到在運(yùn)行中會(huì)出行什么想不到的問題成艘,即使在各種測(cè)試中沒有出現(xiàn),但是也無法保證不會(huì)出現(xiàn)一些意想不到的問題贺归。那么在系統(tǒng)運(yùn)行期間如果產(chǎn)生問題出現(xiàn)異常且無法在測(cè)試環(huán)境中重現(xiàn)淆两,我們又該如何快速、準(zhǔn)確地對(duì)bug進(jìn)行定位分析和解決 呢拂酣?

舉個(gè)親身的例子吧:公司一套設(shè)備監(jiān)控系統(tǒng)秋冰,用來對(duì)上萬個(gè)節(jié)點(diǎn)進(jìn)行實(shí)時(shí)監(jiān)控,如果該節(jié)點(diǎn)有異常(比如溫度過高婶熬、電壓過高等)則向系統(tǒng)進(jìn)行發(fā)出告警信息剑勾。在開發(fā)環(huán)境中只有五十多個(gè)設(shè)備被安全(不會(huì)產(chǎn)生什么告警)的放在機(jī)房中供開發(fā)和測(cè)試使用,這種測(cè)試環(huán)境根本無法模擬實(shí)際環(huán)境赵颅。系統(tǒng)在測(cè)試中沒有出現(xiàn)過什么大的問題虽另。然而,在實(shí)際的運(yùn)行環(huán)境中饺谬,偶爾發(fā)現(xiàn)系統(tǒng)的一個(gè)模塊功能會(huì)喪失洲赵,失去告警接收的功能。在本地測(cè)試的時(shí)候從來沒有發(fā)現(xiàn)過類似問題商蕴,但是部署在實(shí)際環(huán)境中就會(huì)有發(fā)生。我們不可能實(shí)時(shí)的24小時(shí)對(duì)系統(tǒng)進(jìn)行人工監(jiān)控芝发,那么該如何定位功能喪失的原因呢绪商?這時(shí),對(duì)于系統(tǒng)日志來說就“是時(shí)候表演真正的技術(shù)了”(PS:肯定是個(gè)王者級(jí)別選手)辅鲸。

后來通過系統(tǒng)日志分析之后格郁,發(fā)現(xiàn)功能的喪失是由于大量的告警同時(shí)上報(bào),導(dǎo)致數(shù)據(jù)庫鏈接不夠用独悴,產(chǎn)生大量connectionTimeout進(jìn)而導(dǎo)致OOM異常,這個(gè)模塊徹底死了例书。可見刻炒,日志對(duì)于運(yùn)行環(huán)境中系統(tǒng)的監(jiān)控和問題定位是至關(guān)重要的决采,在系統(tǒng)設(shè)計(jì)、開發(fā)和實(shí)現(xiàn)的過程中必須時(shí)刻注意著log的輸出坟奥,這將會(huì)對(duì)于日后的系統(tǒng)監(jiān)控和異常分析起至關(guān)重要的作用树瞭!

那么拇厢,在系統(tǒng)日志實(shí)現(xiàn)上應(yīng)該注意哪些問題呢?如何做到不濫用日志晒喷、減少大量無用信息孝偎,讓日志記錄足夠精簡(jiǎn)明了?

第一:系統(tǒng)的哪些運(yùn)行信息凉敲,需要進(jìn)行日志記錄衣盾?

1、功能模塊的啟動(dòng)和結(jié)束(完整的系統(tǒng)由多個(gè)功能模塊組成爷抓,每個(gè)模塊負(fù)責(zé)不同的功能势决,因此需要對(duì)模塊的啟動(dòng)和結(jié)束進(jìn)行監(jiān)控。是否在需要的時(shí)機(jī)正常加載該模塊废赞?又是否在退出結(jié)束的時(shí)候正常完成結(jié)束操作徽龟,正常退出?)

2唉地、用戶的登錄和退出(哪位用戶在什么時(shí)間通過什么IP登錄或退出了系統(tǒng))

3据悔、系統(tǒng)的關(guān)鍵性操作(數(shù)據(jù)庫鏈接信息、網(wǎng)絡(luò)通信的成功與失敗等)

4耘沼、系統(tǒng)運(yùn)行期間的異常信息(NPE极颓、OOM以及其他的超時(shí)、轉(zhuǎn)換異常等)

5群嗤、關(guān)鍵性方法的進(jìn)入和退出(一些重要業(yè)務(wù)處理的方法菠隆,在進(jìn)入和結(jié)束的時(shí)候需要有日志信息進(jìn)行輸出)

……

……

第二:什么樣的日志格式,有助于開發(fā)者進(jìn)行明確的分析狂秘?

日志信息要求必須精簡(jiǎn)骇径,過多的無用信息不但對(duì)系統(tǒng)分析起不到什么作用,反而會(huì)增加系統(tǒng)的運(yùn)行壓力者春、消耗系統(tǒng)的運(yùn)行資源破衔。這里有個(gè)日志模板,可供參考钱烟。

時(shí)間-[線程名][日志等級(jí)]-日志輸出位置(全類名晰筛,可以精確到方法名):日志信息

2013-09-04 10:49:20.296-[Thread-initRedis21504][INFO]-com.shanghai.LoginController.initLogInfo:LingMing[User] is logining

日志信息的內(nèi)容可以根據(jù)不同的情況進(jìn)行設(shè)計(jì),但是前面的時(shí)間到日志輸出位置必須要保證完整性拴袭,這樣才有利于日志的分析读第。

第三:如何對(duì)不同的日志信息進(jìn)行等級(jí)劃分?

日志等級(jí)通常分為四種:DEBUG拥刻、INFO怜瞒、WARN、ERROR

DEBUG:系統(tǒng)調(diào)試信息般哼,通常用于開發(fā)過程中對(duì)系統(tǒng)運(yùn)行情況的監(jiān)控盼砍,在實(shí)際運(yùn)行環(huán)境中不進(jìn)行輸出尘吗。

INFO:系統(tǒng)運(yùn)行的關(guān)鍵性信息,通常用于對(duì)系統(tǒng)運(yùn)行情況的監(jiān)控浇坐。

WARN:告警信息睬捶,系統(tǒng)存在潛在的問題,有可能引起運(yùn)行異常近刘,但此時(shí)并未產(chǎn)生異常擒贸。

ERROR:系統(tǒng)錯(cuò)誤信息,需要進(jìn)行及時(shí)處理和優(yōu)化觉渴。

這里列出來了各種等級(jí)的日志信息介劫,在開發(fā)過程中哪些信息需要設(shè)置為哪種等級(jí)有賴于開發(fā)者的自己判斷,這里只是給個(gè)建議案淋。

日志的管理是系統(tǒng)很重要的一部分座韵,千萬不可忽略其重要性。完整的日志將會(huì)在系統(tǒng)維護(hù)中起著異常重要的作用踢京,就好像磨刀不誤砍柴工一樣誉碴。日志易 作為國內(nèi)實(shí)時(shí)的日志分析產(chǎn)品,支持本地化部署瓣距,可對(duì)系統(tǒng)進(jìn)行分析黔帕,靈活、強(qiáng)大蹈丸、便捷成黄。選擇專業(yè)的日志分析產(chǎn)品日志易,對(duì)系統(tǒng)分析起來就能達(dá)到事半功倍的效果逻杖。

開發(fā)者必須要明白日志的價(jià)值和意義奋岁,萬萬不可忽略和輕視,并且在系統(tǒng)設(shè)計(jì)之初就建議制定一份關(guān)于日志管理的說明規(guī)范荸百,明確哪些方法闻伶、操作必須進(jìn)行日志輸出,在進(jìn)行開發(fā)過程中也要嚴(yán)格遵守管搪。

至于日志輸出的實(shí)現(xiàn),不同的開發(fā)語言有不同的日志管理框架铡买,同一種語言也有很多不同的日志管理方案更鲁,這里就不再進(jìn)行贅述。本文目的就是想讓開發(fā)者看到日志的重要性奇钞。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末澡为,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子景埃,更是在濱河造成了極大的恐慌媒至,老刑警劉巖顶别,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異拒啰,居然都是意外死亡驯绎,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門谋旦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剩失,“玉大人,你說我怎么就攤上這事册着∷┕拢” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵甲捏,是天一觀的道長(zhǎng)演熟。 經(jīng)常有香客問我,道長(zhǎng)司顿,這世上最難降的妖魔是什么芒粹? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮免猾,結(jié)果婚禮上是辕,老公的妹妹穿的比我還像新娘。我一直安慰自己猎提,他們只是感情好获三,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锨苏,像睡著了一般疙教。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伞租,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天贞谓,我揣著相機(jī)與錄音,去河邊找鬼葵诈。 笑死裸弦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的作喘。 我是一名探鬼主播理疙,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼泞坦!你這毒婦竟也來了窖贤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赃梧,沒想到半個(gè)月后滤蝠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡授嘀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年物咳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粤攒。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡所森,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出夯接,到底是詐尸還是另有隱情焕济,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布盔几,位于F島的核電站晴弃,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏逊拍。R本人自食惡果不足惜结借,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一中鼠、第九天 我趴在偏房一處隱蔽的房頂上張望盈电。 院中可真熱鬧叫编,春花似錦、人聲如沸缨恒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽骗露。三九已至岭佳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間萧锉,已是汗流浹背珊随。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柿隙,地道東北人叶洞。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像禀崖,于是被迫代替她去往敵國和親衩辟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容