一種優(yōu)雅記錄POD操作日志的方法

背景

在用戶對POD內(nèi)存增長比較敏感的時(shí)候怜俐,記錄下來用戶登錄POD后執(zhí)行的所有操作效床,對POD內(nèi)存增長原因分析會有一定幫助

那么如何記錄用戶在POD里的操作呢睹酌?

實(shí)施

直接打log日志

由于提供了web頁面給用戶登錄POD,web是通過WebSocket方式登錄POD的剩檀,因此可以直接在WebSocket的onMessage方法中收到啥就打印啥

@OnMessage
    public void onMessage(String msg, Session session) {
        log.info(msg, session);
}

這種方式是最直接憋沿、最容易想到的,但是缺點(diǎn)也很明顯沪猴,收到一個字符打印一個字符辐啄,顯得有點(diǎn)臃腫

其次是針對一次特殊功能鍵采章,如Tab等提示不好處理,完整的操作命令只能一點(diǎn)點(diǎn)拼湊起來壶辜,而且只能拼湊出個大概悯舟,可能會長這樣

image.png

參考HISTORY

這種實(shí)現(xiàn)方式主要基于history命令來完成,具體是在POD登錄的時(shí)候設(shè)置如下的一次性環(huán)境變量

export HISTFILESIZE=1
export HISTSIZE=1
export HISTORY_FILE=/data/bash/bash.log
export PROMPT_COMMAND=$'{ H=`history 1 |awk \'{$1=""; print $0}\'`;W=`whoami`;CONTAINER=$POD_NAME;IP=$POD_IP;echo -e $(date "+%Y-%m-%d %H:%M:%S") notice bash[]: user: $W  container: $CONTAINER podip: $IP execs: "\'"$H"\'";} >> $HISTORY_FILE'

設(shè)置方式也很簡單士复,通過k8s客戶端API登錄POD時(shí)图谷,是可以指定commands數(shù)組的翩活,我們可以如下指定

return new String[]{"/bin/bash", "-c", HISTORY_BASH_FORMAT + fileName + ";"+HISTORY_BASH_CMD+";"+"/bin/bash"}

設(shè)置環(huán)境變量后阱洪,最后執(zhí)行一個bash命令,來控制偽終端即可

這種實(shí)現(xiàn)方式會將操作時(shí)間菠镇、容器名稱冗荸、等信息記錄到/data/bash/bash.log文件中,POD只需要掛在這個/data目錄即可完成持久化了利耍,這樣用戶的操作記錄都能記錄在宿主機(jī)上的文件里了


image.png

這種方式看著還行蚌本,比較直觀的記錄了用戶的操作記錄

但是會有一個很明顯的問題,就是設(shè)置了HISTSIZE和HISTFILESIZE之后隘梨,會限制history的歷史記錄大小程癌,shell里面的上下快捷鍵就被限制了,使用起來還是不太方便

而且經(jīng)過測試轴猎,針對一些內(nèi)存limit比較小的POD來說嵌莉,這種記錄方式會引起POD內(nèi)存的較快增長,同時(shí)可能引起CPU的抑制


設(shè)置了上述環(huán)境變量的
沒有設(shè)置上述環(huán)境變量的

通過反復(fù)對比設(shè)置了上述環(huán)境變量與否的內(nèi)存增長圖捻脖,發(fā)現(xiàn)設(shè)置了上述環(huán)境變量的POD在登錄后內(nèi)存增長更快锐峭,而且更容易引起CPU的抑制

原生HISTORY

如果不記錄新的文件,直接使用原生history命令支持的立即刷文件和自定義文件呢可婶?

這時(shí)候只需要換幾個環(huán)境變量即可

export HISTTIMEFORMAT='%F %T '
export HISTFILE=/data/bash/bash.log
export PROMPT_COMMAND='history -a'

這樣設(shè)置就完全使用的是history的一些環(huán)境變量了沿癞,再觀察看看登錄POD后的內(nèi)存增長


image.png

此時(shí)的內(nèi)存增長明顯變緩,多次實(shí)驗(yàn)結(jié)果均如此

看來這個才是正確打開方式

其它問題

為什么登錄POD后會引起POD內(nèi)存增長呢矛渴?

起初懷疑是通過WebSocket方式登錄的問題椎扬,后來直接通過kubectl登錄POD也會引起一樣的內(nèi)存增長,因?yàn)榈卿浐笫裁床僮鞫紱]做具温,甚至沒有查看文件蚕涤,也會引起內(nèi)存增長

可能和設(shè)置的內(nèi)存limit較小有關(guān),并且這部分內(nèi)存是沒法回收的桂躏,登錄多次后POM會直接OOM重啟钻趋,背后原因尚未明確

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市剂习,隨后出現(xiàn)的幾起案子蛮位,更是在濱河造成了極大的恐慌较沪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件失仁,死亡現(xiàn)場離奇詭異尸曼,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)萄焦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門控轿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拂封,你說我怎么就攤上這事茬射。” “怎么了冒签?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵在抛,是天一觀的道長。 經(jīng)常有香客問我萧恕,道長刚梭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任票唆,我火速辦了婚禮朴读,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘走趋。我一直安慰自己衅金,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布吆视。 她就那樣靜靜地躺著典挑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪啦吧。 梳的紋絲不亂的頭發(fā)上您觉,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機(jī)與錄音授滓,去河邊找鬼琳水。 笑死,一個胖子當(dāng)著我的面吹牛般堆,可吹牛的內(nèi)容都是我干的在孝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼淮摔,長吁一口氣:“原來是場噩夢啊……” “哼私沮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起和橙,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤仔燕,失蹤者是張志新(化名)和其女友劉穎造垛,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晰搀,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡五辽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了外恕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杆逗。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鳞疲,靈堂內(nèi)的尸體忽然破棺而出罪郊,到底是詐尸還是另有隱情,我是刑警寧澤建丧,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布排龄,位于F島的核電站,受9級特大地震影響翎朱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尺铣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一拴曲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凛忿,春花似錦澈灼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至床牧,卻和暖如春荣回,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背戈咳。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工心软, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人著蛙。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓删铃,卻偏偏與公主長得像,于是被迫代替她去往敵國和親踏堡。 傳聞我的和親對象是個殘疾皇子猎唁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

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