ログファイルのデータを Alibaba Cloud Elasticsearch に移行する必要があるが、厳密なリアルタイム性は要求されない場合、Elastic Compute Service (ECS) 上で自己管理型の Logstash インスタンスを構築することが実用的なソリューションです。本トピックでは、ECS 上への Logstash のデプロイ、ログファイルを読み取るパイプラインの構成、およびレコードを Elasticsearch クラスターへストリーミングする方法について説明します。
Logstash パイプラインの仕組み
Logstash パイプラインは、以下の 3 つのステージから構成されます:
[入力] → [フィルター] → [出力]入力:ログファイルなどのソースからデータを読み取ります
フィルター:データを解析・変換します(任意)
出力:処理済みのデータを Elasticsearch などの送信先に書き込みます
本トピックのすべての例では、ファイル入力、任意のフィルター、および Elasticsearch 出力を使用します。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
自動インデックス作成が有効化された Alibaba Cloud Elasticsearch クラスター(本トピックでは Standard Edition、バージョン V8.5.1 を使用)を準備済みであること。詳細については、「Alibaba Cloud Elasticsearch クラスターの作成」および「Elasticsearch クラスターへのアクセスと構成」をご参照ください。
Elasticsearch クラスターと同じリージョン、ゾーン、および仮想プライベートクラウド(VPC)内に ECS インスタンスを準備し、両サービス間でネットワーク接続が可能であること。詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
ECS インスタンスに JDK Temurin 17 以降がインストールされています。詳細については、「JDK のインストール」および「Logstash と JVM の互換性」をご参照ください。
移行対象のログデータを準備済みであること。本トピックでは、ECS のログデータを例として使用します。
手順 1:(任意)ロールおよびユーザーの作成
自己管理型 Logstash クラスターを Alibaba Cloud Elasticsearch に接続するには、Elasticsearch ユーザーが必要です。テスト用途には組み込みの elastic ユーザーを使用できますが、本番環境では専用のユーザーを作成することを推奨します。
本番環境では専用のユーザーを使用してください。elastic ユーザーは制限のないスーパーユーザー権限を持ち、セキュリティリスクを引き起こす可能性があります。
Elasticsearch では、logstash_system ユーザーがデフォルトで無効化されています。logstash_system という名前のユーザーを作成しないでください。代わりに、ユーザーを作成し、logstash_system ロールを割り当ててください。
ロールの作成
logstash-* インデックスに対する読み取りおよび書き込み権限を持つロールを作成します。
Elasticsearch クラスターの Kibana コンソールにログインします。詳細については、「Kibana コンソールへのログイン」をご参照ください。
左上隅の
アイコンをクリックし、管理 > スタック管理 を選択します。左側ナビゲーションウィンドウで、セキュリティ > ロール を選択します。
ロールの作成 をクリックします(ロール ページの右上隅)。以下のパラメーターを設定します:
パラメーター 説明 ロール名 ロールのカスタム名 インデックス logstash-*権限 read、write、create、delete、create_indexロールの作成 をクリックします。
ユーザーの作成
Logstash のモニタリング用ユーザーを作成し、logstash_system ロールを割り当てます。Kibana コンソールまたは CLI のいずれかを使用できます。
オプション 1:Kibana コンソールを使用
Kibana コンソールにログインします。詳細については、「Kibana コンソールへのログイン」をご参照ください。
アイコンをクリックし、管理 > スタック管理 を選択します。左側ナビゲーションウィンドウで、セキュリティ > ユーザー を選択します。
ユーザーの作成 をクリックします(ユーザー ページの右上隅)。
以下のパラメーターを設定します:
パラメーター 説明 ユーザー名 ユーザーのカスタム名(例: logstash_system_monitorロール logstash_systemユーザーの作成 をクリックします。
オプション 2:CLI を使用
以下のコマンドを ECS インスタンスから実行してユーザーを作成します。プレースホルダーを実際の値に置き換えてください。
curl -u elastic:<es-password> -XPOST http://<instanceId>.elasticsearch.aliyuncs.com:9200/_xpack/security/user/logstash_system_monitor -d '{"password" : "<logstash-monitor-password>","roles" : ["logstash_system"],"full_name" : "<your full name>"}'| プレースホルダー | 説明 |
|---|---|
<es-password> | elastic ユーザーのパスワード(Kibana へのログインにも使用) |
<instanceId> | Elasticsearch クラスターの ID(基本情報 ページに記載) |
<logstash-monitor-password> | logstash_system_monitor ユーザーのパスワード |
<your full name> | ユーザーの表示名 |
ユーザーが作成されると、以下の図に示す結果が返されます。

手順 2:ECS インスタンスへの Logstash のインストール
ECS インスタンスに接続してください。「ECS インスタンスへの接続」をご参照ください。
Elastic のウェブサイトから、ご使用の Elasticsearch クラスターのバージョンに対応する Logstash パッケージをダウンロードします。Logstash V8.5.1 の場合:
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.5.1-linux-x86_64.tar.gzLogstash V7.4.0 の場合:
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.4.0.tar.gzパッケージを展開します:
tar -xzvf logstash-8.5.1-linux-x86_64.tar.gz
手順 3:Logstash パイプラインの構成および実行
Logstash ディレクトリに移動します:
cd logstash-8.5.1パイプライン構成ファイルを作成します:
touch test.conftest.confに以下の構成を追加します:パラメーター 説明 path監視対象のログファイルのパス(例: /var/log/messageshostsElasticsearch クラスターエンドポイント。プレースホルダー <instanceId>を実際のクラスター ID に置き換えます(例:http://es-cn-45xxxxxxxxxxxxju.elasticsearch.aliyuncs.com:9200indexターゲットインデックス名。手順 1 で作成したロール権限に一致させるため、 logstash-*を使用しますuserElasticsearch のユーザー名。特殊文字によるエラーを回避するため、値を二重引用符で囲んでください passwordElasticsearch のパスワード。特殊文字によるエラーを回避するため、値を二重引用符で囲んでください input { file { path => "/var/log/messages" } } filter { } output { elasticsearch { hosts => ["http://<instanceId>.elasticsearch.aliyuncs.com:9200"] index => "<index-name>" user => "<user-name>" password => "<logstash-password>" } }Logstash は多様な入力、フィルター、および出力プラグインをサポートしています。完全な構成構文については、「構成ファイルの構造」をご参照ください。
パイプラインを起動します:
bin/logstash -f test.confLogstash は構成済みのログファイルを監視し、新規の行が書き込まれると、それを Elasticsearch へ送信します。
手順 4:移行済みデータの確認
Kibana コンソールにログインします。詳細については、「Kibana コンソールへのログイン」をご参照ください。
アイコンをクリックし、管理 > Dev Tools を選択します。コンソール タブで、以下のコマンドを実行します:
GET /logstash-*/_search結果より、ログデータが Elasticsearch に正しくインデックス化されていることが確認できます。
手順 5:(任意)Logstash ノードのモニタリング
X-Pack モニタリングを有効化することで、Kibana の スタックモニタリング ダッシュボードで Logstash のメトリックを確認できます。
モニタリング構成ファイルを開きます:
vim logstash-8.5.1/config/logstash.yml以下のパラメーターのコメントを解除し、値を設定します:
パラメーター 説明 xpack.monitoring.enabledモニタリングを有効化するには trueを設定します。デフォルト値:falsexpack.monitoring.elasticsearch.usernameLogstash モニタリング用に作成したユーザー名(本例では elastic ユーザーを使用) xpack.monitoring.elasticsearch.passwordモニタリングユーザーのパスワード xpack.monitoring.elasticsearch.hostsElasticsearch クラスターエンドポイント(例: http://es-cn-nwy3fwjp8xxxxxxx.elasticsearch.aliyuncs.com:9200xpack.monitoring.enabled: true xpack.monitoring.elasticsearch.username: "<user-name>" xpack.monitoring.elasticsearch.password: "<logstash-password>" xpack.monitoring.elasticsearch.hosts: ["http://es-cn-nwy3fwjp8xxxxxxx.elasticsearch.aliyuncs.com:9200"]更新後の構成で Logstash を再起動します:
cd logstash-8.5.1 bin/logstash -f test.confKibana コンソールにログインし、
アイコンをクリックして 管理 > スタックモニタリング を選択します。(任意)ルールの作成 ダイアログボックスで OK をクリックします。
クラスター概要 ページで、Logstash のモニタリングデータを確認します。