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

Simple Log Service:自己管理型KubernetesクラスターにLogtailコンポーネントをインストールする

最終更新日:Oct 22, 2024

このトピックでは、自己管理型KubernetesクラスターにLogtailコンポーネントをインストールおよびアップグレードする方法について説明します。

Logtailのインストール

  1. Simple Log Serviceコンソール.

  2. プロジェクトを作成します。 詳細については、「プロジェクトの作成」をご参照ください。

    名前がk8s-log-custom- で始まるプロジェクトを作成することを推奨します。 例: k8s-log-custom-sd89ehdq。

  3. Kubernetesクラスターにログインします。

  4. 次のコマンドを実行して、Logtailおよび依存コンポーネントをインストールします。

    重要
    • コマンドを実行するマシンにkubectlコマンドラインツールがインストールされていることを確認します。

    • alibaba-log-controllerはKubernetes 1.6以降でのみ使用できます。

    • カスタムリソース定義 (CRD) を使用する必要がなくなった場合は、alibaba-cloud-log/templates/alicloud-log-config.yamlファイルを削除し、次のコマンドを再実行できます。

    1. インストールパッケージをダウンロードして解凍します。

      • 中国のリージョン

        wget https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/0.5.3/alibaba-cloud-log-all.tgz; tar xvf alibaba-cloud-log-all.tgz; chmod 744 ./alibaba-cloud-log-all/k8s-custom-install.sh
      • 中国以外のリージョン

        wget https://logtail-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/kubernetes/0.5.3/alibaba-cloud-log-all.tgz; tar xvf alibaba-cloud-log-all.tgz; chmod 744 ./alibaba-cloud-log-all/k8s-custom-install.sh
    2. . /alibaba-cloud-log-all/values.yaml設定ファイルを設定します。

      # ===================== Required settings =====================
      # The name of the project. 
      SlsProjectName: 
      # The region where the project resides. 
      Region: 
      # The ID of the Alibaba Cloud account to which the project belongs. You must enclose the ID in double quotation marks (""). 
      AliUid: "11**99"
      # The AccessKey ID and AccessKey secret of the Alibaba Cloud account or a RAM user. The RAM user must have the AliyunLogFullAccess permission. 
      AccessKeyID: 
      AccessKeySercret: 
      # The custom ID of the cluster. The ID can contain only letters, digits, and hyphens (-). 
      ClusterID: 
      # ==========================================================
      # Specifies whether to enable metric collection for the related components. Valid values: true and false. Default value: true. 
      SlsMonitoring: true
      # The network type. Valid values: Internet and Intranet. Default value: Internet. 
      Net: Internet
      # Specifies whether containerd is used as the container runtime. Valid values: true and false. Default value: false.
      SLS_CONTAINERD_USED: true

      次の表に、上記のコマンドに含まれるパラメーターを示します。 ビジネスシナリオに基づいてパラメーターを設定できます。

      パラメーター

      説明

      SlsProjectName

      ステップ2で作成したプロジェクトの名前。

      リージョン

      プロジェクトが配置されているリージョンの ID です。 たとえば、中国 (杭州) リージョンのIDはcn-Hangzhouです。 詳細については、「サポートされているリージョン」をご参照ください。

      AliUid

      Alibaba CloudアカウントのID。 IDは二重引用符 ("") で囲む必要があります。 例: AliUid: "11** 99 " Alibaba CloudアカウントのIDを取得する方法については、「Simple Log Serviceが有効化されているAlibaba CloudアカウントのIDの取得」をご参照ください。

      AccessKeyID

      Alibaba CloudアカウントのAccessKey ID。 RAMユーザーのAccessKeyペアを使用し、AliyunLogFullAccessポリシーをRAMユーザーにアタッチすることを推奨します。 詳細については、「RAMユーザーを作成し、RAMユーザーにSimple Log Serviceへのアクセスを許可する」をご参照ください。

      AccessKeySercret

      Alibaba CloudアカウントのAccessKeyシークレット。 RAMユーザーのAccessKeyペアを使用し、AliyunLogFullAccessポリシーをRAMユーザーにアタッチすることを推奨します。 詳細については、「RAMユーザーを作成し、RAMユーザーにSimple Log Serviceへのアクセスを許可する」をご参照ください。

      ClusterID

      クラスターのカスタムID。 IDには、英数字、およびハイフン (-) のみを使用できます。 このパラメーターは、次の操作の ${your_k8s_cluster_id} 変数に対応します。

      重要

      異なるKubernetesクラスターに対して同じクラスターIDを指定しないでください。

      SlsMonitoring

      関連コンポーネントのメトリック収集を有効にするかどうかを指定します。 有効な値:

      • true (デフォルト)

      • false

      ネット

      ネットワークタイプ。 有効な値:

      • インターネット (デフォルト)

      • イントラネット

      SLS_CONTAINERD_使用済み

      containerdをコンテナランタイムとして使用するかどうかを指定します。 有効な値:

      • true: containerdが使用されます。

      • false (デフォルト) : containerdは使用されません。

      重要

      containerdをコンテナランタイムとして使用する自己管理Kubernetesクラスターでは、このパラメーターをtrueに設定する必要があります。 そうしないと、Logtailはログの収集に失敗する可能性があります。

    3. Logtailと依存コンポーネントをインストールします。

      bash k8s-custom-install.sh; kubectl apply -R -f result

次の表に、Logtailと依存コンポーネントのインストール後に自動的に作成されるSimple Log Serviceリソースを示します。

重要
  • config-operation-log Logstoreは削除しないでください。

  • 自己管理型KubernetesクラスターにLogtailコンポーネントをインストールすると、デフォルトでLogtailに特権権限が付与されます。 これにより、他のポッドが削除されたときに発生する可能性のあるコンテナーテキストファイルのビジーエラーが防止されます。 詳細については、「バグ1468249」、「バグ1441737」、および「課題34538」をご参照ください。

リソースタイプ

リソース名

説明

マシングループ

k8s-group-${your_k8s_cluster_id}

ログ収集シナリオで使用されるlogtail-daemonsetのマシングループ。

k8s-group-my-cluster-123

k8s-group-${your_k8s_cluster_id}-statefulset

メトリック収集シナリオで使用されるlogtail-statefulsetのマシングループ。

k8s-group-my-cluster-123-statefulset

k8s-group-${your_k8s_cluster_id}-singleton

単一インスタンスのマシングループ。単一インスタンスのLogtail設定に適用できます。

k8s-group-my-cluster-123-singleton

ログストア

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-dsやalibaba-log-controllerなどの特定のコンポーネントのイメージバージョンのみをアップグレードすると、アップグレードが失敗することがあります。

  1. 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
  2. Logtailコンポーネントを再インストールして、自動アップグレードを完了します。 詳細については、「Logtailのインストール」をご参照ください。

Logtailをロールバック

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

説明

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

  1. ビジネス要件に基づいて、アップグレード後に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設定を作成します。

よくある質問

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

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

複数の自己管理Kubernetesクラスターを同じSimple Log Serviceプロジェクトに関連付けるにはどうすればよいですか。

複数のセルフマネージドKubernetesクラスターから同じSimple Log Serviceプロジェクトにコンテナログを収集する場合は、Simple Log Serviceコンポーネントをインストールするときに、各セルフマネージドKubernetesクラスターに対してSlsProjectNameパラメーターを同じ値に設定できます。

Logtailのログを表示する方法は?

Logtailのログは、Logtailコンテナの /usr/local/ilogtail/ ディレクトリにあるilogtail.LOGおよびlogtail_plugin.LOGという名前のファイルに保存されます。

コンテナの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クラスターの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 DaemonSetのステータスを表示するにはどうすればよいですか。

kubectl get ds -n kube-systemコマンドを実行し、Logtail DaemonSetのステータスを表示します。

説明

Logtailコンテナが属するデフォルトの名前空間はkube-systemです。

Logtailのoeprationalログを表示するにはどうすればよいですか?

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がコンテナーを指定し、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
  3. Logtailを起動します。

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

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

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

    ilogtail is running 

制御プレーンコンポーネントのログを収集するにはどうすればよいですか?

セルフマネージドKubernetesクラスターまたはContainer Service For Kubernetes (ACK) 専用クラスターから制御プレーンコンポーネントのログを収集する方法については、「Simple Log Serviceコンソールを使用してDaemonSetモードでコンテナーのstdoutとstderrを収集する」をご参照ください。

logtail-dsやalibaba-log-controllerなどのコンポーネントをアンインストールするにはどうすればよいですか?

kubectl delete -R -f resultコマンドを実行して、これらのコンポーネントをアンインストールします。