概述】:多人共同使用的伺服器許可權確實不好管理,誤操作等造成故障,無法追究,最好的辦法就是將使用者操作即時記錄到日誌,並推送到遠程Log Service器上。包括使用者登陸時間,目錄,操作命令及時間戳記等)。以便事後追查。 -----這段網上抄的 - -
方案:就是將這些操作記錄到本地檔案,然後在通過fluentd收集到遠程Log Service器上,實現偽即時。跟上文一樣,可以直接存到Elasticsearch,然後使用kibana直接展示方便。
為了方便二次開發,這次將日誌存到了mongodb,當然也可以存到mysql(本文不討論這個哈)
--------------------
1,先實現記錄修改到本地檔案
(1)修改/etc/profile
export PROMPT_COMMAND='{ date "+%Y-%m-%d %T $(ifconfig | grep eth -A 1 | grep "192.168" | grep -oP "(?<=addr:)[\d\.]+") $(who am i |awk "{print \$1\" \"\$2\" \"\$3\" \"\$4\" \"\$5}") [`pwd`] $(history 1 | { read x cmd; echo "$cmd"; })"; } >> /var/log/audit.log'
(2)執行source /etc/profile
記錄到本地格式的檔案內容如下:
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/140209/2332553Y5-0.jpg" title="11111.jpg" alt="wKioL1L1xV-wzzrsAAPB0K7Kzew928.jpg" />
內容格式:記錄時間 本地IP 使用者 終端 登入時間 來源 所在目錄 執行命令
注意:其他使用者必須對audit.log有寫入許可權
2,收集到mongodb
fluentd用戶端配置如下:
<source> type tail format /^(?<time>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}) (?<src>[^ ]*) (?<user>[^ ]*) (?<zhongduan>[^ ]*) (?<logintime>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}) \((?<dst>[^ ]*)\) \[(?<pwd>[^\]]*)\] (?<cmd>.*)?$/ path /var/log/audit.log pos_file /var/log/td-agent/audit.pos tag mongo.fluent.audit</source>
fluentd伺服器端和上篇文章類似
記錄到mongodb中的內容如下:
650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/140209/2332551528-1.jpg" title="12312.jpg" alt="wKioL1L1yHvwTHnbAAMBlanhep8299.jpg" />
到此結束。。。。
本文出自 “TNT、營運之路” 部落格,請務必保留此出處http://tntdba.blog.51cto.com/1199791/1357259