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

Simple Log Service:ACKクラスターにLogtailコンポーネントをインストールする

最終更新日:Aug 30, 2024

このトピックでは、Container Service for Kubernetes (ACK) クラスターにLogtailコンポーネントをインストールおよびアップグレードする方法について説明します。

背景情報

Kubernetesクラスターからコンテナーログを収集するには、Logtailコンポーネントをインストールする必要があります。

Logtailコンポーネントをインストールすると、Simple Log Serviceは自動的に次の操作を完了します。

  1. alibaba-log-configurationという名前のConfigMapを作成します。 ConfigMapには、プロジェクトなどのSimple Log Serviceの設定情報が含まれています。

  2. オプションです。 AliyunLogConfigという名前のカスタムリソース定義 (CRD) を作成します。

  3. オプションです。 alibaba-log-controllerという名前のデプロイを作成します。 デプロイメントは、AliyunLogConfig CRDの変更とLogtail設定の作成を監視するために使用されます。

  4. 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をユーザー識別子として設定する」をご参照ください。

  1. ACKコンソールにログインします。

  2. 左側のナビゲーションペインで、[クラスター] をクリックします。

  3. クラスターページで、Logtailコンポーネントをインストールするクラスターを見つけ、もっと > 操作 > コンポーネントの管理[アクション] 列に表示されます。

  4. ログとモニタリングタブ、検索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コンポーネントをインストールする

  1. ACKコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、クラスター.

  3. クラスターページをクリックします。Kubernetesクラスターの作成.

  4. コンポーネントの設定ステップ、選択Log Serviceの有効化.

    説明

    この例では、Simple Log Serviceを有効にするために必要な手順のみを示します。 ACKクラスターの作成方法の詳細については、「ACK管理クラスターの作成」をご参照ください。

    [Log Serviceの有効化] を選択すると、Simple Log Serviceプロジェクトを作成するように求められます。 Simple Log Serviceでのログの管理方法の詳細については、「プロジェクト」をご参照ください。 次のいずれかの方法を使用して、プロジェクトを作成できます。

    • プロジェクトの選択

      既存のプロジェクトを選択して、収集されるコンテナログを管理できます。

      安装logtail组件

    • プロジェクトの作成

      Simple Log Serviceは、k8s-log-{ClusterID} という名前のプロジェクトを自動的に作成し、収集されたコンテナログを管理します。 ClusterIDは、作成するACKクラスターの一意のIDを指定します。

      安装logtail组件

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のパラメーターに対する変更は保持されません。

  1. ACKコンソールにログインします。

  2. 左側のナビゲーションペインで、[クラスター] をクリックします。

  3. クラスターページで、Logtailコンポーネントをインストールするクラスターを見つけ、もっと > 操作 > コンポーネントの管理[アクション] 列に表示されます。

  4. [ログとモニタリング] タブで、[logtail-ds] を見つけ、[アップグレード] をクリックします。

  5. [更新] ダイアログボックスで、[OK] をクリックします。

    重要

    コンポーネントを最新のLogtailバージョンにアップグレードできない場合、クラスターのKubernetesバージョンは古くなっています。 この場合、クラスターのKubernetesバージョンを最初にアップグレードするか、手動アップグレード方法を使用する必要があります。

    アップグレードが実行された後、ACKコンソールで各logtail-dsポッドのステータスを表示できます。 各logtail-dsポッドが実行状態の場合、アップグレードは成功です。

手動アップグレード

重要

手動アップグレード方法を使用すると、既存の構成は更新されず、一部の機能がサポートされない場合があります。

手動アップグレードは、logtail-dsとalibaba-log-controllerの両方をカバーします。 ほとんどの場合、最新バージョンのlogtailで提供されている収集機能を取得するには、Logtail-dsをアップグレードするだけで済みます。 最新バージョンのLogtailで提供されているCRDベースの収集機能を取得する場合は、alibaba-log-controllerもアップグレードする必要があります。 次の手順は、logtail-dsをアップグレードする方法を示しています。

  1. ACKコンソールにログインします。

  2. 左側のナビゲーションペインで、[クラスター] をクリックします。

  3. クラスターページで、Logtailコンポーネントをインストールするクラスターを見つけ、もっと > 操作 > コンポーネントの管理[アクション] 列に表示されます。

  4. [ワークロード] > [DaemonSets] を選択します。

    説明

    alibaba-log-controllerをアップグレードする場合は、[ワークロード] > [デプロイ] を選択します。 次に、Namespaceをkube-systemに設定し、alibaba-log-controllerを見つけます。

  5. 名前空間kube-systemに設定します。 次に、logtail-dsを見つけ、[操作] 列の [編集] をクリックします。

  6. 必要な環境変数が存在するかどうかを確認します。

    ALIYUN_LOGTAIL_CONFIG、ALIYUN_LOGTAIL_USER_ID、またはALIYUN_LOGTAIL_USER_DEFINED_ID環境変数が存在しない場合、Logtailのバージョンは古くなっています。 を送信できます。You can submit a テクニカルサポートのためのticket

  7. [イメージバージョン] の右側にある [イメージバージョンの選択] をクリックします。

  8. [イメージバージョン] ダイアログボックスで、最新バージョンをクリックし、[OK] をクリックします。

  9. 表示されるページの右側のウィンドウで、[更新] をクリックします。

    アップグレードが実行された後、ACKコンソールで各logtail-dsポッドのステータスを表示できます。 各logtail-dsポッドが実行状態の場合、アップグレードは成功です。

Logtailの最新バージョンのアップグレード

最新という名前のLogtailバージョンで使用されているYAMLファイルは古いです。 このバージョンを使用すると、アップグレード中または新しい機能の使用時に問題が発生する可能性があります。 最新バージョンを最新バージョンにアップグレードすることを推奨します。 以下の手順を実行します。

  1. 既存のAliyunLogConfig CRDを保存します。

    ビジネスシナリオに基づいてlog-crds.yamlを置き換えます。

    kubectl get AliyunLogConfig -A -o yaml > log-crds.yaml
  2. logtail-dsをアンインストールします。

    ACKコンソールの [ログとモニタリング] タブで、[logtail-ds] を見つけ、[アンインストール] をクリックします。 詳細については、「Logtailのアンインストール」をご参照ください。

  3. logtail-dsをインストールします。

    ACKコンソールの [ログとモニタリング] タブで、[logtail-ds] を見つけ、[インストール] をクリックします。 詳細については、「Logtailのインストール」をご参照ください。

  4. 保存済みのAliyunLogConfig CRDをデプロイします。

    ビジネスシナリオに基づいてlog-crds.yamlを置き換えます。

    kubectl apply -f  log-crds.yaml

アップグレードをロールバック

次の手順は、特定のバージョンにロールバックする方法を示しています。

説明

アップグレード前にバックアップされたYAMLファイルには、冗長な情報が含まれています。 Logtailの設定を復元する前に、冗長情報を手動で削除する必要があります。 kubectl-neatツールを使用して、冗長な情報を削除できます。 次のフィールドを削除する必要があります: metadata.creationTimestamp、metadata.generation、metadata.resourceVersion、metadata.uid、およびstatus。

  1. アップグレード後にLogtailの新しい設定を保持するかどうかを確認します。

    アップグレード後にLogtailの新しい設定を保持する必要がない場合は、設定を削除します。

  2. バックアップファイルから冗長情報を削除します。

    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
  3. 冗長情報を削除した後、バックアップファイルを使用して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のアンインストール

  1. ACKコンソールにログインします。

  2. 左側のナビゲーションペインで、[クラスター] をクリックします。

  3. On theクラスターページで、Logtailコンポーネントをインストールするクラスターを見つけ、もっと > 操作 > コンポーネントの管理[アクション] 列に表示されます。

  4. [ログとモニタリング] タブで、[logtail-ds] を見つけ、[アンインストール] をクリックします。

  5. プロンプトに従って [OK] をクリックします。

次に何をすべきか

コンテナログを収集するためのLogtail設定を作成します。

よくある質問

コンテナイメージのバージョンを表示するにはどうすればよいですか?

次のいずれかのイメージリポジトリにアクセスして、コンテナイメージのバージョンを表示できます。

複数の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を再起動するにはどうすればよいですか?

  1. Logtailを停止します。

  2. 次のコマンドでは、logtail-ds-gb92k -nはコンテナーを指定し、kube-systemは名前空間を指定します。 ビジネスシナリオに基づいてパラメーターを設定します。

  3. 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
  4. Logtailを起動します。

  5. 次のコマンドでは、logtail-ds-gb92k -nはコンテナーを指定し、kube-systemは名前空間を指定します。 ビジネスシナリオに基づいてパラメーターを設定します。

  6. kubectl exec logtail-ds-gb92k -n kube-system /etc/init.d/ilogtaild start

    次の出力が返されると、Logtailが起動されます。

    ilogtail is running 

関連ドキュメント