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

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

最終更新日:Apr 17, 2023

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

トラブルシューティング

マシングループの異常なハートビート状態が原因で発生するエラーのトラブルシューティング

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

  1. マシングループのハートビートのステータスを確認します。
    1. Log Service コンソールにログインします。
    2. [プロジェクト] セクションで、表示するプロジェクト名をクリックします。
    3. 左側のナビゲーションウィンドウで、[リソース] > [マシングループ] を選択します。
    4. マシングループリストで、ハートビートステータスを確認するマシングループをクリックします。
    5. [マシングループの設定] ページで、マシングループのステータスを確認し、ハートビートステータスがOKのサーバーの数を記録します。
  2. コンテナークラスター内のワーカーノードの数を数えます。
    1. コンテナークラスターにログインします。
    2. 次のコマンドを実行して、クラスター内のワーカーノードの数を表示します。
      kubectl getノード | grep -v master

      システムは次の例のような出力を返します。

      名前ステータスROLES年齢バージョン
      cn-hangzhou.i-bp17enxc2us3624wexh2準備 <none> 238d v1.10.4
      cn-hangzhou.i-bp1ad2b02jtqd1shi2ut準備 <none> 220d v1.10.4
  3. マシングループ内のハートビートステータスがOKのサーバーの数が、コンテナークラスター内のワーカーノードの数と等しいかどうかを確認します。 チェック結果に基づいてエラーをトラブルシューティングします。
    • マシングループ内のすべてのサーバーのハートビートステータスがFAILです。
      • 標準のDockerコンテナからログを収集する場合は、${your_region_name}${your_aliyun_user_id} 、および ${your_machine_group_user_defined_id} パラメーターの指定値が有効かどうかを確認します。 詳細は、「パラメーター」をご参照ください。
      • Container Service for Kubernetes (ACK) クラスターを使用している場合は、チケットを起票してください。 詳細については、「Alibaba Cloud Container Service for Kubernetes (ACK) クラスター」をご参照ください。
      • セルフマネージドKubernetesクラスターを使用する場合は、{your-project-suffix}{regionId}{aliuid}{access-key-id} 、および {access-key-secret} パラメーターの指定値が有効かどうかを確認します。 詳細は、「パラメーター」をご参照ください。

        パラメーターの指定値が無効な場合は、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. 次のコマンドを実行してファイルを更新します。
          kubectl apply -f ./logtail-daemonset.yaml
      • それ以外の場合は、 [チケットを起票] する必要があります。

コンテナログの異常収集により発生したエラーのトラブルシューティング

Log Serviceコンソールのプレビューデータセクションにデータが存在しない場合、または関連するLogstoreの検索と分析ページでログを照会できない場合、Log Serviceはコンテナログを収集しません。 マシングループ内のサーバに対応するコンテナの状态を确认してください。 コンテナーが期待どおりに動作している場合は、次の手順を実行してエラーをトラブルシューティングします。
重要
  • コンテナファイルからログを収集するときは、次の項目に注意してください。
    • Logtailは増分ログのみを収集します。 Logtail設定の配信後にログファイルが更新されない場合、Logtailはファイル内のログを収集しません。 詳細については、「ログファイルの読み取り」をご参照ください。
    • Logtailは、コンテナーに自動的に保存されるか、ローカルサーバーにマウントされるファイルからのみログを収集します。 その他の保存方法はサポートされていません。
  • ログを収集したら、インデックスを作成する必要があります。 次に、Logstore内のログを照会および分析できます。 詳細については、「インデックスの作成」をご参照ください。
  1. マシングループのハートビートステータスが異常かどうかを確認します。 詳細については、「マシングループのハートビートステータスが異常な場合のエラーのトラブル」をご参照ください。
  2. Check whether the Logtail configuration is valid.
    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アップ8 days logtail-iba
    2. 次のコマンドを実行して、Logtailコンテナにログインします。
      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実行中0 8d
      logtail-ds-**** 8 1/1実行中0 8d
    2. 次のコマンドを実行して、返されたポッドの1つにログインします。
      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. ログ
    cat logtail_plugin.LOG

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

コンテナのstdoutはこの場合とは無関係です。 次のstdoutを無視します。
umount役に立たないマウントポイントを開始, /shm$|/merged$|/mqueue $
umount: /logtail_host/var/lib/docker/overlay2/3fd0043af174cb0273c3c7869500fbe2bdb95d13b1e110172ef57fe840c8215 5/merged: アンマウントするにはスーパーユーザーである必要があります
umount: /logtail_host/var/lib/docker/overlay2/d5b10aa19399992755de1f85d25009528daa749c1bf8c16edff44beab6e69718/merged: アンマウントするにはスーパーユーザーである必要があります
umount: /logtail_host/var/lib/docker/overlay2/5c3125daddacedec29df72ad0c52fac800cd56c6e880dc4e8a640b1e16c2 2dbe/merged: アンマウントするにはスーパーユーザーである必要があります
......
xargs: umount: ステータス255で終了しました。中止
umount done
開始logtail
ilogtailが実行中です
logtailステータス:
ilogtailが実行中です

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

以下のコマンドを実行します。
kubectl get deploy alibaba-log-controller -n kube-system
kubectl get ds logtail-ds -n kube-system

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

  1. Logtailコンテナにログインします。 詳細については、「Logtailコンテナーへのログイン」をご参照ください。
  2. 次のコマンドを実行して、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を使用して自動的に作成されたLogstoreを削除すると、収集されたデータを復元できず、LogstoreのCRD設定が無効になります。 次のいずれかの方法を使用して、ログ収集の例外を防ぐことができます。
  • CRD設定で別のLogstoreを指定します。 この場合、削除されたLogstoreは使用されません。
  • alibaba-log-controllerポッドを再起動します。
    次のコマンドを実行して、ポッドを見つけます。
    kubectl get po -n kube-system | grep alibaba-log-controller