第一卷【入職培訓(xùn)】--第十二章 監(jiān)控日志

林北覺得自己上輩子一定是個(gè)運(yùn)維工程師。

不是那種朝九晚五準(zhǔn)時(shí)下班的運(yùn)維,而是那種凌晨三點(diǎn)被電話叫起來、對著滿屏報(bào)錯(cuò)信息面無表情說"我看看"的那種。

因?yàn)樗F(xiàn)在干的事,本質(zhì)上就是運(yùn)維。

上周直接對蘇晚晚的異能做熱修復(fù),結(jié)果觸發(fā)了防御性冰凍,整個(gè)辦公室變成了冰窟——那體驗(yàn)大概等同于生產(chǎn)環(huán)境直接改代碼,然后服務(wù)器當(dāng)場給你表演一個(gè)宕機(jī)。

痛定思痛,林北決定換個(gè)思路。

既然不能直接動手術(shù),那就先做監(jiān)控。任何一個(gè)合格的工程師都知道,在修bug之前,你得先能穩(wěn)定復(fù)現(xiàn)這個(gè)bug。而復(fù)現(xiàn)的前提是——你得知道它在什么條件下觸發(fā)。

所以林北給蘇晚晚布置了一個(gè)任務(wù):記日志。

"就跟寫log一樣,"林北當(dāng)時(shí)這么跟她解釋,"每次你感覺到異能有波動——不管大小——都記下來。時(shí)間、地點(diǎn)、當(dāng)時(shí)在干什么、情緒狀態(tài)、冰凍程度。"

蘇晚晚當(dāng)時(shí)看他的眼神就像在看一個(gè)讓她用System.out.println來調(diào)試分布式系統(tǒng)的初級程序員。

"你要我……寫日記?"

"不是日記,是監(jiān)控日志。"林北糾正,"有本質(zhì)區(qū)別。日記是感性的、隨意的、想到什么寫什么。監(jiān)控日志是結(jié)構(gòu)化的、可檢索的、有明確字段定義的。"

蘇晚晚沉默了三秒。

"所以你要我寫日記。"

"……差不多吧。"

林北以為她會拒絕。畢竟讓一個(gè)戴了三年情緒抑制手環(huán)、把自己活成一座冰山的人去主動記錄情緒,這事兒的難度大概等同于讓一個(gè)從來不寫注釋的程序員突然開始寫文檔——理論上可行,實(shí)踐中基本不可能。

但蘇晚晚只是點(diǎn)了點(diǎn)頭,說了句"格式你定還是我定"。

林北愣了一下:"你定吧。"

現(xiàn)在,一周過去了。

林北坐在自己工位上,打開蘇晚晚發(fā)來的文檔。文件名叫"ice_anomaly_monitor_log_v1.2.md"——她甚至做了版本管理。

林北深吸一口氣,開始閱讀。

然后他就沒繃住。

日志第一條,周一,上午10:17。

// Date: 03-16 10:17

// Location:工位

// Trigger:產(chǎn)品經(jīng)理第四次改需求

// Emotion: irritation (level: 3/10)

// Ice Output:鼠標(biāo)墊邊緣結(jié)霜,約2mm

// Duration: ~30s

// Note:可控范圍內(nèi)。已用紙巾擦掉。

//產(chǎn)品經(jīng)理沒注意到。他從來不注意任何東西。

林北看著最后那句評論,嘴角抽了一下。這哪是監(jiān)控日志,這是帶情緒的代碼注釋。

但說實(shí)話,他在很多開源項(xiàng)目的源碼里見過比這更離譜的注釋。什么"http://我不知道這段為什么能跑,但它能跑,別動它"之類的。程序員的注釋本來就是靈魂的窗口。

繼續(xù)往下看。

周一,下午14:02。

// Date: 03-16 14:02

// Location:會議室B

// Trigger:周會上我匯報(bào)方案時(shí),主管在看手機(jī)

// Emotion:未定義(不確定是憤怒還是別的什么)

// Ice Output:椅子扶手結(jié)冰,會議桌下方溫度驟降

// Duration: ~2min

// Note:裝作若無其事地把手放到桌下把冰捂化了。

//手很冷。

//但反正一直很冷,沒人發(fā)現(xiàn)。

林北讀到"沒人發(fā)現(xiàn)"三個(gè)字的時(shí)候,停了一下。

他用筆在旁邊的本子上記了個(gè)標(biāo)簽:**被忽視**。

周二,上午09:30。

// Date: 03-17 09:30

// Location:茶水間

// Trigger:同事說"蘇晚晚這人就是冷,你別在意"

//(他們以為我沒聽到)

// Emotion: anger? sadness?無法準(zhǔn)確分類,建議擴(kuò)展enum

// Ice Output:手里的杯子外壁結(jié)霜,水溫從85°C降至約4°C

// Duration: ~1min

// Note:把水倒了,重新接了一杯。

// ??????enum Emotion { HAPPY, SAD, ANGRY, FEAR, DISGUST,

// ??????SURPRISE, ???,被人當(dāng)面說你冷但你其實(shí)不想冷

//的那種感覺 }

// ??????// TODO:找一個(gè)合適的命名

林北盯著那個(gè)TODO看了很久。

他又在本子上記了一個(gè)標(biāo)簽:**被誤解**。

然后他翻了翻之前的筆記,把這兩個(gè)標(biāo)簽都畫了個(gè)圈。

周三,全天。

// Date: 03-18

// Location:工位

// Trigger:無

// Emotion: baseline

// Ice Output:無

// Duration: N/A

// Note:今天沒人跟我說話。

//也沒有任何異常。

//系統(tǒng)運(yùn)行平穩(wěn)。

//一切正常。

這條日志很短,很干凈,沒有任何技術(shù)問題。

但林北讀出了一種很熟悉的東西——就像那種服務(wù)器監(jiān)控面板上,所有指標(biāo)都是綠色的,CPU使用率低得離譜,網(wǎng)絡(luò)流量幾乎為零??雌饋硪磺姓?。

但其實(shí)那臺服務(wù)器根本沒有人在用。

周四,下午15:45。

// Date: 03-19 15:45

// Location:工位

// Trigger:隔壁組的人過生日,大家一起唱歌切蛋糕

// Emotion: neutral(標(biāo)記為neutral)

// Ice Output:鍵盤F5-F8區(qū)域輕微結(jié)霜

// Duration: ~45s

// Note:他們沒有叫我。

//不是故意的,應(yīng)該是忘了。

//反正我也不喜歡吃蛋糕。

//【以上判斷可能存在邏輯漏洞,但暫不修復(fù)】

林北把筆放下了。

他突然意識到蘇晚晚做了一件很程序員的事——她把一個(gè)明明是"sad"的情緒標(biāo)記成了"neutral"。

就像代碼里把異常catch住,然后什么都不做就吞掉了一樣。

編譯器不會報(bào)錯(cuò)。程序還能跑。但問題一直在那里。

林北在本子上畫了一張簡單的表格,開始做數(shù)據(jù)分析。

七天,總共十四條日志。他把每條日志的觸發(fā)事件做了分類,給情緒打了標(biāo)簽,把冰凍輸出做了量化。然后他畫了一張散點(diǎn)圖——橫軸是情緒類型,縱軸是冰凍強(qiáng)度。

結(jié)果非常清晰。

"煩躁"觸發(fā)的冰凍,平均強(qiáng)度2.1,持續(xù)時(shí)間短,范圍小,基本就是桌面結(jié)個(gè)霜的程度。

"緊張"觸發(fā)的冰凍,平均強(qiáng)度2.8,集中在手部,可控。

但"被忽視"觸發(fā)的冰凍,平均強(qiáng)度5.7。"被誤解"觸發(fā)的冰凍,平均強(qiáng)度6.3。

不僅強(qiáng)度高,而且持續(xù)時(shí)間長,范圍大,有兩次甚至出現(xiàn)了不可控的擴(kuò)散——就是冰從接觸點(diǎn)開始向外蔓延,需要主動抑制才能停下來。

如果把蘇晚晚的異能系統(tǒng)看成一個(gè)程序,那"煩躁"和"緊張"就是普通的warning——系統(tǒng)記一條日志就過去了。但"被忽視"和"被誤解"是critical級別的告警,直接觸發(fā)異常處理流程,而且她的異常處理機(jī)制明顯有缺陷,處理不了就會崩潰。

更有意思的是周三那條。那天她什么情緒波動都沒有,但"沒人說話"本身就是一個(gè)信號。一臺服務(wù)器流量歸零不代表它健康,可能只是沒人在意它還在不在線。

林北合上筆記本,靠在椅背上,看著天花板。

他想起上次在蘇晚晚的異能里看到的那些冰層結(jié)構(gòu)——外面冷硬光滑,但越往里越復(fù)雜、越脆弱、越不規(guī)則,像是凍住了很多東西。

現(xiàn)在他大概知道凍住了什么了。

第二天中午,林北端著兩杯咖啡走到蘇晚晚的工位旁邊。

蘇晚晚正在寫代碼,屏幕上滿是密密麻麻的邏輯。她抬頭看了林北一眼,目光在那兩杯咖啡上停留了半秒。

"日志我看完了。"林北把其中一杯放在她桌上。

蘇晚晚的手指在鍵盤上頓了一下,然后繼續(xù)敲代碼:"分析結(jié)果呢?"

"你的異能不是對所有情緒都敏感。"林北在她旁邊的空椅子上坐下來,"憤怒、焦慮、煩躁這些,你的控制力其實(shí)不錯(cuò),抑制手環(huán)加上你自己的意志力,基本能壓住。"

蘇晚晚沒說話,但她停止了敲代碼。

"真正的觸發(fā)點(diǎn)有兩個(gè)。"林北伸出兩根手指,"一個(gè)是被忽視,一個(gè)是被誤解。這兩個(gè)情緒出現(xiàn)的時(shí)候,你的冰凍輸出會直接跳到平時(shí)的兩到三倍,而且你的主動抑制效率會下降大概百分之六十。"

蘇晚晚轉(zhuǎn)過頭看他,表情還是那副標(biāo)準(zhǔn)的冷淡,但林北注意到她握鼠標(biāo)的手收緊了一點(diǎn)。

"所以呢?"

"所以我需要追問一個(gè)問題。"林北說,"你知道的,做根因分析不能只看表層。這兩個(gè)觸發(fā)點(diǎn)不是隨機(jī)的,它們一定有一個(gè)共同的底層原因。"

蘇晚晚沒有接話。

辦公室的中央空調(diào)嗡嗡響著,有人在遠(yuǎn)處笑,有人在打電話。陽光從落地窗照進(jìn)來,照在蘇晚晚的側(cè)臉上。林北注意到她桌上那杯咖啡的杯壁上正在凝結(jié)細(xì)小的水珠——不是結(jié)霜,只是正常的冷凝。

但溫度確實(shí)在降。

"你不用現(xiàn)在回答。"林北說,語氣放松了一些,"這個(gè)不是必填項(xiàng),不影響后續(xù)流程。我只是……想讓你知道,我看到了。"

蘇晚晚偏過頭,不看他。

沉默持續(xù)了大概十秒鐘。

然后她說:"你的日志分析做得還行。但你的散點(diǎn)圖應(yīng)該用箱線圖,散點(diǎn)圖看不出分布的集中趨勢。"

林北愣了一下,然后笑了:"你怎么知道我畫的是散點(diǎn)圖?"

"你這種人一定畫散點(diǎn)圖。"蘇晚晚面無表情地說,"初級數(shù)據(jù)分析師都畫散點(diǎn)圖。"

"我那叫直覺可視化。"

"那叫偷懶。"

林北發(fā)現(xiàn)她在轉(zhuǎn)移話題,但他沒有戳破。有些防御機(jī)制不該被強(qiáng)行突破——這個(gè)教訓(xùn)他上周已經(jīng)學(xué)過了,代價(jià)是一間被凍成冰窟的辦公室。

他拿起自己的咖啡喝了一口,然后說:"行,下周我改用箱線圖。但是日志你得繼續(xù)記。"

"繼續(xù)?"

"對。你現(xiàn)在的采樣密度不夠,一天一到兩條太少了。而且你的情緒分類太粗糙,需要細(xì)化。"他想了想,"你把那個(gè)enum擴(kuò)展一下吧。"

蘇晚晚看了他一眼。

"你看了那條。"她的語氣不是疑問,是陳述。

"我全都看了。"林北說,"包括周三那條。"

又是一陣沉默。

"周三那條沒有任何異常數(shù)據(jù)。"蘇晚晚說。

"嗯。"林北點(diǎn)頭,"但是一個(gè)監(jiān)控系統(tǒng)最可怕的不是報(bào)警太多,而是該報(bào)警的時(shí)候不報(bào)警。你把一個(gè)該標(biāo)sad的情緒標(biāo)成了neutral,把該記錄的東西跳過了。"

蘇晚晚的表情終于有了一絲裂痕——很小很小的,就像冰面上一道幾乎看不見的細(xì)紋。

"那你建議我怎么標(biāo)?"她問。

"誠實(shí)地標(biāo)。"林北說,"監(jiān)控系統(tǒng)的第一原則就是誠實(shí)。數(shù)據(jù)造假了,后面所有的分析都是白搭。你騙得了編譯器,騙不了運(yùn)行時(shí)。"

蘇晚晚低下頭,看著桌上那杯咖啡??Х冗€是熱的,杯壁上的水珠正在緩緩滑落。

"……我試試。"她說。

林北站起來,拍了拍褲子上不存在的灰。"行。那我下周同一時(shí)間來收日志。對了——"

他走了兩步,又轉(zhuǎn)回來。

"你那個(gè)enum,最后那個(gè)TODO,'被人當(dāng)面說你冷但你其實(shí)不想冷的那種感覺'——"

蘇晚晚猛地抬頭。

"那個(gè)情緒的名字叫'委屈'。"林北說,"命名參考,僅供參考,你可以自己改。"

他沒等蘇晚晚回答,擺擺手走了。

身后安靜了很長一段時(shí)間。

然后他聽到一聲很輕很輕的、鍵盤敲擊的聲音。

像是有人在給一個(gè)TODO寫上了答案。

回到自己工位上,林北沒有立刻開始工作。

他打開自己的筆記本,在"蘇晚晚-異能分析"那頁的最下面寫了一段話:

*核心觸發(fā)條件確認(rèn):被忽視、被誤解。兩者指向同一個(gè)底層需求——"被看見"。不是被注意,不是被關(guān)注,是被真正地、作為一個(gè)完整的人地"看見"。*

*推測:抑制手環(huán)戴了三年,情緒長期被壓制,導(dǎo)致她在外界看來始終是"冷"的。但這個(gè)"冷"是果不是因。因是——在她開始壓制情緒之前,一定發(fā)生過什么,讓她覺得"被看見"是一件危險(xiǎn)的、或者不可能的事情。*

*所以她選擇了不被看見。*

*冰是最好的偽裝。沒人會覺得冰山需要擁抱。*

林北把筆記本合上,盯著蘇晚晚的工位方向看了一會兒。

隔著半個(gè)辦公區(qū),他能看到她的后腦勺——頭發(fā)扎成利落的馬尾,肩膀端得很直,坐姿完美得像一段經(jīng)過優(yōu)化的代碼。

但他現(xiàn)在知道了。

那不是優(yōu)化,是防御。

就像一臺服務(wù)器把所有端口都關(guān)掉、防火墻規(guī)則拉滿、只允許最基本的通信——看起來固若金湯,安全得無懈可擊。

但那不叫安全。

那叫孤島。

林北拿起咖啡又喝了一口,發(fā)現(xiàn)已經(jīng)涼了。

他看了看杯子,又看了看蘇晚晚的方向,自言自語地嘟囔了一句。

"下周的箱線圖,我做漂亮點(diǎn)。"

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

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

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