全部產品
Search
文件中心

Simple Log Service:Logstash消費

更新時間:Aug 31, 2024

Simple Log Service支援通過Logstash消費資料,您可以通過配置Simple Log Service的Input外掛程式對接Logstash擷取Simple Log Service中的資料並寫入到其他系統中,例如Kafka、HDFS等。

功能特性

  • 分布式協同消費:可配置多台伺服器同時消費某一個Logstore。

  • 高效能:基於Java ConsumerGroup實現,單核消費速度可達20 MB/s(壓縮前)。

  • 高可靠性:消費進度儲存到服務端,異常恢複後會從上一次消費的Checkpoint處自動回復消費。

  • 自動負載平衡:根據消費者數量自動分配Shard,消費者增加或減少後會自動負載平衡。

操作步驟

  1. 安裝Logstash。

    1. 下載安裝包

    2. 解壓安裝包到指定目錄。

  2. 安裝input外掛程式。

    1. 下載input外掛程式。下載地址為logstash-input-sls

    2. 安裝input外掛程式。

      logstash-plugin install logstash-input-sls
      說明

      外掛程式安裝失敗原因及解決方案,請參見外掛程式安裝配置

  3. 啟動Logstash。

    logstash -f logstash.conf

    配置參數如下表所示。

    參數

    類型

    是否必須

    說明

    endpoint

    string

    Simple Log ServiceProject所在的Endpoint。更多資訊,請參見服務存取點

    access_id

    string

    阿里雲AccessKey ID,需要具備消費組相關許可權。更多資訊,請參見指定Logstore的消費許可權

    access_key

    string

    阿里雲AccessKey Secret,需要具備消費組相關許可權。更多資訊,請參見指定Logstore的消費許可權

    project

    string

    Simple Log ServiceProject名稱。

    logstore

    string

    Simple Log ServiceLogstore名稱。

    consumer_group

    string

    消費組名稱。

    consumer_name

    string

    消費者名稱,同一個消費組中的消費者名稱不能重複。

    position

    string

    消費開始位置。

    • begin:從Logstore寫入的第一條資料開始消費。

    • end:從目前時間點開始消費。

    • yyyy-MM-dd HH:mm:ss:從指定時間點開始消費。

    checkpoint_second

    number

    每隔幾秒Checkpoint一次,建議10秒~60秒,不能低於10秒,預設為30秒。

    include_meta

    boolean

    資料是否包含Meta,Meta包括source、time、tag、topic,預設為true。

    consumer_name_with_ip

    boolean

    消費者名稱是否包含IP地址,預設為true,分布式協同消費下必須設定為true。

樣本

配置Logstash消費某一個Logstore並將資料列印到標準輸出,樣本如下:

重要

強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。請配置環境變數ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET。具體操作,請參見配置環境變數

input {
  logservice{
  endpoint => "your project endpoint"
  // 本樣本從環境變數中擷取AccessKey ID和AccessKey Secret。
  access_id => process.env.ALIBABA_CLOUD_ACCESS_KEY_ID
  access_key => process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET
  project => "your project name"
  logstore => "your logstore name"
  consumer_group => "consumer group name"
  consumer_name => "consumer name"
  position => "end"
  checkpoint_second => 30
  include_meta => true
  consumer_name_with_ip => true
  }
}

output {
  stdout {}
}