2019年9月30日 星期一

開源記錄集中管理系統:Graylog (一)



資訊系統每日產生海量的記錄,主機數量也不少,如果沒有良好的集中管理機制,想要從中找到線索,無異於海底撈針。

在很多年以前,我就為此困擾不已。因此需要搭配好的工具加以輔助,方可協助我們儘快的從龐大記錄群裡快速指向線索,找到問題的原因。




方案介紹

在開源軟體的領域裡,也有著非常優秀而且好用的軟體,同時使用起來的習慣也並不輸給許多商業軟體,對於有大量資料需要分析收容的情況,將是良好的解決方案。

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 來處理?沒關係,這就是我們下一篇要談的主題,明日再戰。





參考資料