すべてのプロダクト
Search
ドキュメントセンター

Elasticsearch:logstash-input-ossプラグインの使用

最終更新日:Jan 11, 2025

logstash-input-ossプラグインは、Alibaba Cloud Simple Message Queue(旧称MNS)(SMQ)に基づいて開発されています。オブジェクトストレージサービス(OSS)内の関連オブジェクトが更新されると、SMQはプラグインに通知を送信します。プラグインは通知を受信した後、Alibaba Cloud LogstashをトリガーしてOSSから最新のデータを読み取ります。OSSのイベント通知ページでイベント通知ルールを設定できます。このようにして、OSS内の関連オブジェクトが更新されると、OSSは自動的にSMQに通知を送信できます。

説明

logstash-input-ossはオープンソースのプラグインです。詳細については、logstash-output-ossをご参照ください。

使用方法に関する注意事項

  • logstash-input-ossがSMQから通知を受信すると、Logstashは通知から関連オブジェクト(PutObject操作またはAppendObject操作を使用して作成されたオブジェクトなど)を抽出し、オブジェクト内のすべてのデータを同期します。

  • 関連オブジェクトが.gz形式または.gzip形式のテキストオブジェクトの場合、Logstashはオブジェクトを.gzip形式のオブジェクトとして処理します。他の形式のオブジェクトは、テキスト形式のオブジェクトとして処理されます。

  • オブジェクトはテキスト形式で読み取られます。オブジェクトが解析できない形式(.jar形式や.bin形式など)の場合、オブジェクトは文字化けして読み取られる可能性があります。

前提条件

logstash-input-ossの使用

構成ファイルを使用したパイプラインの管理に記載されている手順に従って、パイプラインを作成します。パイプラインを作成する際は、「パラメーター」セクションの表に記載されているパイプラインパラメーターを設定します。パラメーターを設定した後、設定を保存してパイプラインをデプロイします。このようにして、LogstashをトリガーしてOSSからデータを取得できます。

次のコードは、パイプライン構成の例を示しています。この例では、パイプラインを使用してOSSからデータを取得し、Alibaba Cloud Elasticsearchに書き込みます。

input {
 oss {
  endpoint => "oss-cn-hangzhou-internal.aliyuncs.com"
  bucket => "zl-ossou****"
  access_key_id => "******"
  access_key_secret => "*********"
  prefix => "file-sample-prefix"
  mns_settings => {
   endpoint => "******.mns.cn-hangzhou-internal.aliyuncs.com"
   queue => "aliyun-es-sample-mns"
  }
  codec => json {
   charset => "UTF-8"
  }
 }
}

output {
  elasticsearch {
    hosts => ["http://es-cn-***.elasticsearch.aliyuncs.com:9200"]
    index => "aliyun-es-sample"
    user => "elastic"
    password => "changeme"
  }
}
重要

SMQエンドポイントは http をプレフィックスにすることができず、内部エンドポイントである必要があります。そうでない場合、エラーが報告されます。

パラメーター

次の表に、logstash-input-ossでサポートされているパラメーターを示します。

パラメーター

タイプ

必須

説明

endpoint

string

はい

OSSにアクセスするために使用するエンドポイント。詳細については、リージョンとエンドポイントをご参照ください。

bucket

string

はい

OSSバケットの名前。

access_key_id

string

はい

Alibaba CloudアカウントのAccessKey ID。

access_key_secret

string

はい

Alibaba CloudアカウントのAccessKeyシークレット。

prefix

string

いいえ

このパラメーターを設定する場合、このパラメーターの値がOSSバケット内のオブジェクトまたはディレクトリの名前のプレフィックスと一致することを確認する必要があります。プレフィックスは正規表現ではありません。このパラメーターを設定して、LogstashがOSSバケット内の1つ以上の特定のディレクトリからデータを読み取ることができるようにすることができます。

additional_oss_settings

hash

いいえ

追加のOSSクライアント構成。次のパラメーターを設定できます。

  • secure_connection_enabled: セキュア接続を有効にするかどうかを指定します。

  • max_connections_to_oss: OSSへの最大接続数を指定します。

delete

boolean

いいえ

処理済みオブジェクトを元のOSSバケットから削除するかどうかを指定します。有効な値:

  • true

  • false(デフォルト値)

backup_to_bucket

string

いいえ

処理済みオブジェクトのバックアップを格納するOSSバケットの名前。

backup_to_dir

string

いいえ

処理済みファイルのバックアップを格納するローカルディレクトリ。

backup_add_prefix

string

いいえ

オブジェクトが処理された後のキーのプレフィックス。キーは、OSS内のオブジェクト名を含むフルパスです。同じOSSバケットまたは別のOSSバケットにデータをバックアップする場合、このパラメーターを使用して、バックアップを格納する新しいフォルダーを指定できます。

include_object_properties

boolean

いいえ

[@metadata][oss]にOSSオブジェクトのプロパティを含めるかどうかを指定します。プロパティとは、last_modifiedcontent_typemetadataを指します。有効な値:

  • true

  • false

このパラメーターが設定されていない場合、[@metadata][oss][key]は常に存在します。

exclude_pattern

string

いいえ

OSSバケットから除外するキーのRubyベースの正規表現。

mns_settings

hash

はい

SMQの構成。有効な値:

  • endpoint: SMQにアクセスするために使用するエンドポイント。エンドポイントは http をプレフィックスにすることができず、内部エンドポイントである必要があります。そうでない場合、エラーが報告されます。

  • queue: SMQキューの名前。

  • poll_interval_seconds: キューにメッセージがない場合のReceiveMessageリクエストの最大待機時間。デフォルト値:10秒。

  • wait_seconds: ReceiveMessageリクエストの最大ポーリング待機時間。単位:秒。

ReceiveMessageの詳細については、ReceiveMessageをご参照ください。

FAQ

  • Q: なぜlogstash-input-ossプラグインはSMQに基づいて開発されているのですか?

    A: OSSオブジェクトの更新をクライアントに通知するメカニズムが必要です。OSSオブジェクトの更新に関するイベントは、SMQにシームレスに書き込むことができます。

  • Q: なぜOSSのListObjects API操作を使用して更新されたオブジェクトを取得しないのですか?

    A: OSSは、未処理および処理済みのオブジェクトを記録する際に、より多くのローカルストレージを消費します。ローカルストレージの消費量が多い場合、ListObjectsのパフォーマンスが低下します。Amazon S3オープンソースコミュニティなどの他のファイルストレージシステムも、ListObjectsをメッセージ通知メカニズムに置き換えました。

  • Q: OSSがデータを書き込んでいるときに、LogstashがトリガーされてOSSからデータを取得します。 logstash-input-ossは何をしますか?データが失われる可能性はありますか?

    A: logstash-input-ossは、SMQキューに書き込まれたデータを記録し、Logstashパイプラインを介してElasticsearchにデータを送信します。書き込まれていないデータは、引き続きOSSに書き込まれます。 logstash-input-ossは、Logstashが再度OSSからデータを取得するようにトリガーされるまで、OSSからデータを取得します。