Amazon Linux で Filebeat と Logstash を使用して OpenSearch Service に接続する方法を教えてください。
Amazon Linux で Filebeat と Logstash を使用して Amazon OpenSearch Service クラスターに接続したいのですが、エラーが発生します。
解決策
セキュリティポートを設定する
Logstash を使用して OpenSearch サービスに接続するには、セキュリティポートを Logstash からログを転送するよう設定する必要があります。
次の手順を実行します。
- Filebeat 用の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動し、ログの送信元となる Logstash 用に別のインスタンスを起動します。
- EC2 インスタンスが OpenSearch Service の仮想プライベートクラウド (VPC) と同じセキュリティグループに属していることを確認します。
- セキュリティグループでポート 80、443、5044 が開いており、Logstash と OpenSearch Service の間でデータを送信できることを確認します。
Filebeat、Logstash、OpenSearch Service の構成を更新する
OpenSearch サービスと従来の Elasticsearch のバージョンに一致するバージョンの Filebeat と Logstash の利用を推奨します。ドメインのバージョンに合った Filebeat と Logstash のバージョンを使用してください。
例えば、OpenSearch Service 1.x を互換モードで使用している場合、OpenSearch Service はバージョンを 7.10 と報告します。Filebeat と Logstash の適切なバージョンを選択するには、互換性マトリックスを参照してください。詳細については、Elastic のウェブサイトで「サポートマトリックス」を参照するか、OpenSearch のウェブサイトで「互換性マトリックス」を参照してください。
OpenSearch Service バージョン 1.0 以降を使用する場合は、ドメインの起動時に互換モードを有効にします。
ダウンロードしたソフトウェアの同期を維持するには、Red Hat Package Manager (RPM) を各インスタンスにダウンロードします。パイプラインでの単一障害点を防ぐために、Filebeat と Logstash を同じインスタンスで実行することは避けてください。
Filebeat をソース EC2 インスタンスにインストールする
Filebeat をソースインスタンスにインストールするには、次の手順を実行します。
-
次のコマンドを実行し、互換性のある Filebeat バージョンの RPM をダウンロードします。
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-8.15.2-x86_64.rpm -
次のコマンドを実行し、Filebeat の RPM ファイルをインストールします。
rpm -ivh filebeat-oss-8.15.2-x86_64.rpm
Logstash を別の EC2 インスタンスにインストールして構成する
次の手順を実行します。
-
次のコマンドを実行し、互換性のある Logstash の RPM ファイルをダウンロードします。
wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-8.15.2-x86_64.rpm -
次のコマンドを実行し、EC2 インスタンスに Java または OpenJDK をインストールします。
yum install java-1.8.0-*注: 上記のコマンドでは、Java バージョン 8 (OpenJDK 1.8) を使用しています。Logstash のすべてのバージョンは Java バージョン 8 をサポートしています。
-
次のコマンドを実行し、Logstash の RPM ファイルをインストールします。
rpm -ivh logstash-oss-8.15.2-x86_64.rpm -
次のコマンドを実行し、Logstash のデータディレクトリを開きます。
cd /usr/share/logstash/ -
次のコマンドを実行し、Logstash 用の OpenSearch Service プラグインをインストールします。
bin/logstash-plugin install logstash-output-opensearch -
Logstash プラグインのインストールを確認するには、次のコマンドを実行します。
bin/logstash-plugin list注: Logstash OSS 7.13 以降では、logstash-output-opensearch プラグインのみを使用してください。バージョン 7.12.1 は、logstash-output-elasticsearch プラグインと logstash-output-opensearch プラグインの両方をサポートしています。
-
構成用のディレクトリが存在することを確認するには、/etc/filebeat ディレクトリおよび /etc/logstash ディレクトリを参照します。
-
Logstash 経由でログを送信するには、/etc/filebeat/filebeat.yml に Filebeat 構成ファイルを作成します。
Filebeat 構成ファイルの例filebeat.inputs: - type: log enabled: true paths: - /var/log/*.log filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false setup.template.settings: index.number_of_shards: 1 index.codec: best_compression #output.elasticsearch: #hosts: ["your-domain-endpoint"] #protocol: "https" output.logstash: # The Logstash hosts hosts: ["Logstash-EC2-InstanceIP:5044"] setup.ilm.enabled: false ilm.enabled: false注: Logstash-EC2-InstanceIP:5044 を Logstash インスタンスの IP アドレスに、your-domain-endpoint をドメインエンドポイントに置き換えてください。ログを OpenSearch サービスに直接送信することもできます。詳細については、GitHub のウェブサイトで logstash-output-opensearch を参照してください。
-
/etc/logstash/conf.d/logstash.conf に Logstash 構成ファイルを作成します。
Logstash 構成ファイルの例:
input { beats { port => 5044 } } output { opensearch { hosts => ["https://domain-endpoint:443"] ssl => true index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" user => "my-username" password => "my-password" } }
注: domain-endpoint、my-username、my-password をそれぞれ実際の値に置き換えてください。 OpenSearch Service エンドポイントへの接続をテストするには、次のコマンドを実行します。
curl -XGET https://your-domain-endpoint
注: your-domain-endpoint をドメインエンドポイントに置き換えてください。 (オプション) 詳細アクセス制御 (FGAC) が有効な場合は、次のコマンドを実行します。
curl -u my-username:my-password -XGET https://your-domain-endpoint
注: your-domain-endpoint をドメインエンドポイントに置き換えてください。 次のコマンドを実行し、Filebeat サービスと Logstash サービスを開始します。
systemctl start filebeat
systemctl start logstash
- Filebeat ログが送信されたことを確認するには、OpenSearch Service ドメインに次の curl コマンドを実行します。
curl -XGET https://your-domain-endpoint/_cat/indices
注: your-domain-endpoint をドメインエンドポイントに置き換えてください。
Filebeat インデックスの出力例:
green open filebeat-7.16.2-2022.01.27 f97c4WnuQ-CtsAJJaJHUlg 1 1 1511515 0 249.7mb 124.7mb green open .kibana_1 Ioco6fUoSCGkaOvHNCL39g 1 1 1 0 7.4kb 3.7kb
green open filebeat-7.16.2-2022.01.27 f97c4WnuQ-CtsAJJaJHUlg 1 1 1511515 0 249.7mb 124.7mb green open .kibana_1 Ioco6fUoSCGkaOvHNCL39g 1 1 1 0 7.4kb 3.7kb green open filebeat-7.16.2-2022.01.28 4i8W0smlRGGFcQOaDMxonA 1 1 89 0 207.1kb 118.1kb
Amazon EC2 Linux で Filebeat、Logstash、OpenSearch Dashboards が正常に構成されている場合のパイプライン例を次に示します。
Filebeat > Logstash > Amazon OpenSearch Service/Dashboards
401、403 エラー、および Logstash x-pack のインストールエラーのトラブルシューティング
401 Unauthorized エラー
Logstash が "401 Unauthorized" エラーを返す場合、OpenSearch Service ドメインは、次のいずれかのセキュリティ機能を使用しています。
- FGAC
- Amazon Cognito 認証
この問題を解決するには、/etc/logstash/conf.d/logstash.conf に配置された Logstash 構成ファイルに認証情報を追加します。
設定例:
output { opensearch { hosts => ["https://your-domain-endpoint"] index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" ilm_enabled => false user => "my-username" password => "my-password" } }
注: your-domain-endpoint、my-username、my-password をそれぞれ、OpenSearch Service ドメインの値に置き換えてください。
403 Forbidden エラー
Logstash に OpenSearch Service へのアクセスに必要な AWS Identity and Access Management (IAM) ロールがない場合、"403 Forbidden" エラーが発生します。
この問題を解決するには、次の手順を実行します。
-
次のコマンドを実行し、Logstash 用の OpenSearch Service プラグインをインストールします。
bin/logstash-plugin install logstash-output-opensearch -
次のポリシーを作成し、IAM ロールにアタッチします。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttp*" ], "Resource": "[Amazon-OpenSearch-Domain-ARN]" } ] }注: Amazon-OpenSearch-Domain-ARN を OpenSearch Service ドメインの Amazon リソースネーム (ARN) に置き換えてください。
-
/etc/logstash/conf.d/logstash.conf に配置された Logstash 構成ファイルを更新します。
Logstash 構成ファイルの例:output { opensearch { hosts => ["domain-endpoint"] ssl => true region => "example_region" index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" } }注: domain-endpoint と example-region を OpenSearch Service ドメインの値に置き換えてください。
Logstash x-pack のインストールエラー
"x-pack plugin" エラーが原因で Logstash を起動できない場合は、次の手順を実行します。
-
次のレジストリファイルを開きます。
/usr/share/logstash/logstash-core/lib/logstash/plugins/registry.rb -
次のコード行を見つけます。
load_xpack unless LogStash::OSS -
コードを次の例示した内容に更新します。
#load_xpack unless LogStash::OSS -
x-pack プラグインの起動エラーを防ぐには、構成ファイルで Index Life Management (ILM) 設定を無効にします。
Filebeat では、ilm.enabled: false を指定します。
Logstash では、ilm_enabled => false を指定します。
