Logtailを使用して標準のDockerコンテナまたはKubernetesコンテナからログを収集すると、エラーが発生する可能性があります。 このトピックでは、エラーをトラブルシューティングし、Logtailの実行ステータスを確認するために実行できる操作について説明します。
マシングループのハートビートステータスの確認
マシングループのハートビートステータスを確認して、Logtailが正常にインストールされているかどうかを確認できます。
マシングループのハートビートステータスを確認します。
にログインします。Simple Log Serviceコンソール.
[プロジェクト] セクションで、管理するプロジェクトをクリックします。
左側のナビゲーションウィンドウで、 .
マシングループリストで、ハートビートステータスを確認するマシングループをクリックします。
[マシングループ設定] ページで、マシングループのステータスを確認し、ハートビートステータスがOKのノード数を記録します。
コンテナーが属するクラスター内のワーカーノードの数を数えます。
次のコマンドを実行して、クラスター内のワーカーノードの数を表示します。
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
ハートビートステータスが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ファイルが使用されているかどうかを確認します。
次のコマンドを実行します。 応答が返された場合、DaemonSetはYAMLファイルを使用してデプロイされます。
kubectl get po -n kube-system -l k8s-app=logtail
Logtail DaemonSetテンプレートの最新バージョンをダウンロードします。
ビジネス要件に基づいて、${your_region_name} 、${your_aliyun_user_id} 、および ${your_machine_group_name} パラメーターを設定します。
次のコマンドを実行して、YAMLファイルを更新します。
kubectl apply -f ./logtail-daemonset.yaml
それ以外の場合は、 ticket
コンテナログの収集状況の確認
Simple Log Serviceコンソールでデータをクエリするときに、消費プレビューセクションまたは関連するLogstoreのクエリと分析ページにログが存在しない場合、Simple Log Serviceはコンテナからログを収集しません。 この場合、コンテナのステータスを確認し、次の操作を実行します。
コンテナファイルからログを収集するときは、次の項目に注意してください。
Logtailは増分ログのみを収集します。 Logtail構成がサーバーに配信されて適用された後にサーバー上のログファイルが更新されない場合、Logtailはファイルからログを収集しません。 詳細については、「ログファイルの読み取り」をご参照ください。
Logtailは、コンテナーの既定のストレージまたはコンテナーにマウントされているファイルシステムのファイルからのみログを収集します。 その他の保存方法はサポートされていません。
ログがLogstoreに収集されたら、インデックスを作成する必要があります。 次に、Logstore内のログを照会および分析できます。 詳細については、「インデックスの作成」をご参照ください。
マシングループのハートビートステータスが正常かどうかを確認します。 詳細については、「マシングループの異常なハートビートステータスが原因で発生するエラーのトラブルシューティング」をご参照ください。
Logtail設定が有効かどうかを確認します。
Logtail設定の次のパラメーターの設定がビジネス要件を満たしているかどうかを確認します: IncludeLabel、ExcludeLabel、IncludeEnv、およびExcludeEnv。
説明コンテナラベルは、docker inspectコマンドを実行して取得します。 コンテナラベルはKubernetesラベルとは異なります。
ログが期待どおりに収集できるかどうかを確認するには、Logtail設定からIncludeLabel、ExcludeLabel、IncludeEnv、およびExcludeEnvパラメーターの設定を一時的に削除します。 ログを収集できる場合、上記のパラメーターは無効です。
関連するO&M操作
Logtailコンテナにログインする
標準Dockerコンテナ
ホストで次のコマンドを実行して、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
次のコマンドを実行して、LogtailコンテナでBashシェルを起動します。
docker exec -it 223****6e bash
223 **** 6e
は、LogtailコンテナのIDを示します。 IDを実際の値に置き換えます。
Kubernetesコンテナ
次のコマンドを実行して、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
次のコマンドを実行して、必要なポッドにログインします。
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
ファイルに保存されます。
Logtailコンテナにログインします。 詳細については、「Logtailコンテナーへのログイン」をご参照ください。
/usr/local/ilogtail/ ディレクトリに移動します。
cd /usr/local/ilogtail
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 の起動時間の表示
ホストで次のコマンドを実行して、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