這篇文章會示範如何安裝並使用 Filebeat 傳送 Nginx Access Log 到 Elasticsearch 中,並使用 Kibana 即時監看相關資料。
目前蒐集資料到 Elasticsearch 的方法有兩種
為什麼 log 很重要?
解決的痛點:
Beats 可以安裝在 server 上協助傳送資訊到 Elasticsearch 或 Logstash,除了這次要用到的 Filebeat 以外還有一堆很厲害的 beat 系列工具,例如 Metricbeat 收集 system loading 還有 Packetbeat 可以收集網路封包。
主要步驟有以下三個
建立服務
安裝 filebeat 打 log 資料到 Elasticsearch
從 Kibana 的介面中監看成果
如果是 Windows 官方的 Quick Start 不用試了,因為 system module 跑不起來,所以我們要先停用:
./filebeat modules disable system
接下來就挑選 Nginx 的範例來嘗試,首先當然要下載 nginx,下載解壓縮後到目錄直接 start nginx
然後瀏覽器瀏覽 localhost
先來產生一下 access.log,我的 Log 位置會在 C:\nginx-1.18.0\logs
。
Filebeat 的安裝使用步驟如下
./filebeat modules enable nginx
啟用模組filebeat.yml
中的 cloud.id 及 cloud.auth 並填入正確資料modules.d\nginx.yml
中的 var.paths: ["c:\\nginx-1.18.0\\logs\\access.log*"]
./filebeat test config -e
看看有沒有打錯如果有其他更特殊的 Log,也可以透過直接上傳 log 檔 (CSV, NDJSON, log) 到 kibana,然後人工稍微針對機器學習辨識出來的 Grok Pattern 結果進行編輯即可。
透過剛剛機器學習的模組會幫我們分析 Log 的組成,並且也有幫我們產生 YML 的內容的功能,方便我們去寫剛剛提到的 filebeat.yml
。
Kibana 就是一個管理的 GUI,載入 Sample web logs 範例資料後就可以看到華麗的 Dashboard,如果看到這裡覺得還是很複雜,如果剛好 Server 又是 Nginx 的也很推薦使用 GoAccess 這套工具。
Kibana Dashboard | GoAccess Dashboard |
---|---|
這次目標是看 Log 有沒有進來,所以到 Kibana 選單中 Observability 的 Logs,有幾個功能還蠻方便的:
接著記得開啟 stream live,並且重複瀏覽幾次 localhost
看看我們剛剛 Nginx Access Log 有沒有自動匯入,如果看到如下圖,就恭喜大大設定成功,完成了這次 Quick Start 的任務。