すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:コンテナーからログを収集するときにエラーが発生した場合はどうすればよいですか?

最終更新日:Aug 23, 2024

Logtailを使用して標準のDockerコンテナまたはKubernetesコンテナからログを収集すると、エラーが発生する可能性があります。 このトピックでは、エラーをトラブルシューティングし、Logtailの実行ステータスを確認するために実行できる操作について説明します。

マシングループのハートビートステータスの確認

マシングループのハートビートステータスを確認して、Logtailが正常にインストールされているかどうかを確認できます。

  1. マシングループのハートビートステータスを確認します。

    1. にログインします。Simple Log Serviceコンソール.

    2. [プロジェクト] セクションで、管理するプロジェクトをクリックします。

      image

    3. 左側のナビゲーションウィンドウで、リソース > マシングループ.

    4. マシングループリストで、ハートビートステータスを確認するマシングループをクリックします。

    5. [マシングループ設定] ページで、マシングループのステータスを確認し、ハートビートステータスがOKのノード数を記録します。

  2. コンテナーが属するクラスター内のワーカーノードの数を数えます。

    1. クラスターに接続する

    2. 次のコマンドを実行して、クラスター内のワーカーノードの数を表示します。

      kubectl get node | grep -v master

      システムは、次のコードに似た情報を返します。

      NAME                                 STATUS    ROLES     AGE       VERSION
      cn-hangzhou.i-bp17enxc2us3624wexh2   Ready     <none>    238d      v1.10.4
      cn-hangzhou.i-bp1ad2b02jtqd1shi2ut   Ready     <none>    220d      v1.10.4
  3. ハートビートステータスがOKのノードの数がクラスター内のワーカーノードの数と等しいかどうかを確認します。 次に、チェック結果に基づいてトラブルシューティング方法を選択します。

    • マシングループ内のすべてのノードのハートビートステータスが [失敗] です。

      • 標準のDockerコンテナからログを収集する場合は、${your_region_name}${your_aliyun_user_id} 、および ${your_machine_group_user_defined_id} パラメーターの値が有効かどうかを確認します。 詳細については、「標準Dockerコンテナからのログの収集」をご参照ください。

      • Container Service for Kubernetes (ACK) クラスターを使用する場合は、 ticket 詳細については、「Logtailのインストール」をご参照ください。

      • セルフマネージドKubernetesクラスターを使用する場合は、{your-project-suffix}{regionId}{aliuid}{access-key-id} 、および {access-key-secret} パラメーターの値が有効かどうかを確認します。 詳細については、「SidecarモードでのKubernetesコンテナーからのテキストログの収集」をご参照ください。

        値が無効な場合は、helm del -- purge alibaba-log-controllerコマンドを実行してインストールパッケージを削除し、パッケージを再インストールします。

    • マシングループ内のハートビートステータスがOKのノードの数が、クラスター内のワーカーノードの数よりも少ない。

      • 必要なDaemonSetのデプロイにYAMLファイルが使用されているかどうかを確認します。

        1. 次のコマンドを実行します。 応答が返された場合、DaemonSetはYAMLファイルを使用してデプロイされます。

          kubectl get po -n kube-system -l k8s-app=logtail
        2. Logtail DaemonSetテンプレートの最新バージョンをダウンロードします。

        3. ビジネス要件に基づいて、${your_region_name}${your_aliyun_user_id} 、および ${your_machine_group_name} パラメーターを設定します。

        4. 次のコマンドを実行して、YAMLファイルを更新します。

          kubectl apply -f ./logtail-daemonset.yaml
      • それ以外の場合は、 ticket

コンテナログの収集状況の確認

Simple Log Serviceコンソールでデータをクエリするときに、消費プレビューセクションまたは関連するLogstoreのクエリと分析ページにログが存在しない場合、Simple Log Serviceはコンテナからログを収集しません。 この場合、コンテナのステータスを確認し、次の操作を実行します。

重要
  • コンテナファイルからログを収集するときは、次の項目に注意してください。

    • Logtailは増分ログのみを収集します。 Logtail構成がサーバーに配信されて適用された後にサーバー上のログファイルが更新されない場合、Logtailはファイルからログを収集しません。 詳細については、「ログファイルの読み取り」をご参照ください。

    • Logtailは、コンテナーの既定のストレージまたはコンテナーにマウントされているファイルシステムのファイルからのみログを収集します。 その他の保存方法はサポートされていません。

  • ログがLogstoreに収集されたら、インデックスを作成する必要があります。 次に、Logstore内のログを照会および分析できます。 詳細については、「インデックスの作成」をご参照ください。

  1. マシングループのハートビートステータスが正常かどうかを確認します。 詳細については、「マシングループの異常なハートビートステータスが原因で発生するエラーのトラブルシューティング」をご参照ください。

  2. Logtail設定が有効かどうかを確認します。

    Logtail設定の次のパラメーターの設定がビジネス要件を満たしているかどうかを確認します: IncludeLabelExcludeLabelIncludeEnv、およびExcludeEnv

    説明
    • コンテナラベルは、docker inspectコマンドを実行して取得します。 コンテナラベルはKubernetesラベルとは異なります。

    • ログが期待どおりに収集できるかどうかを確認するには、Logtail設定からIncludeLabelExcludeLabelIncludeEnv、およびExcludeEnvパラメーターの設定を一時的に削除します。 ログを収集できる場合、上記のパラメーターは無効です。

関連するO&M操作

Logtailコンテナにログインする

  • 標準Dockerコンテナ

    1. ホストで次のコマンドを実行して、Logtailコンテナを照会します。

      docker ps | grep logtail

      システムは、次のコードに似た情報を返します。

      223****6e        registry.cn-hangzhou.aliyuncs.com/log-service/logtail                             "/usr/local/ilogta..."   8 days ago          Up 8 days                               logtail-iba
    2. 次のコマンドを実行して、LogtailコンテナでBashシェルを起動します。

      docker exec -it 223****6e  bash

      223 **** 6eは、LogtailコンテナのIDを示します。 IDを実際の値に置き換えます。

  • Kubernetesコンテナ

    1. 次のコマンドを実行して、Logtailに関連するポッドを照会します。

      kubectl get po -n kube-system | grep logtail

      システムは、次のコードに似た情報を返します。

      logtail-ds-****d                                             1/1       Running    0          8d
      logtail-ds-****8                                             1/1       Running    0          8d
    2. 次のコマンドを実行して、必要なポッドにログインします。

      kubectl exec -it -n kube-system logtail-ds-****d -- bash

      logtail-ds-**** dは、ポッドのIDを示します。 IDを実際の値に置き換えます。

Logtail の操作ログの表示

Logtailのログは、Logtailコンテナの /usr/local/ilogtail/ ディレクトリにあるilogtail.LOGおよびlogtail_plugin.LOGファイルに保存されます。

  1. Logtailコンテナにログインします。 詳細については、「Logtailコンテナーへのログイン」をご参照ください。

  2. /usr/local/ilogtail/ ディレクトリに移動します。

    cd /usr/local/ilogtail
  3. ilogtail.LOGおよびlogtail_plugin.LOGファイルを表示します。

    cat ilogtail.LOG
    cat logtail_plugin.LOG

Logtailコンテナのstdoutを無視する

コンテナーのstdoutは、トラブルシューティングのための参照を提供しません。 次のstdoutを無視します。

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

KubernetesクラスターのLogtailコンポーネントのステータスの表示

次のコマンドを実行して、alibaba-log-controller配置のステータスと情報を表示します。

kubectl get deploy alibaba-log-controller -n kube-system

結果:

NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
alibaba-log-controller   1/1     1            1           11d

次のコマンドを実行して、logtail-ds DaemonSetのステータスと情報を表示します。

kubectl get ds logtail-ds -n kube-system

結果:

NAME         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR  AGE
logtail-ds   2         2         2       2            2           **ux           11d

バージョン番号、IP、および Logtail の起動時間の表示

  1. ホストで次のコマンドを実行して、Logtailのバージョン番号、IPアドレス、および起動時間を表示します。

    関連情報は、Logtailコンテナの /usr/local/ilogtail/app_info.jsonファイルに保存されます。

    kubectl exec logtail-ds-****k -n kube-system cat /usr/local/ilogtail/app_info.json

    システムは、次のコードに似た情報を返します。

    {
       "UUID" : "",
       "hostname" : "logtail-****k",
       "instance_id" : "0EB****_172.20.4.2_1517810940",
       "ip" : "172.20.4.2",
       "logtail_version" : "0.16.2",
       "os" : "Linux; 3.10.0-693.2.2.el7.x86_64; #1 SMP Tue Sep 12 22:26:13 UTC 2017; x86_64",
       "update_time" : "2018-02-05 06:09:01"
    }

CRD指定のLogstoreが誤って削除された問題を処理する

カスタムリソース定義 (CRD) を使用して、Logtail設定を作成できます。 CRDで指定されたLogstoreを削除すると、収集されたデータを復元できず、Logtail設定が無効になります。 次のいずれかの方法を使用して、上記のシナリオでエラーを防ぐことができます。

  • CRDで指定されたLogstoreを変更します。

  • alibaba-log-controller関連のポッドを再起動します。

    次のコマンドを実行してポッドを照会します。

    kubectl get po -n kube-system | grep alibaba-log-controller