Logtail コンテナ (Docker または Kubernetes) のログを収集する際によく発生する例外を解決するには、以下をご参照ください。

マシングループのハートビート例外をトラブルシュート

マシングループのハートビートステータスを確認して、コンテナに Logtail が正しくインストールされていることを確認します。

  1. マシングループのハートビートのステータスを確認します。
    1. 登录日志服务控制台,单击Project名称。
    2. 左側のナビゲーションメニューより、Logtail マシングループ をクリックします。
    3. 確認するマシングループのステータスをクリックします。

      ハートビートが正常ステータスであるノードの数をメモしておきます。

  2. クラスタ内の Worker ノードの数を確認します。

    kubectl get node | grep -v master を実行して、Worker ノードの数を表示します。

    $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. ハートビートが正常ステータスであるノードの数が Worker ノードの数と同じであることを確認します。 数が合わない場合には、その数の違いによって以下のとおりトラブルシューティングします。
    • すべてのノードのハートビートが異常ステータスである
      • 標準の Docker ログを使用している場合は、「パラメータの説明」に記載されている手順に従って、${your_region_name}${your_aliyun_user_id}、および ${your_machine_group_user_defined_id} が正しく設定されているかどうかを確認します。
      • Alibaba Cloud Container Service に Kubernetes をインストールしている場合は、チケットを起票し、サポートセンターにお問い合わせください。
      • 自社サーバーに Kubernetes をインストールしている場合は、「パラメータの説明」に記載されている手順に従って、{your-project-suffix}{regionId}{aliuid}{access-key-id}、および {access-key-secret} が正しく設定されているかどうかを確認します。 パラメータが正しくない場合は、helm del --purge alibaba-log-controllerを実行してインストールパッケージを削除し、Kubernetes を再インストールします。
    • ハートビートが正常ステータスであるノードの数が、Worker ノードの数より少ない
      1. yaml ファイルを使用して DaemonSet を手動でデプロイするかどうかを判断します。

        kubectl get po -n kube-system -l k8s-app=logtail を実行し、 実行結果が返ってきたら、DaemonSet の手動デプロイは完了です。

      2. 最新の DaemonSet テンプレートをダウンロードします。
      3. ${your_region_name}${your_aliyun_user_id}、および ${your_machine_group_name} を設定します。
      4. kubectl apply -f ./logtail-daemonset.yamlを実行して DaemonSet yaml ファイルを更新します。
      上記以外の場合には、チケットを起票し、サポートセンターにお問い合わせください。

コンテナのログ収集の例外をトラブルシュート

コンソールのプレビューページまたはクエリページにログがまったく表示されない場合は、Log Service によってコンテナのログが収集されていないことになります。 以下を確認します。

  1. マシングループのステータスが正常かどうかを確認します
  2. 設定内容が適切か確認します。
    コンテナの IncludeLabelExcludeLabelIncludeEnv、および ExcludeEnv の各パラメータに間違いがないかどうか確認します。
    Label は、コンテナのラベル (docker inspect のラベル情報) であり、Kubernetes のラベルではありません。 パラメータをひとつずつ削除し、ログが収集されるかどうかを確認します。 収集されれば、そのパラメータの設定が正しくないために例外が発生していることになります。
  3. その他の注意事項
    コンテナのログを収集する際は、次の点にご注意ください。
    • コンテナのログファイルが更新されていない場合、そのログファイルは収集されません。
    • デフォルトで格納されているログファイル、および、ローカル PC にマウントされているログファイルのみが収集されます。

Logtail コンテナにログイン

  • Docker
    1. ホストで、docker ps | grep logtail を実行して Logtail コンテナがあることを確認します。
    2. docker exec -it ****** bash を実行して Logtail コンテナにログインします。
    $docker ps | grep logtail
    223fbd3ed2a6e        registry.cn-hangzhou.aliyuncs.com/log-service/logtail                             "/usr/local/ilogta..."   8 days ago          Up 8 days                               logtail-iba
    $docker exec -it 223fbd3ed2a6e bash
  • Kubernetes
    1. kubectl get po -n kube-system | grep logtail を実行して Logtail ポッドがあることを確認します。
    2. kubectl exec -it -n kube-system ****** bash を実行して Pod にログインします。
    $kubectl get po -n kube-system | grep logtail
    logtail-ds-g5wgd                                             1/1       Running    0          8d
    logtail-ds-slpn8                                             1/1       Running    0          8d
    $kubectl exec -it -n kube-system logtail-ds-g5wgd bash

Logtail 操作ログを確認

Logtail のログファイル、ilogtail.LOG および logtail_plugin.LOG は、/usr/local/ilogtail/ ディレクトリに保存されます。
  1. Logtail コンテナにログインします。
  2. /usr/local/ilogtail/ ディレクトリに移動します。
    cd /usr/local/ilogtail
  3. ファイル ilogtail.LOG および logtail_plugin.LOG を確認します。
    cat ilogtail.LOG
    cat logtail_plugin.LOG

Logtail の標準出力 (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 クラスタのログ関連コンポーネントのステータスを確認

helm status alibaba-log-controller を実行して、Kubernetes クラスタのログ関連コンポーネントのステータスを確認します。

Logtail のバージョン、IP アドレス、および時間を確認

関連情報は Logtail コンテナの /usr/local/ilogtail/ ディレクトリの app_info.json に保存されます。 例:
kubectl exec logtail-ds-gb92k -n kube-system cat /usr/local/ilogtail/app_info.json
{
   "UUID" : "",
   "hostname" : "logtail-gb92k",
   "instance_id" : "0EBB2B0E-0A3B-11E8-B0CE-0A58AC140402_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 を実行します。