このトピックでは、ソース Alibaba Cloud アカウントの Elastic Compute Service (ECS) インスタンスからログを収集し、宛先 Alibaba Cloud アカウントの Simple Log Service プロジェクトに送信する方法について説明します。このソリューションでは、ソース ECS インスタンスで権限付与を設定できます。これにより、宛先アカウントの Logtail がログを収集し、一元的な管理と分析を行うことができます。
クイックスタート
利用シーン
マルチアカウントのクラウド環境では、一般的に以下の理由でログの一元化が必要になる場合があります。
統合されたサービス監視:異なるビジネスアカウントのアプリケーションログとシステムログを中央の場所に保存します。これにより、統合された監視、アラート、トラブルシューティングが簡素化されます。
セキュリティとコンプライアンスの監査:すべての操作ログとセキュリティログを専用のセキュリティまたは監査アカウントに集約し、コンプライアンス要件を満たします。
ビジネス移行:ある Alibaba Cloud アカウントから別の Alibaba Cloud アカウントへのビジネス移行中に、ログ収集タスクを新しいアカウントに移行します。
このトピックでは、ログ収集タスクをソースアカウントから宛先アカウントに移行する例を使用します。
ソリューションアーキテクチャ
このソリューションでは、ファイルベースの権限付与に基づく信頼モデルを使用します。ソースアカウントの ECS インスタンスに特定の権限付与ファイルと ID ファイルを作成できます。これにより、宛先アカウントは Logtail を使用してこれらのインスタンスからログを収集する権限を付与されます。
ワークフローは以下の通りです。
ソースアカウント (アカウント B) の各 ECS インスタンスで、権限付与ファイルを作成します。ファイル名は宛先アカウント (アカウント A) の UID です。
同じ ECS インスタンスで、カスタム ID を含むファイルを作成します。この ID は、宛先アカウントでサーバーをグループ化するために使用されます。
ECS インスタンス上の Logtail クライアントが権限付与ファイルを認識すると、宛先アカウント (アカウント A) の Simple Log Service にハートビートを送信し、カスタム ID をレポートします。
宛先アカウント (アカウント A) の Simple Log Service コンソールで、このカスタム ID を使用するマシングループを作成します。ハートビートが正常な ECS インスタンスは、自動的にこのマシングループに追加されます。
Logtail 収集設定をマシングループに適用します。Logtail は設定に基づいてログを収集し、宛先アカウント (アカウント A) の Logstore に送信します。
アカウント間でデータを処理する場合、権限付与にはカスタムロールを使用する必要があります。
最初の [ロール ARN] は、データ変換ジョブにこのロールを偽装してソース Logstore からデータを読み取る権限を付与します。詳細については、「ソース Logstore に対する読み取り専用権限を RAM ロールに付与する」をご参照ください。
2番目の [ロール ARN] は、データ変換ジョブにこのロールを偽装して変換後のデータを宛先 Logstore に書き込む権限を付与します。詳細については、「異なるアカウントに属する宛先 Logstore にデータを書き込む権限を RAM ロールに付与する」をご参照ください。
操作手順
ステップ 1:ソース ECS インスタンスでの権限付与と ID の設定
ソースアカウントの ECS インスタンスに権限付与ファイルと ID ファイルを作成します。これにより、宛先アカウントがログを収集できるようになり、マシングループを作成するための一意の ID が提供されます。
ソースアカウントの ECS インスタンスにログインします。
次のスクリプトを実行して、権限付与と ID の設定を完了します。スクリプト内の
{TARGET_ACCOUNT_ID}と{YOUR_MACHINE_GROUP_ID}を実際の値に置き換えてください。
#!/bin/bash
# 宛先アカウント (アカウント A) の 16 桁の Alibaba Cloud アカウント ID に置き換えます。
TARGET_ACCOUNT_ID="{TARGET_ACCOUNT_ID}"
# このマシングループの一意の ID を定義します。
# 「my-app-prod-servers」など、ビジネス名と環境名を組み合わせたものを使用します。
MACHINE_GROUP_ID="{YOUR_MACHINE_GROUP_ID}"
# 1. 権限付与ファイルのディレクトリを作成します。
sudo mkdir -p /etc/ilogtail/users
# 2. 権限付与ファイルを作成します。ファイル名は宛先アカウント ID です。これにより、そのアカウントに収集権限が付与されます。
sudo touch "/etc/ilogtail/users/${TARGET_ACCOUNT_ID}"
# 3. カスタム ID ファイルを作成します。このファイルは、宛先アカウントでマシンを識別し、グループ化するために使用されます。
echo "${MACHINE_GROUP_ID}" | sudo tee /etc/ilogtail/user_defined_id > /dev/null
# 4. Logtail サービスを再起動して設定を適用します。
# システムが systemd を使用していない場合は、「sudo /etc/init.d/ilogtaild restart」を実行します。
sudo systemctl restart ilogtail
echo "設定が完了しました。宛先アカウントの Simple Log Service コンソールでマシングループのハートビートステータスを確認してください。"
(任意) 設定の確認
ファイルが作成されたか確認します:
sudo ls -l /etc/ilogtail/users/およびsudo cat /etc/ilogtail/user_defined_id。Logtail サービスのステータスを確認します:
sudo systemctl status ilogtail。Logtail のログを表示して、ハートビートが送信されていることを確認します:
sudo tail -n 100 /var/log/ilogtail/ilogtail.LOG | grep Heartbeat。
ステップ 2:宛先アカウントでのマシングループの作成
宛先アカウントの Simple Log Service コンソールで、前のステップで設定したカスタム ID を使用してソースアカウントの ECS インスタンスを識別し、管理するためのマシングループを作成します。
宛先アカウント (アカウント A) を使用して Simple Log Service コンソール にログインします。
[Projects] ページで、宛先プロジェクトをクリックします。
ナビゲーションウィンドウで、[リソース] > [マシングループ] を選択します。
[マシングループの作成] をクリックします。
[マシングループの作成] ダイアログボックスで、次のパラメーターを設定します。
マシングループ名:
cross-account-app-serversのようなカスタム名を入力します。マシングループタイプ: [カスタム ID] を選択します。
カスタム ID: ステップ 1 のスクリプトで設定した
MACHINE_GROUP_IDの値を入力します。内容が同一であり、余分なスペースや改行が含まれていないことを確認してください。
[OK] をクリックします。
[マシングループ] リストで、新しいマシングループを見つけてその名前をクリックし、詳細ページに移動します。1〜3 分待ってからページをリフレッシュします。[ハートビート] ステータスが [OK] になるはずです。
ステップ 3:Logtail 収集設定の作成と適用
ログ収集ルールを作成し、それをマシングループに適用してログの収集を開始します。
宛先アカウントの Simple Log Service コンソールで、宛先のプロジェクトと Logstore に移動します。
[クイック統合] > [データインポート] を選択し、必要に応じて [正規表現 - テキストログ] または他のログタイプを選択します。
[データインポート] ウィザードの [マシングループの選択] ステップで、前のステップで作成したマシングループを [ソースマシングループ] リストから [適用済みマシングループ] リストに移動し、[次へ] をクリックします。
ログパスや収集パターンなど、Logtail 収集ルールを設定します。
重要スムーズな移行と追加コストの発生を避けるため、宛先アカウントでのデータ収集が安定していることを確認してください。その後、すぐにソースアカウント (アカウント B) の Simple Log Service コンソールにログインし、元の Logtail 収集設定を削除または無効化してください。
[データのプレビューとインデックスの設定] ステップを完了し、[次へ] をクリックします。Simple Log Service はデフォルトでフルテキストインデックスを有効にします。必要に応じてフィールドインデックスを設定することもできます。
背景情報
サーバーに Logtail をインストールしてログを収集した後、Simple Log Service プロジェクトを所有する Alibaba Cloud アカウントの ID にユーザー ID を設定する必要があります。これにより、そのアカウントは Logtail を使用してサーバーからログを収集する権限を付与されます。この設定を行わないと、マシングループでサーバーのハートビートが失敗し、Logtail が Simple Log Service にログを送信できなくなります。
例えば、ある e コマース企業が Alibaba Cloud 中国 (杭州) リージョンの ECS クラスターで 2 つのアプリケーションを実行しているとします。同社は同じリージョンの Simple Log Service を使用してログを管理しています。
アプリケーション A は、Alibaba Cloud アカウント A (UID: 12****456) の下の Linux ECS クラスターにデプロイされており、そのアカウントの Simple Log Service をログ管理に使用しています。
アプリケーション B は、Alibaba Cloud アカウント B (UID: 17****397) の下の Linux ECS クラスターにデプロイされており、そのアカウントの Simple Log Service をログ管理に使用しています。
同社はビジネス戦略を変更し、ログ収集を一元化することにしました。両方のアプリケーションからのすべてのログは、Alibaba Cloud アカウント A (UID: 12****456) の下の Simple Log Service に収集されます。各アプリケーションのログは、同じ Simple Log Service プロジェクト内の別々の Logstore に収集されます。これを行うには、アプリケーション B のログを収集・保存するために、新しい Logtail 収集設定、マシングループ、および Logstore を作成する必要があります。アプリケーション A のログ収集は変更されず、元の Logtail 収集設定、マシングループ、および Logstore を引き続き使用します。

ステップ 1:ユーザー ID ファイルの作成
Alibaba Cloud アカウント B に属する ECS サーバーにログインします。
重要ECS クラスター B の各 ECS サーバーにユーザー ID ファイルを作成する必要があります。
次のコマンドを実行して、ユーザー ID ファイルを作成します。
ユーザー ID を Alibaba Cloud アカウント A に設定します。これにより、Alibaba Cloud アカウント A の ID を名前とするファイルが作成されます。詳細については、「ユーザー ID の設定」をご参照ください。
touch /etc/ilogtail/users/12****456
ステップ 2:カスタム ID ベースのマシングループの作成
ECS サーバー上にマシングループのカスタム ID ファイルを作成します。
重要ECS クラスター B の各 ECS サーバーにマシングループのカスタム ID ファイルを作成する必要があります。
Alibaba Cloud アカウント B に属する ECS サーバーにログインします。
指定されたディレクトリに /etc/ilogtail/user_defined_id ファイルを作成し、カスタム ID を追加します。
例えば、カスタム ID を
application_bに設定するには、ファイルにapplication_bと入力して保存します。ファイルパスの詳細については、「カスタム ID ベースのマシングループの作成」をご参照ください。
Simple Log Service コンソールでマシングループを作成します。
Alibaba Cloud アカウント A を使用して、Simple Log Service コンソールにログインします。
[Project List] エリアで、宛先プロジェクトをクリックします。
ナビゲーションウィンドウで、 を選択します。
[マシン グループ] の右にある をクリックします。
[マシン グループの作成] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
[カスタム識別子] には、ステップ 1 で設定したカスタム識別子を設定します。 その他のパラメーターの詳細については、「カスタム識別子ベースのマシングループを作成する」をご参照ください。

マシングループ内のサーバーのハートビートステータスが OK であることを確認します。
マシングループリストで、宛先マシングループをクリックします。
[マシン グループ設定] ページで、同じカスタム識別子を使用する ECS サーバーとそのハートビートステータスを確認します。
[ハートビート] のステータスが [OK] の場合、ECS サーバーが Simple Log Service に接続されていることを示します。 ステータスが [FAIL] の場合は、「Logtail マシングループにハートビートがない」をご参照ください。

ステップ 3:ログの収集
Alibaba Cloud アカウント A で Simple Log Service コンソール にログインします。
[クイック統合] をクリックします。

[データ統合] ダイアログボックスで、 [Regex - テキストログ] を選択します。
[データ統合] ウィザードで、宛先のプロジェクトと Logstore を選択し、[次へ] をクリックします。
[マシングループ設定] を構成します。
[シナリオ] を [ホストシナリオ] に設定します。
[インストール環境] を [ECS] に設定します。
ステップ 2 で作成したマシングループを [ソースマシングループ] から [適用先マシングループ] に移動し、次に [次へ] をクリックします。
Logtail コレクション構成を作成し、[次へ] をクリックします。
パラメーターの詳細については、「フル正規表現モードでログを収集する」をご参照ください。
重要デフォルトでは、1 つのファイルに一致できる Logtail 収集設定は 1 つだけです。アカウント B の収集設定がまだアクティブなため、アカウント A の新しい設定は有効になりません。次のいずれかの方法でアカウント A の設定を有効にできます。
アカウント B のログ収集を停止します。これを行うには、アカウント B で Simple Log Service コンソールにログインし、宛先マシングループから Logtail 収集設定を削除します。詳細については、「指定したマシングループに Logtail 設定を適用する」をご参照ください。
アカウント A に強制収集設定を追加します。詳細については、「1 つのファイルから複数回ログを収集する方法」をご参照ください。
Logtail 収集設定を作成した後、重複したログ収集を防ぐために、Alibaba Cloud アカウント B の元の設定を削除してください。詳細については、「Logtail 設定の削除」をご参照ください。

データをプレビューし、インデックスを設定してから、[次へ] をクリックします。
Simple Log Service はデフォルトでフルテキストインデックス機能を有効にします。収集したログに基づいて、手動または自動でフィールドインデックスを設定することもできます。詳細については、「インデックスの作成」をご参照ください。
関連操作
Alibaba Cloud アカウント B の Logstore から現在の Logstore に既存データを移行するには、ソース Logstore でデータ変換ジョブを作成してデータをコピーできます。詳細については、「Logstore からデータをコピーする」をご参照ください。
アカウント間でデータを処理する場合、権限付与にはカスタムロールを使用する必要があります。この例ではカスタムロールを使用します。
最初の [ロール ARN] は、データ変換ジョブにこのロールを偽装してソース Logstore からデータを読み取る権限を付与します。ロール権限の設定方法の詳細については、「ソース Logstore に対する読み取り専用権限を RAM ロールに付与する」をご参照ください。
2番目の [ロール ARN] は、データ変換ジョブにこのロールを偽装して変換後のデータを宛先 Logstore に書き込む権限を付与します。ロール権限の設定方法の詳細については、「異なるアカウントに属する宛先 Logstore にデータを書き込む権限を RAM ロールに付与する」をご参照ください。
> [マシン グループの作成]