このトピックでは、Alibaba Cloudアカウント全体でcontainer Service for Kubernetes (ACK) からコンテナログを収集する方法について説明します。
背景情報
たとえば、eコマース企業には、中国 (杭州) リージョンのACKクラスターにデプロイされた2つのeコマースアプリケーションがあります。 企業は、中国 (杭州) リージョンにある2つのSimple Log Serviceプロジェクトを使用してログを管理します。
アプリケーションAは、Alibaba CloudアカウントA (12 **** 456) に属するACKクラスターにデプロイされ、アカウントがログを管理するためにSimple Log Serviceがアクティブ化されます。
アプリケーションBは、Alibaba CloudアカウントB (17 **** 397) に属するACKクラスターにデプロイされ、アカウントがログを管理するためにSimple Log Serviceがアクティブ化されます。
企業は、Alibaba CloudアカウントA (12 **** 456) に対して有効化されているSimple Log Serviceを使用して、2つのアプリケーションのログを収集し、同じプロジェクトの2つのログストアにログを保存したいと考えています。 この場合、Logtail設定、マシングループ、およびLogstoreを作成して、アプリケーションBのログを収集して保存する必要があります。アプリケーションa用に設定されているLogtail設定、マシングループ、およびLogstoreは変更されません。
手順1: Alibaba CloudアカウントのIDをユーザー識別子として設定する
Alibaba CloudアカウントAのIDをユーザー識別子として設定します。
Alibaba CloudアカウントBでACKコンソールにログインします。
[クラスター] ページで、管理するクラスターをクリックします。
左側のナビゲーションウィンドウで、 を選択します。
名前空間パラメーターをkube-systemに設定します。 [ConfigMap] リストで、alibaba-log-configurationを見つけ、[操作] 列の [編集] をクリックします。
[編集] パネルで、次の設定を行い、[OK] をクリックします。
Alibaba CloudアカウントAのIDをlog-ali-uidファイルに追加し、log-machine-groupパラメーターの値 (例: k8s-group-cc47 **** 54428) を取得します。 マシングループを作成するときに、[カスタム識別子] パラメーターの値を指定します。
複数のアカウントIDをコンマ (,) で区切ります。 例:
17 **** 397,12 **** 456
設定を有効にするためにlogtail-dsを再起動します。
左側のナビゲーションウィンドウで、 を選択します。
DaemonSetsリストで、logtail-dsを見つけ、[操作] 列の [編集] をクリックします。
[環境変数] セクションで、[追加] をクリックします。
カスタム変数を追加し、任意のキーと値のペアを指定します (例: random_id: 439157431651471905349) 。
[更新] をクリックします。
logtail-dsの詳細ページで、各コンテナーポッドが [実行中] 状態であるかどうか、および各ポッドが作成された時刻が設定を更新した時刻と同じであるかどうかを確認します。
ステップ2: マシングループを作成する
Alibaba CloudアカウントAでLog Serviceコンソールにログインします。
[プロジェクト] セクションで、管理するプロジェクトをクリックします。
左側のナビゲーションウィンドウで、 を選択します。
マシングループタブで、 を選択します。
[マシングループの作成] パネルでパラメーターを設定し、次の図に示すように [OK] をクリックします。
[カスタム識別子] フィールドに、ステップ1: Alibaba CloudアカウントのIDをユーザー識別子として設定で取得したマシングループ識別子を入力します (例: k8s-group-cc47 **** 54428) 。 その他のパラメーターについては、「カスタム識別子ベースのマシングループの作成」をご参照ください。
、マシングループ内の各サーバーのハートビートステータスがOKかどうかを確認します。
マシングループリストで、作成したマシングループをクリックします。
[マシングループの設定] ページで、各ECS (Elastic Compute Service) インスタンスのステータスを表示します。
HeartbeatステータスがOKの場合、ECSインスタンスはSimple Log Serviceに接続されています。 ステータスがFAILの場合、「Logtailマシングループにハートビートがない場合の対処方法」をご参照ください。
ステップ3: Logtail設定の作成
Alibaba CloudアカウントAでLog Serviceコンソールにログインします。
[データのインポート] セクションで、[Kubernetes - Object] をクリックします。
プロジェクトとLogstoreを選択します。 そして、[次へ] をクリックします。
[既存のマシングループの使用] をクリックします。
手順2: マシングループの作成で作成したマシングループを選択し、[ソースサーバーグループ] セクションから [応用サーバーグループ] に移動し、[次へ] をクリックします。
Logtail設定のパラメーターを設定し、[次へ] をクリックします。
パラメーターの詳細については、「Simple Log Serviceコンソールを使用してDaemonSetモードでコンテナテキストログを収集する」をご参照ください。
重要デフォルトでは、ログファイルからログを収集するために使用できるLogtail設定は1つだけです。 Alibaba CloudアカウントBでのLogtailの収集プロセスは停止されません。 この場合、Alibaba CloudアカウントAのLogtail設定は有効になりません。 Alibaba CloudアカウントAのLogtail設定が有効になるようにするには、次のいずれかの方法を使用します。
Alibaba CloudアカウントBで収集プロセスを停止します。収集プロセスを停止するには、Alibaba CloudアカウントBを使用してSimple log Serviceコンソールにログインし、マシングループから既存のLogtail設定を削除します。 詳細については、「マシングループの管理」をご参照ください。
Alibaba CloudアカウントAのLogtail設定に強制収集設定を追加します。詳細については、ファイル内のログの複数のコピーを収集するにはどうすればよいですか? をご参照ください。
Logtail設定を作成した後、Alibaba CloudアカウントBの既存のLogtail設定を削除して、重複したログ収集を防ぎます。 詳細については、「Logtail設定の削除」をご参照ください。
データをプレビューし、インデックスを設定し、[次へ] をクリックします。
デフォルトでは、Simple Log Serviceはフルテキストインデックス作成を有効にします。 手動モードまたは自動モードで収集されたログに基づいて、フィールドインデックスを設定できます。 詳細については、「インデックスの作成」をご参照ください。
関連する API 操作
Alibaba CloudアカウントBから現在のLogstoreに履歴データを移行する場合は、元のLogstoreでデータ変換ジョブを作成してから、現在のLogstoreにデータをレプリケートできます。 詳細については、「Logstoreからのデータの複製」をご参照ください。
Alibaba Cloudアカウント間でデータを変換するデータ変換ジョブを作成する場合、カスタムロールまたはAccessKeyペアを使用して、ジョブに必要な権限を付与する必要があります。 この例では、カスタムロールが使用されています。
最初のロールARNは、カスタムロールまたはAccessKeyペアに、ソースLogstoreからデータを読み取るために必要な権限を付与するために使用されます。 RAMロールに必要な権限を付与する方法については、「RAMロールにソースログストアの読み取り専用権限を付与する」をご参照ください。
2番目のロールARNは、変換結果を宛先Logstoreに書き込むために必要な権限をカスタムロールまたはAccessKeyペアに付与するために使用されます。 RAMロールに必要な権限を付与する方法については、「Alibaba Cloudアカウント全体の宛先Logstoreにデータを書き込む権限をRAMロールに付与する」をご参照ください。