Logs 與 Filebeat 的基本介紹
Last updated
Last updated
Logs 在 Observability 中的基本介紹
Filebeat 的簡介,以及如何用 Filebeat 來收集 Logs 資料
Google Cloud Architecture Center - DevOps Guides [1] 對針 Observability 這個詞的定義中,描述到:
Observability is tooling or a technical solution that allows teams to actively debug their system. Observability is based on exploring properties and patterns not defined in advance.
有提到一個重點,就是『非事先定義』,Observability 也就是擁有能夠探索未事先定義的屬性與模式的能力,我們在先前介紹的 Uptime 與 Metrics 的部份,其實都是需要事先定義,就算是 Elastic 已經做好很多預設的 Integration 以及 Dashboard,但也都是先定義好的,如果沒有定義的部份,也就不會被收集到。
而 Observability 當中的 Logs 與 APM,就擁有較多可以觀察到『非事先定義』部份的能力,針對 Logs 的部份,源頭當然還是需要系統、應用程式端、或是服務端,有記錄足夠資訊的日誌,而這些日誌,將會讓我們擁有『當發現系統有異常時,能夠進一步深入挖掘系統內部運作的情況,並且提供分析核心原因及找到解決方案』的能力。
就好比我們在 *nix 環境中常會針對日誌檔使用的指令 tail -f
,能讓我們查看最新不斷產生的日誌內容,Logs 也提供了 Streaming 的功能,在 Kibana > Observability > Logs 當中,我們可以啟用 Stream live
的按鈕,就可以讓我們即時的查看分散在多台主機的系統、服務、應用程式,所最新產生的日誌內容。
在這個 Logs Streaming 的功能之中,由於資訊量很大,所以 Logs 同時也有提供一些能力,能協助我們找到或是關注在我們所需要的資料上:
使用 KQL (Kibana Query Language) 定義篩選的規則
在查詢到指定某一條 log 時,能透過 View in Context
的方式來檢視,也就是可以快速的翻查這行 log 的前、後的 logs,這個功能非常的實用。
這部份在 Observability 的 Logs 之中,預設在選單上就有列出兩個功能,都是透過 Machine Learning 來協助做到二個類型的處理:
Anomalies 異常
Categories 分類
透過機器學習的方式,能針對指定 Logs 的時間啟始點、針對哪些 Index,建立 Machine Learning 的 Job。
在進入這兩個功能的檢視畫面時,就可以發現 Elastic 已經貼心的幫我們建立好這些基本的學習規則,可以直接查看當下發現的結果。
進一步可以從 Anomaly Explorer 查看異常分析的內容。
甚至可以查看異常判斷的原因。
要使用上述介紹到 Elastic 在 Kibana 提供的 Observability Logs 的這些基本能力之前,我們要先將 Logs 收集到 Elasticsearch 之中,Elastic Stack 中負責收集 Logs 資訊的主要角色,就是 Filebeat,如同先前介紹的 Metricbeat 和 Heartbeat 一樣,Filebeat 也是 Beats 家族中的一員,所以也是從 libbeat
所發展出來,並且是針對檔案類型的 Logs 進行收集的工具。
如下圖所示,Filebeat 主要是針對機器上的各種檔案,並且會使命必達的負責將指定的目錄中的檔案有新增的 logs,收集起來並且往後傳遞,可以直接送到 Elasticsearch 或是送到 Logstash 進行 ETL (Etract, Transform, Load) 的處理,又或是送到 Kafka 或 Redis 的 Queue 之中,再透過其他的工具進行後續的處理。
安裝的方式如同其他 Beats 家族成員相似,以下是使用最簡單的安裝步驟來做介紹,其實與官方的 Quick start 的文件差不多,先大約知道將 Metricbeat 運作起來的流程為何,我將會以 MacOS
為例。
下載,並解壓縮 Filebeat。
在解壓縮目錄下的 filebeat.yml
指定 Elasticsearch 的位置
啟動要安裝的模組
Filebeat 提供了非常多內建的模組 (modules),像是 Elasticsearch
、 Apache
、Nginx
、MySQL
、PostgreSQL
、Redis
、MongoDB
...等,詳細可以查看 官方文件 Filebeat Modules [2]。
另外針對啟動的模組,通常都會要調整這些模組的 config 檔,檔案的路徑就在 ./modules.d/
裡面,檔名就會是 module 的名字,副檔名為 .yml
。
安裝 Filebeat 內建的 Kibana Dashboard,以及 Elasticsearch 的 Index Template。
啟動 Filebeat
若是要以 root
執行,要記得把 config 的擁有者也改成 root
接下來就可以到 Kibana 查看 Filebeat 所發送的資料,有沒有成功的進入到 Elasticsearch了。
使用 Highlights 在結果當中以顏色突顯、也會在右方的時間軸上呈現出哪些時間有發生