Simple Log Serviceでは、Dockerコンテナーからテキストログを収集できます。 このトピックでは、Logtailコンテナをデプロイし、アプリケーションコンテナからLogstoreにテキストログを収集する方法について説明します。
概要
Logtailコンテナを使用して、ホスト上の複数のアプリケーションコンテナからさまざまな形式のテキストログを収集できます。 異なるLogstoreに対してLogtail設定を作成し、Logtail設定をLogtailコンテナに配信するだけで済みます。 このようにして、Logtailコンテナは、指定された設定に基づいて、収集されたテキストログを対応するLogstoreに送信します。 このトピックでは、次の手順を実行してNGINXコンテナからテキストログを収集する方法について説明します。
Logtailを使用したログ収集に精通している場合は、プロンプトに従ってコンソールで直接操作を実行できます。
前提条件
プロジェクトと標準のLogstoreが作成されます。 詳細については、参照プロジェクトの作成とLogstoreの作成.
アプリケーションコンテナが作成され、ログが継続的に生成されます。
説明Logtailは増分ログのみを収集します。 Logtail構成がサーバーに配信されて適用された後にサーバー上のログファイルが更新されない場合、Logtailはファイルからログを収集しません。 詳細については、「Logtailのログ収集プロセス」トピックの「ログファイルの読み取り」セクションをご参照ください。
手順1: Logtailコンテナをインストールしてマシングループを作成
Logtailイメージをプルします。
ホストにログインします。 Simple Log Serviceプロジェクトが存在するリージョンに基づいて、
${region_id}
パラメーターの値を取得します。${region_id}
パラメーターを実際のリージョンIDに置き換え、次のコマンドを実行してLogtailイメージをプルします。重要各リージョンのIDの詳細については、「サポートされているリージョン」をご参照ください。 たとえば、SLSプロジェクトが中国 (杭州) リージョンにある場合、
${region_id}
パラメーターをcn-Hangzhou
に置き換える必要があります。サーバーが仮想プライベートクラウド (VPC) にある場合、
registry
をregistry-vpc
に置き換える必要があります。
docker pull registry.${region_id}.aliyuncs.com/log-service/logtail
Logtailコンテナを起動します。
パラメーター
パラメーター
説明
${region_name}
Simple Log Serviceプロジェクトが存在するリージョンのIDと、プロジェクトで使用されるネットワークタイプ。 各リージョンのIDの詳細については、「サポートされているリージョン」をご参照ください。 ネットワークタイプの選択方法の詳細については、「ネットワークタイプの選択」をご参照ください。
プロジェクトでインターネットを使用している場合は、
${region_id}-Internet
形式で値を指定します。 たとえば、プロジェクトが中国 (杭州) リージョンにある場合、値をcn-Hangzhou-internetに設定します。プロジェクトがAlibaba Cloud内部ネットワークを使用している場合は、
${region_id}
形式で値を指定します。 たとえば、プロジェクトが中国 (杭州) リージョンにある場合、値をcn-Hangzhouに設定します。
${aliyun_account_id}
Simple Log Serviceプロジェクトが属するAlibaba CloudアカウントのID。 IDの取得方法の詳細については、「ユーザー識別子の設定」トピックの「Simple Log Serviceプロジェクトが属するAlibaba CloudアカウントのIDの取得」をご参照ください。
${user_defined_id}
マシングループのカスタム識別子。 例:
user-defined-docker-1
カスタム識別子は、プロジェクトが存在するリージョンで一意である必要があります。パラメーターの説明に基づいて、次のコマンドの
${region_name}
、${aliyun_account_id}
、および${user_defined_id}
パラメーターを置き換え、次のコマンドを実行してLogtailコンテナーを起動します。docker run -d \ -v /:/logtail_host:ro \ -v /var/run/docker.sock:/var/run/docker.sock \ --env ALIYUN_LOGTAIL_CONFIG=/etc/ilogtail/conf/${region_name}/ilogtail_config.json \ --env ALIYUN_LOGTAIL_USER_ID=${aliyun_account_id} \ --env ALIYUN_LOGTAIL_USER_DEFINED_ID=${user_defined_id} \ registry.${your_region_name}.aliyuncs.com/log-service/logtail
重要次の条件が満たされている場合にのみ、Logtailコンテナのスタートアップパラメーターのカスタム設定を構成できます。
ALIYUN_LOGTAIL_CONFIG
、ALIYUN_LOGTAIL_USER_ID
、およびALIYUN_LOGTAIL_USER_DEFINED_ID
が設定されています。ホストの
/var/run
ディレクトリは、Logtailコンテナの/var/run
ディレクトリにマウントされます。ホストのルートディレクトリは、logtailコンテナの
/Logtail_host
ディレクトリにマウントされます。パラメーターが無効です: uuid=none
エラーメッセージが/usr/local/ilogtail/ilogtail.LOG
ログファイルに含まれている場合は、ホストにproduct_uuid
という名前のファイルを作成し、作成したファイルに169E98C9-ABC0-4A92-B1D2-AA6239C0D261
などの有効なuuidを入力します。logtailコンテナーの/sys/class/dmi/id/product_uuid
ディレクトリにファイルをマウントします。
カスタム識別子ベースのマシングループを作成します。
Simple Log Serviceコンソールにログインします。 [プロジェクト] セクションで、管理するプロジェクトをクリックします。
左側のナビゲーションウィンドウで、
を選択します。 マシングループリストで、 を選択します。マシングループの作成パネルでパラメーターを設定し、OKをクリックします。 下表に、各パラメーターを説明します。
パラメーター
説明
名前
マシングループの名前。 名前の条件は以下の通りです。
名前には、小文字、数字、ハイフン ( - )、アンダースコア ( _ ) のみ使用できます。
名前の先頭と末尾は、小文字または数字である必要があります。
名前の長さは 2 ~ 128 文字である必要があります。
重要マシングループを作成した後、マシングループの名前を変更することはできません。 作業は慎重に行ってください。
マシングループ識別子
マシングループの識別子タイプ。 この例では、[カスタム識別子] が選択されています。
Machine Groupトピック
必要に応じて、 マシングループのトピック。 トピックは、異なるサーバーによって生成されたログを識別するために使用されます。 詳細については、「ログトピック」をご参照ください。
カスタム識別子
指定されたカスタム識別子。Logtailコンテナを起動したときの
${user_defined_id}
パラメーターの値です。
マシングループのハートビートステータスを確認します。
[マシングループ] セクションで、作成したマシングループを見つけ、その名前をクリックします。 [マシングループの設定] ページで、マシングループの設定とサーバーのステータスを表示します。
サーバーのHeartbeat列の値がOKの場合、サーバーのLogtailはSimple Log Serviceに接続されています。
サーバーの [ハートビート] 列の値が [失敗] の場合、エラーが発生します。 エラーのトラブルシューティング方法の詳細については、ホスト環境のLogtailマシングループに関連するエラーのトラブルシューティングを行うにはどうすればよいですか?
重要マシングループの作成には約2分かかります。 マシングループが作成されていない場合、マシングループのハートビートステータスはFAILになります。 この場合、2分後に [更新] をクリックします。
ステップ2: Logtail設定の作成
タブで、表示するログストアをクリックします。
[Logtail設定] をクリックします。 [Logtail設定] ページで、[Logtail設定の追加] をクリックします。
[クイックデータインポート] ダイアログボックスで、[Dockerファイル-コンテナー] をクリックします。
[マシングループの構成] ステップで、ステップ1で作成したマシングループを選択して、マシングループを [応用サーバーグループ] セクションに追加します。 [次へ] をクリックします。
Logtailの設定ステップで、[設定名] および [ファイルパス] パラメーターを設定し、その他のパラメーターにはデフォルト値を使用します。 パラメーターの詳細については、「サーバーからのテキストログの収集」をご参照ください。 Logtailプラグインを追加してテキストログを処理することもできます。 詳細については、「データ処理用Logtailプラグインの概要」をご参照ください。 [次へ]をクリックします。
説明構成名: Logtail構成の名前。 名前には、小文字、数字、ハイフン ( - )、アンダースコア ( _ ) のみ使用できます。 先頭と末尾は小文字または数字である必要があります。
ファイルパス: アプリケーションコンテナ内のログファイルの絶対パス。 例:
/var/log/nginx/access.log
[クエリと分析の設定] ステップで、[自動インデックス生成] をクリックし、[更新] をクリックします。 これにより、収集したログをプレビューできます。
予約フィールド
デフォルトでは、収集された各ログに特定のフィールドが含まれます。 次の表では、フィールドについて説明します。
項目 | 説明 |
__source__ | LogtailコンテナのIPアドレス。 |
_container_ip_ | アプリケーションコンテナのIPアドレス。 |
__タグ __:__ ホスト名__ | ホスト名を示します。 |
__tag __:__ path__ | ログ収集のパス。 |
__タグ __:__ receive_time__ | SLSがログを受信した時刻。 |
__タグ __:__ user_defined_id__ | マシングループのカスタム識別子。 |
関連する API 操作
Logtailのステータスの表示
docker exec ${logtail_container_id} /etc/init.d/ilogtaild status
コマンドを実行して、Logtailのステータスを表示できます。
Logtailのバージョン番号、IPアドレス、および起動時間の表示
docker exec ${logtail_container_id} cat /usr/local/ilogtail/app_info.json
コマンドを実行して、Logtailに関する情報を表示できます。
Logtailの操作ログの表示
Logtailの操作ログは、/usr/local/ilogtail/
ディレクトリのilogtail.LOG
ファイルに保存されます。 ログファイルがローテーションされると、生成されたファイルは圧縮され、ilogtail.LOG.x.gz
として保存されます。 例:
[sudo@iZb****exh2Z ilogtail]# docker exec a287de895e40 tail -n 5 /usr/local/ilogtail/ilogtail.LOG
[2018-02-06 08:13:35.721864] [INFO] [8] [build/release64/sls/ilogtail/LogtailPlugin.cpp:104] logtail plugin Resume:start
[2018-02-06 08:13:35.722135] [INFO] [8] [build/release64/sls/ilogtail/LogtailPlugin.cpp:106] logtail plugin Resume:success
[2018-02-06 08:13:35.722149] [INFO] [8] [build/release64/sls/ilogtail/EventDispatcher.cpp:369] start add existed check point events, size:0
[2018-02-06 08:13:35.722155] [INFO] [8] [build/release64/sls/ilogtail/EventDispatcher.cpp:511] add existed check point events, size:0 cache size:0 event size:0 success count:0
[2018-02-06 08:13:39.725417] [INFO] [8] [build/release64/sls/ilogtail/ConfigManager.cpp:3776] check container path update flag:0 size:1
コンテナのstdoutとstderrはサンプルシナリオには適用されません。 次のstdoutとstderrを無視します。
start umount useless mount points, /shm$|/merged$|/mqueue$
umount: /logtail_host/var/lib/docker/overlay2/3fd0043af174cb0273c3c7869500fbe2bdb95d13b1e110172ef57fe840c82155/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/d5b10aa19399992755de1f85d25009528daa749c1bf8c16edff44beab6e69718/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/5c3125daddacedec29df72ad0c52fac800cd56c6e880dc4e8a640b1e16c22dbe/merged: must be superuser to unmount
......
xargs: umount: exited with status 255; aborting
umount done
start logtail
ilogtail is running
logtail status:
ilogtail is running
Logtailの再起動
Logtailを再起動するサンプルコード:
[sudo@iZb****xh2Z ilogtail]# docker exec a287de895e40 /etc/init.d/ilogtaild stop
kill process Name: ilogtail pid: 7
kill process Name: ilogtail pid: 8
stop success
[sudo@iZb****xh2Z ilogtail]# docker exec a287de895e40 /etc/init.d/ilogtaild start
ilogtail is running
関連ドキュメント
Dockerの使用方法の詳細については、「Dockerのインストール」をご参照ください。
Dockerコンテナからstdoutとstderrを収集する方法の詳細については、「Dockerコンテナからstdoutとstderrを収集する」をご参照ください。
アプリケーションコンテナーが実行されているホストからテキストログを収集する方法の詳細については、「サーバーからのテキストログの収集」をご参照ください。 デフォルトでは、ホストのルートディレクトリはlogtailコンテナの
/Logtail_host
ディレクトリにマウントされます。ログがLogstoreに収集された後、ログのインデックスを作成できます。 詳細については、「インデックスの作成」をご参照ください。 次に、収集したログを照会および分析できます。 詳細については、「ログの照会と分析」をご参照ください。
Logtailを使用してDockerコンテナからログを収集するときに発生するエラーのトラブルシューティング方法の詳細については、コンテナーからログを収集するときにエラーが発生した場合はどうすればよいですか?