このトピックでは、Container Service for Kubernetes (ACK) クラスターにLogtailコンポーネントをインストールおよびアップグレードする方法について説明します。
背景情報
Kubernetesクラスターからコンテナーログを収集するには、Logtailコンポーネントをインストールする必要があります。
Logtailコンポーネントをインストールすると、Simple Log Serviceは自動的に次の操作を完了します。
alibaba-log-configurationという名前のConfigMapを作成します。 ConfigMapには、プロジェクトなどのSimple Log Serviceの設定情報が含まれています。
オプションです。 AliyunLogConfigという名前のカスタムリソース定義 (CRD) を作成します。
オプションです。 alibaba-log-controllerという名前のデプロイを作成します。 デプロイメントは、AliyunLogConfig CRDの変更とLogtail設定の作成を監視するために使用されます。
logtail-dsという名前のDaemonSetを作成して、ノードからログを収集します。
Logtailのインストール
既存のACKクラスターにLogtailコンポーネントをインストールできます。 ACKクラスターの作成時にLogtailコンポーネントをインストールすることもできます。 ACKクラスターの作成時にLogtailコンポーネントをインストールするには、[Log Serviceの有効化] を選択する必要があります。
既存のACKクラスターにLogtailコンポーネントをインストールする
ACK専用クラスターまたはACK管理クラスターを使用している場合は、このセクションの手順に従って、ACKクラスターにLogtailコンポーネントをインストールできます。
サーバーレスKubernetes (ASK) クラスターのコンテナーからテキストログ、標準出力 (stdout) 、標準エラー (stderr) を収集する方法の詳細については、「ポッド環境変数を使用してアプリケーションログを収集する」をご参照ください。
ACKクラスターとSimple Log Serviceリソースが異なるAlibaba Cloudアカウントに属している場合、Simple Log Serviceがアクティブ化されているAlibaba CloudアカウントのIDをクラスターのユーザー識別子として設定する必要があります。 詳細については、「Alibaba CloudアカウントのIDをユーザー識別子として設定する」をご参照ください。
ACKコンソールにログインします。
左側のナビゲーションペインで、[クラスター] をクリックします。
クラスターページで、Logtailコンポーネントをインストールするクラスターを見つけ、 [アクション] 列に表示されます。
ログとモニタリングタブ、検索logtail-dsをクリックし、インストール.
logtail-dsがインストールされると、Simple Log Serviceは、
k8s-log-${your_k8s_cluster_id}
という名前のプロジェクト、your_k8s_cluster_id}
という名前のマシングループ、およびconfig-operation-log
という名前のLogstoreを自動的にプロジェクトに作成します。重要config-operation-log
Logstoreは削除しないでください。
ACKクラスターの作成時にLogtailコンポーネントをインストールする
ACKコンソールにログインします。
左側のナビゲーションウィンドウで、クラスター.
クラスターページをクリックします。Kubernetesクラスターの作成.
コンポーネントの設定ステップ、選択Log Serviceの有効化.
説明この例では、Simple Log Serviceを有効にするために必要な手順のみを示します。 ACKクラスターの作成方法の詳細については、「ACK管理クラスターの作成」をご参照ください。
[Log Serviceの有効化] を選択すると、Simple Log Serviceプロジェクトを作成するように求められます。 Simple Log Serviceでのログの管理方法の詳細については、「プロジェクト」をご参照ください。 次のいずれかの方法を使用して、プロジェクトを作成できます。
プロジェクトの選択
既存のプロジェクトを選択して、収集されるコンテナログを管理できます。
プロジェクトの作成
Simple Log Serviceは、k8s-log-{ClusterID} という名前のプロジェクトを自動的に作成し、収集されたコンテナログを管理します。
ClusterID
は、作成するACKクラスターの一意のIDを指定します。
Logtailコンポーネントをインストールすると、k8s-group-${your_k8s_cluster_id}
という名前のマシングループとconfig-operation-log
という名前のLogstoreがプロジェクトに自動的に作成されます。
config-operation-log
Logstoreは削除しないでください。
Logtailのステータス、バージョン番号、IPアドレスの表示
Logtailのステータスの表示
次のコマンドを実行して、Logtailのステータスを表示します。
kubectl get po -n kube-system | grep logtail
次の出力が返されます。
NAME READY STATUS RESTARTS AGE
logtail-ds-gb92k 1/1 Running 0 2h
logtail-ds-wm7lw 1/1 Running 0 4d
Logtailのバージョン番号とIPアドレスの表示
次のコマンドを実行して、Logtailのバージョン番号とIPアドレスを表示します。
kubectl exec logtail-ds-gb92k -n kube-system cat /usr/local/ilogtail/app_info.json
次の出力が返されます。
{
"UUID" : "",
"hostname" : "logtail-ds-gb92k",
"instance_id" : "0EBB2B0E-0A3B-11E8-B0CE-0A58AC140402_172.20.4.2_1517810940",
"ip" : "192.0.2.0",
"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" : "2021-02-05 06:09:01"
}
Logtailのアップグレード
ファイルのバックアップ
アップグレードの完了には数秒かかります。 アップグレード中にLogtailコンテナーが再起動されます。これにより、少量のデータが再度収集されたり、収集中に失われたりする可能性があります。
Logtailコンポーネントをアップグレードする前に、Logtailコンポーネントに関連する説明ファイルをバックアップすることを推奨します。
kubectl get ds -n kube-system logtail-ds -o yaml > logtail-ds.yaml
kubectl get deployment -n kube-system alibaba-log-controller -o yaml > alibaba-log-controller.yaml
kubectl get crd aliyunlogconfigs.log.alibabacloud.com -o yaml > aliyunlogconfigs-crd.yaml
kubectl get cm -n kube-system alibaba-log-configuration -o yaml > alibaba-log-configuration.yaml
kubectl get aliyunlogconfigs --all-namespaces -o yaml > aliyunlogconfigs-cr.yaml
コンポーネントのアップグレード
一般的なシナリオでは、自動アップグレード方法を使用することを推奨します。 logtail-ds DaemonSetまたはalibaba-log-controller Deploymentで環境変数などのパラメーターを変更した場合は、手動アップグレード方法を使用して変更を保持することをお勧めします。
自動アップグレード
自動アップグレード方法を使用する場合、logtail-ds DaemonSetおよびalibaba-log-controller Deploymentのパラメーターに対する変更は保持されません。
ACKコンソールにログインします。
左側のナビゲーションペインで、[クラスター] をクリックします。
クラスターページで、Logtailコンポーネントをインストールするクラスターを見つけ、 [アクション] 列に表示されます。
[ログとモニタリング] タブで、[logtail-ds] を見つけ、[アップグレード] をクリックします。
[更新] ダイアログボックスで、[OK] をクリックします。
重要コンポーネントを最新のLogtailバージョンにアップグレードできない場合、クラスターのKubernetesバージョンは古くなっています。 この場合、クラスターのKubernetesバージョンを最初にアップグレードするか、手動アップグレード方法を使用する必要があります。
アップグレードが実行された後、ACKコンソールで各logtail-dsポッドのステータスを表示できます。 各logtail-dsポッドが実行状態の場合、アップグレードは成功です。
手動アップグレード
手動アップグレード方法を使用すると、既存の構成は更新されず、一部の機能がサポートされない場合があります。
手動アップグレードは、logtail-dsとalibaba-log-controllerの両方をカバーします。 ほとんどの場合、最新バージョンのlogtailで提供されている収集機能を取得するには、Logtail-dsをアップグレードするだけで済みます。 最新バージョンのLogtailで提供されているCRDベースの収集機能を取得する場合は、alibaba-log-controllerもアップグレードする必要があります。 次の手順は、logtail-dsをアップグレードする方法を示しています。
ACKコンソールにログインします。
左側のナビゲーションペインで、[クラスター] をクリックします。
クラスターページで、Logtailコンポーネントをインストールするクラスターを見つけ、 [アクション] 列に表示されます。
を選択します。
説明alibaba-log-controllerをアップグレードする場合は、
を選択します。 次に、Namespaceをkube-systemに設定し、alibaba-log-controllerを見つけます。名前空間をkube-systemに設定します。 次に、logtail-dsを見つけ、[操作] 列の [編集] をクリックします。
必要な環境変数が存在するかどうかを確認します。
ALIYUN_LOGTAIL_CONFIG、ALIYUN_LOGTAIL_USER_ID、またはALIYUN_LOGTAIL_USER_DEFINED_ID環境変数が存在しない場合、Logtailのバージョンは古くなっています。 を送信できます。You can submit a テクニカルサポートのためのticket。
[イメージバージョン] の右側にある [イメージバージョンの選択] をクリックします。
[イメージバージョン] ダイアログボックスで、最新バージョンをクリックし、[OK] をクリックします。
表示されるページの右側のウィンドウで、[更新] をクリックします。
アップグレードが実行された後、ACKコンソールで各logtail-dsポッドのステータスを表示できます。 各logtail-dsポッドが実行状態の場合、アップグレードは成功です。
Logtailの最新バージョンのアップグレード
最新という名前のLogtailバージョンで使用されているYAMLファイルは古いです。 このバージョンを使用すると、アップグレード中または新しい機能の使用時に問題が発生する可能性があります。 最新バージョンを最新バージョンにアップグレードすることを推奨します。 以下の手順を実行します。
既存のAliyunLogConfig CRDを保存します。
ビジネスシナリオに基づいてlog-crds.yamlを置き換えます。
kubectl get AliyunLogConfig -A -o yaml > log-crds.yaml
logtail-dsをアンインストールします。
ACKコンソールの [ログとモニタリング] タブで、[logtail-ds] を見つけ、[アンインストール] をクリックします。 詳細については、「Logtailのアンインストール」をご参照ください。
logtail-dsをインストールします。
ACKコンソールの [ログとモニタリング] タブで、[logtail-ds] を見つけ、[インストール] をクリックします。 詳細については、「Logtailのインストール」をご参照ください。
保存済みのAliyunLogConfig CRDをデプロイします。
ビジネスシナリオに基づいてlog-crds.yamlを置き換えます。
kubectl apply -f log-crds.yaml
アップグレードをロールバック
次の手順は、特定のバージョンにロールバックする方法を示しています。
アップグレード前にバックアップされたYAMLファイルには、冗長な情報が含まれています。 Logtailの設定を復元する前に、冗長情報を手動で削除する必要があります。 kubectl-neatツールを使用して、冗長な情報を削除できます。 次のフィールドを削除する必要があります: metadata.creationTimestamp、metadata.generation、metadata.resourceVersion、metadata.uid、およびstatus。
アップグレード後にLogtailの新しい設定を保持するかどうかを確認します。
アップグレード後にLogtailの新しい設定を保持する必要がない場合は、設定を削除します。
バックアップファイルから冗長情報を削除します。
cat logtail-ds.yaml | kubectl-neat > neat-logtail-ds.yaml cat alibaba-log-controller.yaml | kubectl-neat > neat-alibaba-log-controller.yaml cat aliyunlogconfigs-crd.yaml | kubectl-neat > neat-aliyunlogconfigs-crd.yaml cat alibaba-log-configuration.yaml | kubectl-neat > neat-alibaba-log-configuration.yaml cat aliyunlogconfigs-cr.yaml | kubectl-neat > neat-aliyunlogconfigs-cr.yaml
冗長情報を削除した後、バックアップファイルを使用してLogtailの設定を復元します。
kubectl apply -f neat-logtail-ds.yaml kubectl apply -f neat-alibaba-log-controller.yaml kubectl apply -f neat-aliyunlogconfigs-crd.yaml kubectl apply -f neat-alibaba-log-configuration.yaml kubectl apply -f neat-aliyunlogconfigs-cr.yaml
Logtailのアンインストール
ACKコンソールにログインします。
左側のナビゲーションペインで、[クラスター] をクリックします。
On theクラスターページで、Logtailコンポーネントをインストールするクラスターを見つけ、 [アクション] 列に表示されます。
[ログとモニタリング] タブで、[logtail-ds] を見つけ、[アンインストール] をクリックします。
プロンプトに従って [OK] をクリックします。
次に何をすべきか
テキストログ
StdoutとStderr: Simple Log Serviceコンソールを使用して、DaemonSetモードのKubernetesコンテナーからstdoutとstderrを収集します
Kubernetesイベント: Kubernetesイベントの収集
コンテナログを収集するためのLogtail設定を作成します。
DaemonSetモード
CRDを使用してコンテナログを収集する方法の詳細については、「CRDを使用してDaemonSetモードでコンテナログを収集する」をご参照ください。
Simple Log Serviceコンソールでコンテナーstdoutとstderrを収集する方法の詳細については、「Simple Log Serviceコンソールを使用してDaemonSetモードでコンテナーstdoutとstderrを収集する」をご参照ください。
Simple Log Serviceコンソールでコンテナテキストログを収集する方法の詳細については、「Simple log Serviceを使用したコンテナーからのログデータの収集」をご参照ください。
サイドカーモード
CRDを使用してコンテナログを収集する方法の詳細については、「CRDを使用してSidecarモードでコンテナテキストログを収集する」をご参照ください。
Simple Log Serviceコンソールでコンテナログを収集する方法の詳細については、「Simple Log Serviceコンソールを使用してSidecarモードでコンテナテキストログを収集する」をご参照ください。
よくある質問
コンテナイメージのバージョンを表示するにはどうすればよいですか?
次のいずれかのイメージリポジトリにアクセスして、コンテナイメージのバージョンを表示できます。
複数のKubernetesクラスターから同じSimple Log Serviceプロジェクトにコンテナーログを収集する方法を教えてください。
複数のKubernetesクラスターから同じSimple Log Serviceプロジェクトにコンテナーログを収集できるのは、Kubernetesクラスターが同じリージョンにある場合のみです。
複数のACKクラスターから同じSimple Log Serviceプロジェクトにコンテナログを収集する場合は、ACKクラスターを作成するときに同じプロジェクトを選択する必要があります。
Logtailのログを表示する方法は?
Logtailのログは、Logtailコンテナの /usr/local/ilogtail/ ディレクトリにあるilogtail.LOGおよびlogtail_plugin.LOGファイルに保存されます。
コンテナの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
KubernetesクラスターのSimple Log Serviceコンポーネントのステータスを表示するにはどうすればよいですか。
以下のコマンドを実行します。
kubectl get deploy alibaba-log-controller -n kube-system
kubectl get ds logtail-ds -n kube-system
alibaba-log-controllerの起動に失敗した場合はどうすればよいですか?
次の方法でalibaba-log-controllerがインストールされているかどうかを確認します。
Kubernetesクラスターのマスターノードでインストールコマンドを実行します。
インストールコマンドでKubernetesクラスターのIDを指定します。
上記の方法でalibaba-log-controllerをインストールできない場合は、kubectl delete -f deploy
コマンドを実行して、生成されたインストールテンプレートを削除します。 次に、インストールコマンドを再実行します。
Kubernetesクラスターのlogtail-ds DaemonSetのステータスを表示するにはどうすればよいですか。
kubectl get ds -n kube-system
コマンドを実行して、Logtail-ds DaemonSetのステータスを表示します。
Logtailコンテナが属するデフォルトの名前空間はkube-systemです。
Logtailの操作ログの表示方法?
Logtailの操作ログは、/usr/local/ilogtail/ ディレクトリのilogtail.LOGファイルに保存されます。 ログファイルがローテーションされると、生成されたファイルは圧縮され、ilogtail.LOG.x.gzとして保存されます。 次のコマンドを実行して、ログを表示します。
kubectl exec logtail-ds-gb92k -n kube-system tail /usr/local/ilogtail/ilogtail.LOG
次の出力が返されます。
[2018-02-05 06:09:02.168693] [INFO] [9] [build/release64/sls/ilogtail/LogtailPlugin.cpp:104] logtail plugin Resume:start
[2018-02-05 06:09:02.168807] [INFO] [9] [build/release64/sls/ilogtail/LogtailPlugin.cpp:106] logtail plugin Resume:success
[2018-02-05 06:09:02.168822] [INFO] [9] [build/release64/sls/ilogtail/EventDispatcher.cpp:369] start add existed check point events, size:0
[2018-02-05 06:09:02.168827] [INFO] [9] [build/release64/sls/ilogtail/EventDispatcher.cpp:511] add existed check point events, size:0 cache size:0 event size:0 success count:0
ポッドのLogtailを再起動するにはどうすればよいですか?
Logtailを停止します。
次のコマンドでは、
logtail-ds-gb92k -n
はコンテナーを指定し、kube-system
は名前空間を指定します。 ビジネスシナリオに基づいてパラメーターを設定します。Logtailを起動します。
次のコマンドでは、
logtail-ds-gb92k -n
はコンテナーを指定し、kube-system
は名前空間を指定します。 ビジネスシナリオに基づいてパラメーターを設定します。
kubectl exec logtail-ds-gb92k -n kube-system /etc/init.d/ilogtaild stop
次の出力が返された場合、Logtailは停止します。
kill process Name: ilogtail pid: 7
kill process Name: ilogtail pid: 9
stop success
kubectl exec logtail-ds-gb92k -n kube-system /etc/init.d/ilogtaild start
次の出力が返されると、Logtailが起動されます。
ilogtail is running
関連ドキュメント
自己管理KubernetesクラスターにLogtailをインストールする方法の詳細については、「自己管理KubernetesクラスターにLogtailコンポーネントをインストールする」をご参照ください。
ACK管理クラスターから制御プレーンコンポーネントのログを収集するには、ACKコンソールでログ収集機能を有効にします。 詳細については、「ACK Proクラスターでの制御プレーンコンポーネントのログの収集」をご参照ください。
ASKクラスターからコンテナログを収集する方法の詳細については、「ASK Proクラスターの制御プレーンコンポーネントのログ」をご参照ください。
Logtail構成の作成時に問題をトラブルシューティングする方法の詳細については、Logtailマシングループにハートビートがない場合はどうすればよいですか? 問題には、マシングループが存在せず、マシングループでハートビートが検出されないことが含まれます。
ログを収集するときにエラーをトラブルシューティングする方法の詳細については、Logtailを使用してコンテナからログを収集するときにエラーが発生した場合はどうすればよいですか?
Logtailを設定するときにコンテナをフィルタリングする方法の詳細については、「Simple Log Serviceコンソールを使用してDaemonSetモードでコンテナのstdoutとstderrを収集する」をご参照ください。