Amazon Linux で Filebeat と Logstash を使用して OpenSearch Service に接続するにはどうすればよいですか?

所要時間4分
0

Amazon Linux で Filebeat と Logstash を使用して Amazon OpenSearch Service クラスターに接続していますが、エラーが発生します。

簡単な説明

Logstash を使用して Amazon OpenSearch Service に接続するには、以下の手順を実行してください:

1.    OpenSearch Service にログを転送するには、ポート 443 などのセキュリティポートを設定します。

2.    Filebeat、Logstash、OpenSearch Service の設定を更新します。

3.    Filebeat を、ソースの Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにインストールします。YAML 設定ファイルが正常にインストールおよび設定されていることを確認します。

4.    ログの送信元である別の Amazon EC2 インスタンスに Logstash をインストールします。
注: Logstash が正しくセットアップまたは設定されていないと、「401 Authorization」エラー、「403 Forbidden」エラー、x-pack インストールエラーのいずれかが発生します。

解決方法

セキュリティポートを設定する

Logstash からログを転送するようにセキュリティポートを設定します:

1.    Apache と Filebeat をインストールした EC2 インスタンスを作成して、インスタンスが Logstash から OpenSearch Service にログを転送できるようにします。

2.    EC2 インスタンスが OpenSearch Service の仮想プライベートクラウド (VPC) と同じセキュリティグループにあることを確認します。

3.    Logstash と OpenSearch Service の間でデータを送信できるように、セキュリティグループでポート 80、443、5044 が開いていることを確認します。

Filebeat、Logstash、OpenSearch Service の設定を更新する

従来の Elasticsearch バージョンの OpenSearch Service は、同じバージョンの Filebeat と Logstash を使用する場合に最も適切に動作します。次のサービスバージョンには、互換性のあるバージョンを使用してください:

  • Filebeat バージョン x.x
  • Logstash バージョン x.x (Log4j セキュリティパッチ用の v7.16.2 および v6.8.22)
  • 従来の Elasticsearch バージョン x.x での OpenSearch Service

前の例では、バージョン番号の「x.x」が設定と一致している必要があります。

注:

  • OpenSearch Service 1.x を互換モードで使用している場合、OpenSearch Service はそのバージョンを 7.10 と報告します。互換性マトリックスを確認して、Filebeat と Logstash の適切なバージョンを選択してください。詳細については、Elasticsearch ウェブサイトの「サポート一覧表」を参照してください。
  • OpenSearch Service バージョン 1.0 以降を使用している場合は、ドメインを初めて起動したときに互換モードが有効になっていることを確認してください。

ダウンロードしたソフトウェアの同期を維持するには、各 EC2 インスタンスに RPM をダウンロードします。パイプラインでの単一障害点を防ぐために、Filebeat と Logstash は同じ EC2 インスタンスで実行しないでください。

Filebeat をソース EC2 インスタンスにインストールする

1.    互換性のある Filebeat バージョンの RPM をダウンロードします:

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-7.16.2-x86_64.rpm

2.    Filebeat RPM ファイルをインストールします:

rpm -ivh filebeat-oss-7.16.2-x86_64.rpm

ログの送信元となる別の EC2 インスタンスに Logstash をインストールする

1.    互換性のある Logstash バージョンの RPM ファイルをダウンロードします:

wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-7.16.2-x86_64.rpm

注: この例では、互換モードが有効になっている OpenSearch Service バージョン 1.1 の Filebeat と Logstash のバージョン 7.16 を使用しています。

2.    EC2 インスタンスに Java または OpenJDK をインストールします:

yum install java-1.8.0-*

3.    rpm コマンドを実行して、Logstash 用にダウンロードした RPM ファイルをインストールします:

rpm -ivh logstash-oss-7.16.2-x86_64.rpm

注: Logstash を実行するには Java が必要です。この例では、Logstash のすべてのバージョンでサポートされている Java バージョン 8 (Open JDK 1.8) を使用しています。サポートされている Java と Logstash のバージョンの詳細については、Elasticsearch ウェブサイトの「サポート一覧表」を参照してください。

4.    OpenSearch Service 用の Logstash プラグインをインストールします:

bin/logstash-plugin install logstash-output-opensearch

5.    OpenSearch 用の Logstash プラグインがインストールされていることを確認します:

bin/logstash-plugin list

注: Logstash OSS バージョン 7.12.1 では、logstash-output-elasticsearch プラグインと logstash-output-opensearch プラグインの両方をサポートしています。Logstash OSS バージョン 7.13 以降では、logstash-output-opensearch プラグインのみをサポートしています。

6.    /etc/filebeat ディレクトリと /etc/logstash ディレクトリをチェックして、設定ファイルを確認します。

7.    Filebeat の場合は、出力を Logstash または OpenSearch Service (GitHub のウェブサイトから) のいずれかに更新してください。ログを送信するように指定し、サービスを開始します。
注: Filebeat を使用して OpenSearch Dashboards にテンプレートをアップロードしようとすると、アップロードは失敗します。Filebeat は、クラスターが x-pack プラグインをサポートしていることを前提としています。

8.    Filebeat の YAML 設定ファイルを更新して、Apache のアクセスログを Logstash に送信します。

YAML ファイルの例:

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: ["vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com:443"]
#protocol: "https"

output.logstash:
  # The Logstash hosts
  hosts: ["Logstash-EC2-InstanceIP:5044"]

setup.ilm.enabled: false
ilm.enabled: false

9.    Logstash の設定ファイルがポート 5044 で Filebeat にアクセスできることを確認します。ポート 5044 へのアクセスにより、Logstash は OpenSearch Service の VPC エンドポイントにリクエストを転送できます。

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"
  }
}

10.    Logstash インスタンスから OpenSearch Service のエンドポイントにアクセスできることを確認します:

curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com

11.    (オプション) きめ細かなアクセスコントロール (FGAC) を有効にした場合は、次のコマンドを実行します:

curl -u my-username:my-password -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com

注: タイムアウトの問題が発生した場合は、Logstash EC2 インスタンスが OpenSearch Service 用の VPC と同じセキュリティグループに属していることを確認してください。また、セキュリティグループでポート 80、443、5044 が開いていることを確認してください。

12.    次のコマンドを実行して、各インスタンスで Filebeat および Logstash サービスを開始します:

Filebeat

systemctl start filebeat (service filebeat start)

Logstash

cp /etc/logstash/logstash.conf /etc/logstash/conf.d/
systemctl start logstash (service logstash start)

13.    お使いの OpenSearch Service ドメインで cat index API コールを実行し、Filebeat のログが送信されていることを確認します。ログが正常に送信されると、次の応答が表示されます:

curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com/_cat/indices
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

デフォルトでは、Filebeat のインデックスは毎日ローテーションされます。

Filebeat のインデックスの出力例:

curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com/_cat/indices
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 Unauthorized」エラー

Logstash から「401 Unauthorized」エラーが表示される場合は、OpenSearch Service ドメインが FGAC または Amazon Cognito によって保護されていることを示しいます。FGAC では、ドメインのアクセスポリシーで定義する必要があるユーザーまたはロールによる署名付きリクエストが必要です。「401 Unauthorized」エラーが表示された場合は、Logstash の設定ファイルで FGAC を有効にしてください。

Logstash ファイルの例:

output {
  opensearch {
    hosts => ["https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com:443"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    ilm_enabled => false
    user => "my-username"
    password => "my-password"
  }
}

「403 Forbidden」エラー

Logstash を使用して OpenSearch Service にデータを送信すると、「403 Forbidden」エラーが表示されることがあります。このエラーは、Logstash に必要な権限がなく、AWS Identity Access Management (IAM) の ID の検証に失敗した場合に発生します。この問題を解決するには、IAM 認証情報を使用して OpenSearch Service へのリクエストに署名します。

Logstash を使用して OpenSearch Service のリクエストに署名する:

1.    OpenSearch Service 用の Logstash プラグインをインストールします:

bin/logstash-plugin install logstash-output-opensearch

2.    IAM ロールをインスタンスにアタッチします:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "es:ESHttp*"
      ],
      "Resource": "[Amazon-OpenSearch-Domain-ARN]"
    }
  ]
}

3.    Logstash の設定を更新して、Logstash の「opensearch」プラグインをパイプラインの出力として使用します:

output {
  opensearch {
    hosts => ["domain-endpoint"]
    ssl => true
    region => "us-east-1"
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  }
}

Logstash の x-pack インストールエラー

Logstash の起動時に x-pack でエラーが発生する場合は、レジストリファイルから x-pack プラグインを手動で無効にしてください。

x-pack プラグインを手動で無効にする:

1.    次のファイルを開きます:

/usr/share/logstash/logstash-core/lib/logstash/plugins/registry.rb

2.    load\ _xpack を検索してインラインでコメントします:

"load_xpack unless LogStash::OSS" >> "#load_xpack unless LogStash::OSS"

注: 設定ファイルで、Index Life Management (ILM) の設定の ilm.enabledilm\ _enabled が両方とも false に設定されていることを確認できます。設定ファイルでこれらの ILM 設定を無効にすると、x-pack プラグインの起動エラーが発生しなくなります。

関連情報

Logstash を使用して Amazon OpenSearch Service にデータをロードする

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ