Filebeat 設定指南傳送 Nginx Log 掌握 Elasticsearch Logging 快速入門,輕鬆產生報表與監控

me
林彥成
2020-09-02 | 4 min.
文章目錄
  1. 1. 如何將 Nginx Log 傳送到 Kibana 進行管理?
  2. 2. Elastic Logging:日誌管理的斷捨離
    1. 2.1. Log 採集策略:為什麼不應該全量採集?
  3. 3. 建立 Elasticsearch
    1. 3.1. Elastic Logging 簡介
  4. 4. 安裝 Filebeat
  5. 5. Kibana 報表:實時監控的威力
  6. 6. FAQ:Filebeat 與日誌管理常見問題
    1. 6.1. Q1:如果 Nginx 日誌存放在自定義路徑,該如何修改 Filebeat 設定?
    2. 6.2. Q2:Filebeat 與 Logstash 在 Nginx 日誌採集上有什麼選擇建議?
    3. 6.3. Q3:實時日誌監控中的 Stream Live 功能對除錯有什麼幫助?

如何將 Nginx Log 傳送到 Kibana 進行管理?

Nginx Log 傳送至 Kibana 的核心在於正確配置 Filebeat。這套 Filebeat 設定指南 的三步驟包含:1. 環境準備:建立 Elasticsearch 叢集(地端或 Elastic Cloud);2. 安裝與配置:下載 Filebeat 並啟用 nginx 模組,設定 filebeat.yml 中的 cloud.id 與日誌路徑(如 access.log);3. 資料視覺化:執行 setup 指令將預建儀表板匯入 Kibana。透過這套 Elasticsearch Logging 入門 流程,管理者能實踐高品質的 實時日誌監控,利用關鍵字搜尋與 Highlight 功能快速排除系統故障,提升 DevOps 日誌優化 的整體效率。


本文提供Filebeat****快速設定指南,帶您透過簡單三步驟,輕鬆將Nginx Log傳送至Elasticsearch,並在Kibana中進行即時日誌管理。掌握高品質的 Elastic Observability 流程,您將能有效提升系統的可維護性。

Elastic Logging:日誌管理的斷捨離

為什麼 log 很重要?它是 DevOps 日誌優化 的核心數據來源。然而,在實踐高品質的日誌管理時,我們應具備「斷捨離」的思維。

主要步驟有:

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

Nginx 範例 Access Log 截圖

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

Log 採集策略:為什麼不應該全量採集?

許多團隊初期會試圖採集所有的 Debug Log,這會導致:

  1. 資源浪費: 儲存與運算成本劇增。
  2. 資訊噪音: 真正的錯誤訊息被淹沒在海量正常的 Request 中。
    建議採取精確的 Log 採集策略:僅採集 Access Log 與 Error Log,並針對特定的關鍵事件(如支付失敗)進行詳細記錄。

建立 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 結果進行編輯即可。

透過 Kibana 介面從 log 檔案上傳 Nginx Access Log

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

自動產生 Filebeat 配置檔的介面截圖

Kibana 報表:實時監控的威力

Kibana 是 Elastic Observability 的視覺化核心。透過開啟 stream live,您可以體驗到實時日誌監控的威力。

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

Kibana DashboardGoAccess Dashboard
Kibana Dashboard 顯示 Nginx Log 數據GoAccess Dashboard 顯示 Nginx Log 數據

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

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

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

Kibana Logs 介面即時監看 Nginx Access Log


FAQ:Filebeat 與日誌管理常見問題

Q1:如果 Nginx 日誌存放在自定義路徑,該如何修改 Filebeat 設定?

A:您需要進入 Filebeat 安裝目錄下的 modules.d/nginx.yml 檔案。在該檔案中,找到 var.paths 參數,並將其修改為您的 Nginx Log 實際路徑(例如:["/var/log/custom_nginx/access.log*"])。修改完成後,執行 ./filebeat test config 確保語法無誤,並重啟 Filebeat 服務。

Q2:Filebeat 與 Logstash 在 Nginx 日誌採集上有什麼選擇建議?

A:如果您的需求僅是簡單地將 Nginx Log 傳送到 Elasticsearch 並使用 Kibana 的內建儀表板,Filebeat 設定指南 建議直接使用 Filebeat 模組,因為它極其輕量且配置簡單。如果您需要在傳送前進行複雜的數據清洗、關聯其他資料庫資料或是將數據同時發送至多個目的地,則建議使用 Logstash 作為中間層處理。

Q3:實時日誌監控中的 Stream Live 功能對除錯有什麼幫助?

A:在 實時日誌監控 中,Stream Live 允許您在瀏覽器中像看「跑馬燈」一樣即時檢視流入系統的 Log。這在處理「難以重現」的 Bug 或是在發布新版本後進行冒煙測試 (Smoke Testing) 時非常有用。您可以即時看到使用者點擊產生的請求,並透過 Highlight 功能鎖定狀態碼為 500 或 404 的異常請求。


小編建議在設定完成後,務必觀察 Kibana 選單中 Observability 的 logs 頁面。利用關鍵字 highlight 功能,能讓您在發生系統異常時,秒級定位出問題所在的 API 請求。這種高品質的監控流程,是實現高效開發生活的必經之路。


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