スキップしてコンテンツを表示

Amazon Linux で Filebeat と Logstash を使用して OpenSearch Service に接続する方法を教えてください。

所要時間4分
0

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

解決策

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

Logstash を使用して OpenSearch サービスに接続するには、セキュリティポートを Logstash からログを転送するよう設定する必要があります。

次の手順を実行します。

  1. Filebeat 用の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動し、ログの送信元となる Logstash 用に別のインスタンスを起動します。
  2. EC2 インスタンスが OpenSearch Service の仮想プライベートクラウド (VPC) と同じセキュリティグループに属していることを確認します。
  3. セキュリティグループでポート 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 をソースインスタンスにインストールするには、次の手順を実行します。

  1. Filebeat 用に起動したインスタンスに SSH 経由で接続します

  2. 次のコマンドを実行し、互換性のある Filebeat バージョンの RPM をダウンロードします。

    wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-8.15.2-x86_64.rpm
  3. 次のコマンドを実行し、Filebeat の RPM ファイルをインストールします。

    rpm -ivh filebeat-oss-8.15.2-x86_64.rpm

Logstash を別の EC2 インスタンスにインストールして構成する

次の手順を実行します。

  1. Logstash 用に起動したインスタンスに SSH 経由で接続します

  2. 次のコマンドを実行し、互換性のある Logstash の RPM ファイルをダウンロードします。

    wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-8.15.2-x86_64.rpm
  3. 次のコマンドを実行し、EC2 インスタンスに Java または OpenJDK をインストールします。

    yum install java-1.8.0-*

    注: 上記のコマンドでは、Java バージョン 8 (OpenJDK 1.8) を使用しています。Logstash のすべてのバージョンは Java バージョン 8 をサポートしています。

  4. 次のコマンドを実行し、Logstash の RPM ファイルをインストールします。

    rpm -ivh logstash-oss-8.15.2-x86_64.rpm
  5. 次のコマンドを実行し、Logstash のデータディレクトリを開きます。

    cd /usr/share/logstash/
  6. 次のコマンドを実行し、Logstash 用の OpenSearch Service プラグインをインストールします。

    bin/logstash-plugin install logstash-output-opensearch
  7. Logstash プラグインのインストールを確認するには、次のコマンドを実行します。

    bin/logstash-plugin list

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

  8. 構成用のディレクトリが存在することを確認するには、/etc/filebeat ディレクトリおよび /etc/logstash ディレクトリを参照します。

  9. 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 を参照してください。

  10. /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-endpointmy-usernamemy-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
  1. 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-endpointmy-usernamemy-password をそれぞれ、OpenSearch Service ドメインの値に置き換えてください。

403 Forbidden エラー

Logstash に OpenSearch Service へのアクセスに必要な AWS Identity and Access Management (IAM) ロールがない場合、"403 Forbidden" エラーが発生します。

この問題を解決するには、次の手順を実行します。

  1. 次のコマンドを実行し、Logstash 用の OpenSearch Service プラグインをインストールします。

    bin/logstash-plugin install logstash-output-opensearch
  2. IAM ロールを作成します

  3. 次のポリシーを作成し、IAM ロールにアタッチします。

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

    注: Amazon-OpenSearch-Domain-ARN を OpenSearch Service ドメインの Amazon リソースネーム (ARN) に置き換えてください。

  4. /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-endpointexample-region を OpenSearch Service ドメインの値に置き換えてください。

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

"x-pack plugin" エラーが原因で Logstash を起動できない場合は、次の手順を実行します。

  1. 次のレジストリファイルを開きます。

    /usr/share/logstash/logstash-core/lib/logstash/plugins/registry.rb
  2. 次のコード行を見つけます。

    load_xpack unless LogStash::OSS
  3. コードを次の例示した内容に更新します。

    #load_xpack unless LogStash::OSS
  4. x-pack プラグインの起動エラーを防ぐには、構成ファイルで Index Life Management (ILM) 設定を無効にします。
    Filebeat では、ilm.enabled: false を指定します。
    Logstash では、ilm_enabled => false を指定します。

関連情報

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

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

関連するコンテンツ