サーバーに Docker をデプロイした後、ログを収集してクエリや分析を行うことができます。Docker のログは、標準出力とファイルログの 2 種類に分類されます。ファイルログはコンテナー内で生成され、サーバー上の指定されたファイルディレクトリに書き込まれます。標準出力は、コンテナーのリアルタイム出力ストリームです。このトピックでは、Logtail を使用してコンテナーから Logstore に標準出力を収集する方法について説明します。
概要
ホストに Docker をインストールした後、Logtail を使用して、Docker 環境にデプロイされたアプリケーションコンテナーから標準出力 (stdout) および標準エラー (stderr) ログを収集できます。収集されたログデータは Logstore に送信され、簡単にクエリおよび分析できます。
前提条件
プロジェクトと Logstore が作成されていること。詳細については、「プロジェクトの管理」および「Logstore の管理」をご参照ください。
ホストに Docker と Docker Compose がインストールされて使用されており、標準出力ログを継続的に生成できること。
説明Logtail は増分ログのみを収集します。Logtail 構成が適用された後にログファイルが更新されない場合、Logtail はそのファイルからログを収集しません。詳細については、「ログの読み取り」をご参照ください。
ステップ 1: Logtail コンテナーをインストールし、マシングループを作成する
Logtail イメージをプルする
ホストにログオンします。Simple Log Service プロジェクトのリージョンに基づいて、対応する
${region_id}を取得します。次に、次のコマンドの${region_id}プレースホルダーを置き換えて実行し、Logtail イメージをプルします。重要各リージョンの
${region_id}については、「リージョンとゾーン」をご参照ください。たとえば、中国 (杭州) の${region_id}はcn-hangzhouです。
#Logtail イメージをプルします: docker pull registry.${region_id}.aliyuncs.com/log-service/logtail:v2.1.11.0-aliyun #サーバーが Alibaba Cloud VPC にある場合は、次のコマンドを実行して Logtail イメージをプルします: docker pull registry-vpc.${region_id}.aliyuncs.com/log-service/logtail:v2.1.11.0-aliyunLogtail コンテナーを起動する
パラメーターの説明
パラメーター
説明
${region_id}Simple Log Service プロジェクトのリージョンに対応する
${region_id}を取得します。各リージョンの${region_id}については、「利用可能なリージョン」をご参照ください。ネットワークタイプの選択については、「Logtail のネットワークタイプ、起動パラメーター、および構成ファイル」をご参照ください。たとえば、プロジェクトが中国 (杭州) リージョンにある場合、Alibaba Cloud 内部ネットワークアクセスの場合
${region_id}はcn-hangzhouで、パブリックネットワークアクセスの場合cn-hangzhou-internetです。
${aliyun_account_id}Simple Log Service が属する Alibaba Cloud アカウントの ID。ID の取得方法の詳細については、「Alibaba Cloud アカウントの ID を取得する」をご参照ください。
${user_defined_id}マシングループのカスタム識別子を指定します (例:
user-defined-docker-1)。識別子は、プロジェクトが配置されているリージョン内で一意である必要があります。パラメーターの説明に基づいて、コマンドテンプレートの
${region_id}、${aliyun_account_id}、および${user_defined_id}プレースホルダーを置き換えます。次に、コマンドを実行して Logtail コンテナーを起動します。# Logtail コンテナーを起動します。${region_id}、${aliyun_account_id}、および ${user_defined_id} を置き換えます。 docker run -d \ -v /:/logtail_host:ro \ -v /var/run/docker.sock:/var/run/docker.sock \ --env ALIYUN_LOGTAIL_CONFIG=/etc/ilogtail/conf/${region_id}/ilogtail_config.json \ --env ALIYUN_LOGTAIL_USER_ID=${aliyun_account_id} \ --env ALIYUN_LOGTAIL_USER_DEFINED_ID=${user_defined_id} \ registry.${region_id}.aliyuncs.com/log-service/logtail:v2.1.11.0-aliyun重要次の条件が満たされている場合にのみ、Logtail コンテナーの起動パラメーターをカスタマイズできます。
起動時に、
ALIYUN_LOGTAIL_CONFIG、ALIYUN_LOGTAIL_USER_ID、およびALIYUN_LOGTAIL_USER_DEFINED_ID環境変数を構成する必要があります。ホストの
/var/runディレクトリを Logtail コンテナーの/var/runディレクトリにマウントします。ホストのルートディレクトリを Logtail コンテナーの
/logtail_hostディレクトリにマウントします。Logtail ログ (
/usr/local/ilogtail/ilogtail.LOG) にThe parameter is invalid : uuid=noneエラーメッセージが表示された場合は、ホストにproduct_uuidファイルを作成します。次に、169E98C9-ABC0-4A92-B1D2-AA6239C0D261などの有効な UUID をファイルに入力し、そのファイルを Logtail コンテナーの/sys/class/dmi/id/product_uuidディレクトリにマウントします。
docker psコマンドを実行して、コンテナーが正常に起動したかどうかを確認します。
カスタム識別子を使用してマシングループを作成する
Simple Log Service コンソールにログオンします。[プロジェクト] セクションで、目的のプロジェクトをクリックします。
左側のナビゲーションウィンドウで、を選択します。[マシングループ] リストで、を選択します。

[マシングループの作成] ページで、[名前] を入力します。マシングループ識別子として [カスタム識別子] を選択します。[カスタム識別子] フィールドに、ステップ 1 の
${user_defined_id}パラメーターの値 (例:user-defined-docker-1) を入力します。
パラメーター
説明
マシングループ Topic
任意。Topic は、異なるサーバーによって生成されたログを識別するために使用されます。
マシングループのステータスを確認する
[マシングループ] リストで、ターゲットマシングループをクリックします。[マシングループ構成] ページで、マシングループの構成とサーバーのステータスを表示できます。

ハートビートのステータスが [OK] の場合、構成は成功です。ステータスが [FAIL] の場合は、1 分待ってから [更新] をクリックします。[ハートビート] のステータスがまだ [FAIL] の場合は、次の項目を確認してください。
Logtail コンテナーとプロジェクトが同じリージョンにあるかどうかを確認できます。
ホストのセキュリティグループが Logtail からのアウトバウンドトラフィックを許可しているかどうかを確認できます。デフォルトのポートは 80 です。
問題のトラブルシューティング方法の詳細については、「コンテナーログ収集エラーのトラブルシューティング」をご参照ください。
ステップ 2: Logtail 構成を作成する
タブで、目的の Logstore をクリックします。
Logstore のメニューバーで、[Logtail 構成] をクリックし、次に [Logtail 構成の追加] をクリックします。

[クイックデータインポート] ページで、[Docker Stdout And Stderr - 旧バージョン] をクリックします。

ステップ 1 でマシングループを作成したため、[既存のマシングループを使用] をクリックします。

[マシングループ構成] ステップで、ステップ 1 で作成したマシングループを選択し、[>] をクリックして適用済みマシングループにマシングループを追加し、[次へ] をクリックします。

[Logtail 構成] ステップで、[構成名] を入力し、[次へ] をクリックします。

[クエリ分析構成] ステップで、[更新] をクリックして収集されたログをプレビューします。ログが表示されない場合は、コンテナーが標準出力ログを継続的に生成していることを確認してください。デフォルトでは、標準出力は /var/lib/docker/containers/<コンテナー ID>/<コンテナー ID>-json.log に保存されます。それでもログをプレビューできない場合は、詳細について「コンテナーログ収集エラーのトラブルシューティング方法」をご参照ください。

ステップ 3: 結果を表示する
Logtail は増分ログのみを収集します。Logtail 構成が適用された後、標準出力に対して新しいログが生成されない場合、Logtail は以前のログを収集しません。詳細については、「ログの読み取り」をご参照ください。

デフォルトでは、収集された各 Docker 標準出力ログには次のフィールドが含まれます。
フィールド | 説明 |
__source__ | Logtail コンテナーの IP アドレス。 |
__tag__:__hostname__ | Logtail が配置されている Docker ホストの名前。 |
__tag__:__receive_time__ | ログがサーバーに到着した時刻。 |
_time_ | データがアップロードされた時刻。例: |
_source_ | 入力ソースのタイプ (stdout または stderr)。 |
_image_name_ | イメージの名前。 |
_container_name_ | コンテナーの名前。 |
_container_ip_ | アプリケーションコンテナーの IP アドレス。 |
関連ドキュメント
Logtail の実行ステータスを表示する方法の詳細については、「Logtail のステータスを表示する」をご参照ください。
Docker の使用方法の詳細については、「Docker と Docker Compose のインストールと使用」をご参照ください。
Docker コンテナーからテキストログを収集するには、「Docker コンテナーログ (標準出力とファイル) を収集する」をご参照ください。
ホストからテキストログを収集するには、「ホストのテキストログを収集する」をご参照ください。デフォルトでは、ホストのルートディレクトリは Logtail コンテナーの
/logtail_hostディレクトリにマウントされます。ログが Logstore にアップロードされた後、ログをクエリおよび分析する前にインデックスを作成する必要があります。詳細については、「インデックスの作成」および「ログのクエリと分析のクイックスタート」をご参照ください。
Logtail を使用して Docker コンテナーログを収集するときに例外が発生した場合は、「コンテナーログ収集エラーのトラブルシューティング」をご参照ください。
> マシングループの作成