喬叔的 Elastic Stack 專業教育訓練
  • 喬叔的 Elastic Stack 專業教育訓練
  • 🧑關於喬叔 (Joe Wu)
  • Elastic 課程公開班
    • 🎯Elasticsearch 基礎實務班
      • 💯學員課後回饋
    • 🆕Elasticsearch 進階運維班
      • 💯學員課後回饋
    • Elasticsearch 進階開發班
    • Elastic Stack 基礎實務班
    • Elastic Observability 基礎實務班
    • 📩課程許願池
  • 技術分享
    • 📗喬叔帶你上手 Elastic Stack
      • 前言
      • Elastic Cloud 如何建立 Deployment
        • ES Node 的種類
        • 配置的選擇
      • Index 建立前你該知道的
        • ES Index 如何被建立
        • ES 的超前佈署 - Dynamic Mapping
        • ES 的超前佈署 - Index Template
        • ES Index 的別名 (Alias)
        • 管理你的 Index - Kibana Index
      • 管理 Index 的 Best Practices
        • Shard 的數量與 Rollover & Shrink API
        • 三溫暖架構 - Hot Warm Cold Architecture
        • Index Lifecycle Management (ILM)
        • Rollup
        • Transform
        • Snapshot Lifecycle Management (SLM)
        • 總結
      • Elastic Cloud 比免費版還多的功能
        • Elastic Stack 的方案比較與銷售方式
        • Centralized Beats Management
        • Centralized Pipeline Management
        • Watcher
        • Elasticsearch Token Service
        • Multi-stack monitoring & Automatic stack issue alerts
      • 向 App Search 學習怎麼用 Elasticsearch
        • 揭開 App Search 的面紗
        • Engine 的 Index Settings 篇
        • Engine 的 Mapping 篇
        • Engine 的 Search 基礎剖析篇
        • Engine 的 Search 進階剖析篇
      • Elasticsearch 的優化技巧
        • Indexing 索引效能優化
        • Searching 搜尋效能優化
        • Index 的儲存空間最佳化
        • Shard 的最佳化管理
      • 完賽心得
    • 📘喬叔帶你上手 Elastic Stack - 探索與實踐 Observability 系列
      • 前言 & 淺談 Observability
      • Elastic 的 Observability 解決方案
      • Uptime - 掌握系統的生命徵象
        • 我們要觀測的生命徵象是什麼?
        • 使用 Heartbeat 收集系統生命徵象數據
        • 透過 Kibana 觀看心電圖及設定警報
        • 使用合成監控 (Synthetics Monitor) 從使用者情境驗證服務的運作狀態
      • Metrics - 觀察系統的健康指標
        • Metrics 與 Metricbeat 的基本介紹
        • 使用 Metricbeat 掌握 Elastic Stack 的健康狀態
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 Host 篇
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 Docker 篇
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 Kubernetes 篇
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 AWS 篇
      • Logs - 挖掘系統內部發生的狀況
        • Logs 與 Filebeat 的基本介紹
        • 使用 Filebeat 應該要了解的設計細節與原理
        • 透過 Filebeat 收集 Elastic Stack 中各種服務的細節資訊
        • 透過 Filebeat 收集 Infrastructure 中各種服務的細節資訊
      • Traces - 觀察應用程式的效能瓶頸
        • Elastic APM 基本介紹
        • 使用 APM-Integratoin-Testing 建立 Elastic APM 的模擬環境
        • 如何在 Kibana 使用 APM UI
        • 使用 APM Server 來收集 APM 數據
        • 透過 APM Agents 收集並傳送後端服務運作的記錄
        • 透過真實使用者監控 (RUM, Real User Monitoring) 來改善使用者體驗
      • 建立結構化的 Log
        • Elastic Common Schema 結構化 Log 的規範
        • Elasticsearch Ingest Pipeline 資料 Index 前的轉換好幫手
          • 基本介紹
          • 各種常用的 Processor
          • Enrich 資料與例外處理
      • 有效的使用 Observability 的資料
        • 透過 Machine Learning 發現異常的問題
        • 使用 Kibana Alerts 主動通知異常狀況
        • 資料的生命週期管理
        • 使用 Elastic Observability 追縱及觀察問題的心得
      • 完賽心得
    • 😀Elasticsearch 技術分享小品
      • 🤖Elastic 與 AI
        • Elasticsearch Inference API 讓我們直接在 ES 裡運用 OpenAI Completion API
    • 🎥線上分享
      • 喬叔 Elasticsearch Index 管理與效能優化技巧
      • Elastic Certification 認證經驗分享
    • 🛠️workshop
      • 如何在 Elasticsearch 實現敏捷的資料建模與管理 @ DevOpsDays 2023
        • 工作坊實作內容
      • Elastic Observability 實作體驗坊 @ DevOpsDays 2022
        • 行前準備
        • 工作坊實作內容
      • 當 Elasticsearch 搜尋引擎遇上 AI @ HelloWordDevConference 2024
        • 投影片
        • Elasticsearch 環境準備
        • Google Colab 環境準備
        • 工作坊操作說明
        • ElasticSearch Relevance Engine (ESRE)
    • ⬆️Elastic Stack 版本升級記錄
      • 🔍Elasticsearch
  • 其他專業服務
    • 👩‍🎓企業包班 | 企業內訓
    • 👨‍💼顧問服務
    • 🈺專案合作
    • 🧩Elastic 授權代理
  • 相關連結
    • Facebook 粉絲頁
Powered by GitBook
On this page
  • 本篇學習重點
  • Observability Logs 的基本介紹
  • Logs 在 Observability 扮演的角色
  • Observability 中的 Logs 提供了什麼樣的能力
  • 使用 Machine Learning 來協助分析 Logs
  • Filebeat 基本介紹
  • Filebeat 的主要運作架構
  • Filebeat 的安裝方式
  • 參考資料
  1. 技術分享
  2. 喬叔帶你上手 Elastic Stack - 探索與實踐 Observability 系列
  3. Logs - 挖掘系統內部發生的狀況

Logs 與 Filebeat 的基本介紹

PreviousLogs - 挖掘系統內部發生的狀況Next使用 Filebeat 應該要了解的設計細節與原理

Last updated 2 years ago

本篇學習重點

  • Logs 在 Observability 中的基本介紹

  • Filebeat 的簡介,以及如何用 Filebeat 來收集 Logs 資料

Observability Logs 的基本介紹

Logs 在 Observability 扮演的角色

[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 的部份,源頭當然還是需要系統、應用程式端、或是服務端,有記錄足夠資訊的日誌,而這些日誌,將會讓我們擁有『當發現系統有異常時,能夠進一步深入挖掘系統內部運作的情況,並且提供分析核心原因及找到解決方案』的能力。

Observability 中的 Logs 提供了什麼樣的能力

即時監控不斷產生的 Logs - Streaming

就好比我們在 *nix 環境中常會針對日誌檔使用的指令 tail -f,能讓我們查看最新不斷產生的日誌內容,Logs 也提供了 Streaming 的功能,在 Kibana > Observability > Logs 當中,我們可以啟用 Stream live 的按鈕,就可以讓我們即時的查看分散在多台主機的系統、服務、應用程式,所最新產生的日誌內容。

13-Kibana-O11y-Logs-stream

在這個 Logs Streaming 的功能之中,由於資訊量很大,所以 Logs 同時也有提供一些能力,能協助我們找到或是關注在我們所需要的資料上:

  • 使用 KQL (Kibana Query Language) 定義篩選的規則

  • 在查詢到指定某一條 log 時,能透過 View in Context 的方式來檢視,也就是可以快速的翻查這行 log 的前、後的 logs,這個功能非常的實用。

使用 Machine Learning 來協助分析 Logs

這部份在 Observability 的 Logs 之中,預設在選單上就有列出兩個功能,都是透過 Machine Learning 來協助做到二個類型的處理:

  • Anomalies 異常

  • Categories 分類

透過機器學習的方式,能針對指定 Logs 的時間啟始點、針對哪些 Index,建立 Machine Learning 的 Job。

在進入這兩個功能的檢視畫面時,就可以發現 Elastic 已經貼心的幫我們建立好這些基本的學習規則,可以直接查看當下發現的結果。

進一步可以從 Anomaly Explorer 查看異常分析的內容。

甚至可以查看異常判斷的原因。

Filebeat 基本介紹

要使用上述介紹到 Elastic 在 Kibana 提供的 Observability Logs 的這些基本能力之前,我們要先將 Logs 收集到 Elasticsearch 之中,Elastic Stack 中負責收集 Logs 資訊的主要角色,就是 Filebeat,如同先前介紹的 Metricbeat 和 Heartbeat 一樣,Filebeat 也是 Beats 家族中的一員,所以也是從 libbeat 所發展出來,並且是針對檔案類型的 Logs 進行收集的工具。

Filebeat 的主要運作架構

如下圖所示,Filebeat 主要是針對機器上的各種檔案,並且會使命必達的負責將指定的目錄中的檔案有新增的 logs,收集起來並且往後傳遞,可以直接送到 Elasticsearch 或是送到 Logstash 進行 ETL (Etract, Transform, Load) 的處理,又或是送到 Kafka 或 Redis 的 Queue 之中,再透過其他的工具進行後續的處理。

Filebeat 的安裝方式

安裝的方式如同其他 Beats 家族成員相似,以下是使用最簡單的安裝步驟來做介紹,其實與官方的 Quick start 的文件差不多,先大約知道將 Metricbeat 運作起來的流程為何,我將會以 MacOS 為例。

  1. 下載,並解壓縮 Filebeat。

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.15.0-darwin-x86_64.tar.gz
tar xzvf filebeat-7.15.0-darwin-x86_64.tar.gz
  1. 在解壓縮目錄下的 filebeat.yml 指定 Elasticsearch 的位置

output.elasticsearch:
  hosts: ["myEShost:9200"]
  username: "filebeat_internal"
  password: "YOUR_PASSWORD" 
  1. 啟動要安裝的模組

./filebeat modules enable {module_name}

另外針對啟動的模組,通常都會要調整這些模組的 config 檔,檔案的路徑就在 ./modules.d/ 裡面,檔名就會是 module 的名字,副檔名為 .yml。

  1. 安裝 Filebeat 內建的 Kibana Dashboard,以及 Elasticsearch 的 Index Template。

./filebeat setup -e
  1. 啟動 Filebeat

./filebeat -d

若是要以 root 執行,要記得把 config 的擁有者也改成 root

sudo chown root filebeat.yml 
sudo chown root modules.d/system.yml 
sudo ./filebeat -e

接下來就可以到 Kibana 查看 Filebeat 所發送的資料,有沒有成功的進入到 Elasticsearch了。

參考資料

使用 Highlights 在結果當中以顏色突顯、也會在右方的時間軸上呈現出哪些時間有發生

13-Kibana-O11t-Stream-view-in-context
13-Kibana-Create-ML-Job
13-Kibana-Create-Anomalies
13-Kibana-Create-Anomaly-Explorer
13-Kibana-Create-Anomaly-Reason
13-Filebeat-Architecture

Filebeat 提供了非常多內建的模組 (modules),像是 Elasticsearch、 Apache、Nginx、MySQL、PostgreSQL、Redis、MongoDB...等,詳細可以查看 [2]。

📘
官方文件 Filebeat Modules
Google Cloud Architecture Center - DevOps Guides
官方文件 Filebeat Modules
Google Cloud Architecture Center - DevOps Guides
13-Kibana-O11t-Stream-Highlight