喬叔的 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
  • 前言
  • 進入此章節的先備知識
  • 此章節的重點學習
  • Centralized Pipeline Management 基本介紹
  • 功能定位
  • Centralized Pipeline Management 基本運作架構圖
  • 將 Logstash 加入 Centralized Pipeline Management
  • 使用 Kibana 管理 Logstash Pipelines
  • 透過 Kibana Stack Monitoring 確認 Logstash Pipelines 運作狀況
  • 使用建議與注意事項
  • 參考資料
  1. 技術分享
  2. 喬叔帶你上手 Elastic Stack
  3. Elastic Cloud 比免費版還多的功能

Centralized Pipeline Management

前言

Logstash 是一個非常強大的資料 ETL (Extract-Transform-Load) 工具,在具有一定量級的處理環境時,常常會佈署多台的 Logstash,以及配合許多情境而有對應配置的 ETL 設定,這些對於管理及運維上都有一定的複雜度及成本,這篇文章將會介紹,如何透過 X-Pack 中 Gold License 以上的授權、或是 Elastic Cloud service Standard 以上版本才能使用的 Centralized Pipeline Management ,如個使用這個功能讓 Logstash Pipeline 的管理能集中化的在 Kibana 中被簡單的配置。

進入此章節的先備知識

  • Logstash 的基本配置與使用方式。

  • Logstash 的 Pipeline 配置方式。

此章節的重點學習

  • 如何透過 Centralized Pipeline Management 來集中化管理 Logstash 的 Pipeline 配置。


Centralized Pipeline Management 基本介紹

Centralized Pipeline Management 是 Elastic Stack 6.0 時以 Beta 版本首次推出的服務,主要的目的就是使用 Kibana 來當作集中化的管理工具、能管理多台 Logstash 身上的 Pipbline 配置,同時將 Elasticsearch 當作 Database ,存放這些 Pipeline 的配置。

功能定位

Centralized Pipeline Management 是為集中化的管理多台 Logstash,如果已經有使用其他更強大的 Configuration Management (CM) 工具像是 Puppet, Ansible, Chef 來解決這個問題,這功能可能就不見得需要使用,但如果還沒有使用到這些複雜的 CM 工具、但又有這個 Logstash 管理的需求時、又或者希望能由 Kibana 來提供需要修改 Pipeline 的操作者有統一的 GUI 管理工具,那這個 Centralized Pipeline Management 就會是你的選擇。

Centralized Pipeline Management 基本運作架構圖

將 Logstash 加入 Centralized Pipeline Management

首先我們要將 Logstash 註冊進入 Centralized Pipeline Management 的託管,我們會需要做幾件事:

1. 先配置好 Logstash 所要使用的 Security User & Role

首先依照官方的建議配置,先建立兩個 Role - logstash_writer 和 logstash_reader 。

POST _xpack/security/role/logstash_writer
{
  "cluster": ["manage_index_templates", "monitor", "manage_ilm"], 
  "indices": [
    {
      "names": [ "logstash-*" ], 
      "privileges": ["write","create","delete","create_index","manage","manage_ilm"]  
    }
  ]
}
POST _xpack/security/role/logstash_reader
{
  "indices": [
    {
      "names": [ "logstash-*" ], 
      "privileges": ["read","view_index_metadata"]
    }
  ]
}

logstash_reader 是給之後要能查閱我們透過 Logstash 傳進來的資料而先定義好的 Role。

建立一個 User ,並且給予 logstash_admin, logstash_system (這兩個是系統內建的 Role ) 和 logstash_writer 的 Role。

POST _xpack/security/user/logstash_user
{
  "password" : "t0p.s3cr3t",
  "roles" : ["logstash_admin","logstash_system","logstash_writer"],
  "full_name" : "Logstash User"
}

以上的操作都能直接在 Kibana > Stack Management > Security 中,使用 GUI 的畫面建立。

2. 決定 Pipeline Id 及修改 Logstash 的設定

我們要在某一台已安裝好 Logstash 的機器上,將配置改成 xpack.management.enable: true 也就是將這台 Logstash 註冊透過 Centralized PIpeline Management 來託管。

# config/logstash.yml

xpack.management.enabled: true
xpack.management.logstash.poll_interval: 5s
xpack.management.pipeline.id: ["main", "apache_logs", "cloudwatch_logs"]

# 若是自架 Elastic Stack 要設置以下 Elasticsearch 的配置
xpack.management.elasticsearch.hosts: "http://localhost:9200/"
xpack.management.elasticsearch.username: logstash_user
xpack.management.elasticsearch.password: t0p.s3cr3t

# 若是使用 Elastic Cloud 可以直接指定 cloud_id 和 cloud_auth
xpack.management.elasticsearch.cloud_id: uncle-joe:xxxxxxxxxxxx
xpack.management.elasticsearch.cloud_auth: logstash_user:t0p.s3cr3t

這邊要注意,在 Config 中指派的 pipeline id,也就會是這個 logstash 機器會從 Centralized Pipeline Management 抓取的 Pipeline 配置,所以這部份是要事先定義好的。

另外以下是 X-pack Monitoring 的設定,也建議打開,或是使用 Metricbeat 來另外收集 Logstash Monitoring 的資訊。

xpack.monitoring.enabled: true
xpack.monitoring.collection.interval: 10s
xpack.monitoring.elasticsearch.cloud_id: uncle-joe:xxxxxxxxxxxx
xpack.monitoring.elasticsearch.cloud_auth: logstash_system:t0p.s3cr3t

3. 註冊 Logstash 進入 Centralized Pipeline Management 中

當配置完成後,不需要做其他特別的執行,只要啟動 (或重新啟動) Logstash

bin/logstash

這時會發現出現找不到 remote config 的錯誤 (因為 Kibana 上的 Pipeline config 我們這時還沒建立好)。

4. 確認 Kibana 使用者的權限

這邊要特別注意,當我們配置好之後,要重新回到 Kibana 來設定 Logstash Pipelines 時,要確保 Kibana 的使用者有以下的權限:

  • logstash_admin

  • logstash_writer

一但以上的步驟完成後,我們接下來就要進入 Kibana 設置 Logstash Pipeline。

使用 Kibana 管理 Logstash Pipelines

進入 Kibana > Stack Management > Ingest 中,有一個 Logstash Pipeline 的管理介面。

點選 Create Pipeline 之後,就可以依照一般使用 Pipeline 的配置方式來設定 Pipeline。

最後按下 Create and deploy 就會立刻發佈到 Logstash 並生效。

透過 Kibana Stack Monitoring 確認 Logstash Pipelines 運作狀況

從 Kibana > Stack Monitoring > Logstash 中,可以看到目前 Logstash 的機器狀況,也可以即時監看 Pipeline 的運作狀態。

若是有多台機器、多組 Pipeline 的配置,都能透過 Stack Monitoring 即時監看運作狀態,在更新 Pipeline 的配置後,請記得來這邊確認配置的結果是否運作正常。

使用建議與注意事項

  • Centralized Pipeline Management 的目的是讓 Logstash Pipeline 可以讓多租戶的使用者們自行配置、自主管理,而這邊會配合的用方是 Logstash multiple pipeline 的配置方式,也就可以讓我們 以 Pipieline 為單位 來定義各種不同情境的需求,也就是每個租戶、或是每個 data-flow 可以配置屬於自己的 Pipeline。

  • Centralized Pipeline Management 所建立的 Pipeline 資料是真接儲存在 Elasticsearch 中,所有的調整與變動都會直接套用到 Logstash,不需要重新開啟動 Logstash,而這些 Pipeline 的配置沒有任何的驗證錯誤的機制,也就是一但修改後就會直接生效,若是配置有錯誤的話,也就會直接反應到實際的環境中,這部份會需要特別小心。

  • Logstash 在這樣集中化管理的情況,一但發生錯誤,也會需要看每台 Logstash 的 logs 才能知道狀況,因此也同樣會建議啟用 X-Pack monitoring 的功能,讓 Logstash 的 logs 被收集到 Elasticsearch 來一併監控與管理。

參考資料

PreviousCentralized Beats ManagementNextWatcher

Last updated 2 years ago

centralized pipeline management
run logstash
Screen Shot 2020-10-03 at 10.22.52 PM
create pipeline
stack monitoring
stack monitoring pipelines

為了能控制發生錯誤時的影響,建議配置好 Logstash 的 ,當有錯誤發生時,也能再次透過 Pipeline 的調整,以重新修復資料。

📗
Dead Letter Queue
官方文件 - Centralized Pipeline Management
官方文件 - Configuring Centralized Pipeline Management
官方文件 - Dead Letter Queue
官方 Blog - Logstash Centralized Pipeline Management