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とSMQがアクティブ化されており、OSSバケットがSMQキューまたはトピックと同じリージョンにあること。
詳細については、OSSのアクティブ化およびSMQのアクティブ化とRAMユーザーへのSMQアクセス権限の付与をご参照ください。
OSSでイベント通知ルールが設定されていること。
詳細については、イベント通知ルールの設定をご参照ください。
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クライアント構成。次のパラメーターを設定できます。
|
delete | boolean | いいえ | 処理済みオブジェクトを元のOSSバケットから削除するかどうかを指定します。有効な値:
|
backup_to_bucket | string | いいえ | 処理済みオブジェクトのバックアップを格納するOSSバケットの名前。 |
backup_to_dir | string | いいえ | 処理済みファイルのバックアップを格納するローカルディレクトリ。 |
backup_add_prefix | string | いいえ | オブジェクトが処理された後のキーのプレフィックス。キーは、OSS内のオブジェクト名を含むフルパスです。同じOSSバケットまたは別のOSSバケットにデータをバックアップする場合、このパラメーターを使用して、バックアップを格納する新しいフォルダーを指定できます。 |
include_object_properties | boolean | いいえ | [@metadata][oss]にOSSオブジェクトのプロパティを含めるかどうかを指定します。プロパティとは、last_modified、content_type、metadataを指します。有効な値:
このパラメーターが設定されていない場合、[@metadata][oss][key]は常に存在します。 |
exclude_pattern | string | いいえ | OSSバケットから除外するキーのRubyベースの正規表現。 |
mns_settings | hash | はい | SMQの構成。有効な値:
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からデータを取得します。