三步驟完成 Filebeat 設定 傳送 Nginx Log 到 Kibana 產生報表

me
林彥成
2020-09-02 | 2 min.
文章目錄
  1. 1. 建立 Elasticsearch
    1. 1.1. Elastic Logging 簡介
  2. 2. 安裝 Filebeat
  3. 3. Kibana 報表

這篇文章會透過以下三個步驟,安裝並使用 Filebeat 傳送 Nginx Access Log 到 Elasticsearch 中,最後透過 Kibana 即時監看相關分析,主要步驟有

  1. 建立 Elasticsearch
  2. 安裝 Filebeat,ElasticCloud 服務的話第一次建議先加入 Sample Data 試用,常見的 Apache、Nginx、Docker 在教學範例都有
  3. Kibana 報表

NginxSample

下一篇文章 Filebeat 深入理解 則會深入的去介紹 Log 與 Filebeat 在實際運用上的細節、基礎概念及相關配置教學。

建立 Elasticsearch

這邊可以安裝地端的 Elasticsearch 或是選用 ElasticCloud 服務,ElasticCloud 規格挑喜歡的選就可以了,我是選 GCP 位置台灣 IO 優先,重要的是開好之後記得存好帳號跟密碼,之後要打資料到 kibana 的配置檔中會用到。

Elastic Logging 簡介

目前蒐集資料到 Elasticsearch 的方法有兩種

  • Logstash: Java Base,還沒跑服務就需要吃資源,可負責處理 Log 格式
  • Beats: Go Base,需要資源較少效能較好,可以安裝在 server 上協助傳送資訊到 Elasticsearch 或 Logstash,除了這次要用到的 Filebeat 以外還有一堆很厲害的 beat 系列工具,例如 Metricbeat 收集 system loading 還有 Packetbeat 可以收集網路封包。

為什麼 log 很重要?

  • 監測應用程式
  • 安全性分析
  • 問題排解

解決的痛點:

  • 不同的 Log 會有不同的格式
  • 需要專業知識才讀得懂
  • 有好幾種 log 的來源
  • 需要產出不同格式的分析

安裝 Filebeat

目標是透過 Filebeat 幫我們自動打 log 資料到 Elasticsearch,如果是 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 解壓縮
  • ./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 看看有沒有打錯
  • ./filebeat setup
  • ./filebeat -e

如果有其他更特殊的 Log,也可以透過直接上傳 log 檔 (CSV, NDJSON, log) 到 kibana,然後人工稍微針對機器學習辨識出來的 Grok Pattern 結果進行編輯即可。

UploadAccessLog

透過剛剛機器學習的模組會幫我們分析 Log 的組成,並且也有幫我們產生 YML 的內容的功能,方便我們去寫剛剛提到的 filebeat.yml

CreateFilebeatConfiguration

Kibana 報表

Kibana 就是一個管理的 GUI,載入 Sample web logs 範例資料後就可以看到華麗的 Dashboard,如果看到這裡覺得還是很複雜,如果剛好 Server 又是 Nginx 的也很推薦使用 GoAccess 這套工具。

Kibana DashboardGoAccess Dashboard
DashBoardDemoDashBoardDemo

這次目標是看 Log 有沒有進來,所以到 Kibana 選單中 Observability 的 logs,有幾個功能還蠻方便的:

  1. 關鍵字搜尋
  2. 關鍵字 highlight
  3. 時段篩選

接著記得開啟 stream live,並且重複瀏覽幾次 localhost 看看我們剛剛 Nginx Access Log 有沒有自動匯入,如果看到如下圖,就恭喜大大設定成功,完成了這次 Quick Start 的任務。

SeeLog


喜歡這篇文章,請幫忙拍拍手喔 🤣


share