資訊系統每日產生海量的記錄,主機數量也不少,如果沒有良好的集中管理機制,想要從中找到線索,無異於海底撈針。
在很多年以前,我就為此困擾不已。因此需要搭配好的工具加以輔助,方可協助我們儘快的從龐大記錄群裡快速指向線索,找到問題的原因。
方案介紹
在開源軟體的領域裡,也有著非常優秀而且好用的軟體,同時使用起來的習慣也並不輸給許多商業軟體,對於有大量資料需要分析收容的情況,將是良好的解決方案。
Graylog 做為一套事件記錄管理與分析系統,它能夠提供以下的功能:
- 全 Web 化操作介面
- 收集多種格式與主機記錄
- 支援叢集運作機制
- 資料內容即時剖析
- 自訂欄位解析方式
- 自訂資訊看板內容
- 警報發送機制
利用上述這些功能互相搭配,可以讓純文字記錄檔的內容活化起來,成為容易在快速眼球觀看即可看趨勢或問題所在。
安裝方式
由於 Graylog 整合了許多開源套件,因此安裝的程序稍微多了一些,本處以 Ubuntu 18.04 為例。
環境準備
sudo apt-get update && sudo apt-get upgrade sudo apt-get install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen
安裝 MongoDB
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list sudo apt-get update sudo apt-get install -y mongodb-org sudo systemctl daemon-reload sudo systemctl enable mongod.service sudo systemctl restart mongod.service
安裝 Elasticsearch
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/oss-6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list sudo apt-get update && sudo apt-get install elasticsearch-oss sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service sudo systemctl restart elasticsearch.service
安裝 Graylog
wget https://packages.graylog2.org/repo/packages/graylog-3.1-repository_latest.deb sudo dpkg -i graylog-3.1-repository_latest.deb sudo apt-get update && sudo apt-get install graylog-server echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1 sudo systemctl daemon-reload sudo systemctl enable graylog-server.service sudo systemctl start graylog-server.service
至此已經完成基本安裝,您可以開啟瀏覽器進入 http://ip:9000 ,預設帳密均為 admin。
主要功能
登入之後,預設會停留在 Search 功能裡,若已有收取過的資料就會呈現在下方。
搜尋功能畫面
在所有收進來的記錄裡,會依據所能識別的內容或是自訂過的剖析方式,把欄位拆出來放在左邊供挑選。以下圖為例,您可以展開 [EventID] 並點選 [Quick values],即可在右方視窗中出現快速統計與分佈,而且右邊的數據還可以點選它帶入做為篩選條件,可以大幅簡短輸入查詢字串的時間。
Quick values 功能
預設的記錄清單只會顯示 Timestamp 與 Source 欄位,為了查閱與比對方便,可以自己加入需要的欄位。
從左方勾選想要觀看的欄位 (1),右邊即會出現 (2);而該筆記錄的詳細資訊,可以在點選該列後展開以表格顯示 (3)。
欄位與詳細資料
經過這些操作,能夠大大的減少使用上的繁瑣步驟,簡單點點滑鼠就可以看到所需要的資訊。那麼如果我看到了有用的關鍵字,想要把他做為篩選的條件內容又該怎麼處理呢?
同樣也可以動動手點選就完成這個操作,以剛剛的資訊為例,我想要把 EventID 為 4634 這個值帶入篩選,請點選該列資料後方的放大鏡按鈕。
將欄位數值帶入篩選字串
上一個步驟會把該欄位的值以搜尋字串格式代入為 EventID:4636 (1),接著再點選前方的放大鏡按鈕 (2),下方的資料就已經以最新的篩選內容呈現。
以篩選字串進行搜尋
若想要以日期區間進行篩選,有兩種方式,一種是直接在時間軸上選取範圍,它會把選取的範圍帶入搜尋欄位,同樣再按下放大鏡按鈕即可。
以時間軸選取時間範圍
第二種方式是選取搜尋列上方的時間條件欄位,下拉後有許多選項可以使用。在下拉清單的前方按鈕,另外可以選擇以相對時間、絕對時間或關鍵字方式進行選擇。
快速選取時間範圍
小結
經過上述的操作流程,我們已經可以利用 Graylog 進行各種基本操作以及結合多種條件篩選出我們想要的資料,而且操作真的不難又相當快速。
不過好像少了一件事,我們還沒有談到怎麼把其它系統的 Log 記錄餵給 Graylog 來處理?沒關係,這就是我們下一篇要談的主題,明日再戰。
參考資料
- Graylog
https://www.graylog.org/
- Graylog 3.1.0 documentation
https://docs.graylog.org/en/3.1/index.html