LoongCollector は、Alibaba Cloud Simple Log Service (SLS) によって開発された次世代のログ収集エージェントであり、Logtail のアップグレード版です。クラスターからコンテナーログを収集する前に、Kubernetes に LoongCollector コンポーネントをインストールする必要があります。このトピックでは、Kubernetes クラスターに LoongCollector をインストールする方法について説明します。
コアコンセプト
ログ収集を設定する前に、Alibaba Cloud Simple Log Service (SLS) のコアリソースの概念と、Kubernetes 環境における LoongCollector の実行モードについて理解してください。
前提条件
インストール方法の選択
クラスターのタイプと要件に基づいて、次の表からインストール方法を選択してください:
インストール方法 | シナリオ |
同じリージョンにあり、同じ Alibaba Cloud アカウントに属する ACK マネージドクラスターおよび ACK 専用クラスターからログを収集します。 | |
| |
この方法は、特定のアプリケーションのログを収集する必要があり、次の要件があるシナリオに適しています:
|
ACK クラスターへのインストール (DaemonSet モード)
LoongCollector は ACK マネージドクラスターと ACK 専用クラスターにのみインストールできます。LoongCollector と Logtail は共存できません。logtail-ds を使用していて LoongCollector にアップグレードする場合は、LoongCollector をインストールする前に logtail-ds をアンインストールする必要があります。
Alibaba Cloud ACK コンソールでワンクリックで LoongCollector をインストールできます。デフォルトでは、クラスターからのコンテナーログは、同じリージョンにあり、同じアカウントに属するプロジェクトに収集されます。アカウント間またはリージョン間でログを収集するには、「自己管理クラスターへのインストール (DaemonSet モード)」をご参照ください。
既存の ACK マネージドクラスターへのインストール
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、管理したいクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アドオン] をクリックします。
[ログとモニタリング] タブで、loongcollector を見つけて [インストール] をクリックします。
インストールが完了すると、Simple Log Service は ACK クラスターが存在するリージョンに次のリソースを自動的に作成します。Simple Log Service コンソールにログインしてリソースを表示できます。
リソースタイプ
リソース名
説明
プロジェクト
k8s-log-${cluster_id}異なるサービスのログデータを分離するリソース管理ユニット。
マシングループ
k8s-group-${cluster_id}loongcollector-ds のマシングループで、主にログ収集に使用されます。
k8s-group-${cluster_id}-clusterloongcollector-cluster のマシングループで、主にメトリック収集に使用されます。
k8s-group-${cluster_id}-singleton単一インスタンスのマシングループで、主に一部の単一インスタンス収集設定に使用されます。
Logstore
config-operation-log重要この Logstore は削除しないでください。
LoongCollector の alibaba-log-controller コンポーネントのログを保存します。課金方法は標準の Logstore と同じです。詳細については、「書き込みデータ量による課金」をご参照ください。この Logstore に収集設定を作成しないことをお勧めします。
新しい ACK マネージドクラスターの作成時にインストールする
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスターの作成] をクリックします。 [コンポーネント設定] ページで、[Log Service を有効にする] を選択します。 [プロジェクトの作成] または [既存プロジェクトの使用] を選択します。
このトピックでは Simple Log Service に関連する設定のみを説明します。他の設定項目の詳細については、「ACK マネージドクラスターの作成」をご参照ください。
[プロジェクトの作成] を選択すると、Simple Log Service は一連のデフォルトリソースを作成します。Simple Log Service コンソールにログインして表示できます。
リソースタイプ
リソース名
説明
プロジェクト
k8s-log-${cluster_id}異なるサービスのログデータを分離するリソース管理ユニット。
マシングループ
k8s-group-${cluster_id}loongcollector-ds のマシングループで、主にログ収集に使用されます。
k8s-group-${cluster_id}-clusterloongcollector-cluster のマシングループで、主にメトリック収集に使用されます。
k8s-group-${cluster_id}-singleton単一インスタンスのマシングループで、主に一部の単一インスタンス収集設定に使用されます。
Logstore
config-operation-log重要この Logstore は削除しないでください。
LoongCollector の alibaba-log-controller コンポーネントのログを保存します。課金方法は標準の Logstore と同じです。詳細については、「書き込みデータ量による課金」をご参照ください。この Logstore に収集設定を作成しないことをお勧めします。
自己管理型クラスターへのインストール (DaemonSet モード)
シナリオ
独自のデータセンター内の Kubernetes クラスター。
他のクラウドプロバイダーにデプロイされた Kubernetes クラスター。
異なるアカウントまたはリージョンにまたがる Alibaba Cloud ACK クラスターからコンテナログを収集する。
自己管理型クラスターで Kubernetes 1.6 以降が実行されていることを確認してください。
ユーザーガイド
前提条件を満たした後、次のステップに従って LoongCollector を手動でインストールおよび設定します。
インストールパッケージのダウンロードと解凍: kubectl がインストールおよび設定されているマシンで、クラスターのリージョンに対応するコマンドを実行して、LoongCollector とその依存コンポーネントをダウンロードします。
# 中国リージョン wget https://aliyun-observability-release-cn-shanghai.oss-cn-shanghai.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.sh # 中国以外のリージョン wget https://aliyun-observability-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.shvalues.yaml設定ファイルの変更:loongcollector-custom-k8s-packageフォルダに移動し、./loongcollector/values.yaml設定ファイルを編集します。パラメーターの説明
values.yaml
# ===================== 必須パラメーター ===================== # このクラスターのログ収集用のプロジェクト名。例: k8s-log-custom-sd89ehdq projectName: "" # プロジェクトが配置されているリージョン。例: cn-shanghai region: "" # プロジェクトを所有する Alibaba Cloud アカウントの UID。UID は引用符で囲みます。例: "123456789" aliUid: "" # 使用するネットワークタイプ。オプション: Internet (パブリックネットワーク) または Intranet (内部ネットワーク)。デフォルト: Internet。 net: Internet # Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID と AccessKey Secret。 accessKeyID: "" accessKeySecret: "" # カスタムクラスター ID。ID には、大文字、小文字、数字、ハイフン (-) を使用できます。 clusterID: "" # ... その他のオプションパラメーターは省略 ...projectName
String(必須)LoongCollector がログをアップロードするプロジェクトの名前。命名規則は次のとおりです:
プロジェクト名には、小文字、数字、ハイフン (-) のみを使用できます。
小文字で始まり、小文字または数字で終わる必要があります。
名前の長さは 3~63 文字である必要があります。
region
String(必須)プロジェクトが配置されているリージョンの ID。詳細については、「リージョン」をご参照ください。
aliUid
String(必須)プロジェクトを所有する Alibaba Cloud アカウントの ID。
net
String(必須)ログデータ転送に使用されるネットワークタイプ。
Internet (デフォルト): パブリックネットワーク。
Intranet: 内部ネットワーク。
accessKeyID
String(必須)プロジェクトを所有するアカウントの AccessKey ID。セキュリティのため、Resource Access Management (RAM) ユーザーの AccessKey を使用することをお勧めします。RAM ユーザーに AliyunLogFullAccess システムポリシーを付与する必要があります。RAM の詳細については、「RAM ユーザーの概要」をご参照ください。
accessKeySecret
String(必須)プロジェクトを所有するアカウントの AccessKey Secret。
clusterID
String(必須)カスタムクラスター ID を指定します。ID には、大文字、小文字、数字、ハイフン (-) を使用できます。
重要異なる Kubernetes クラスターに同じクラスター ID を使用しないでください。
インストールスクリプトの実行:
loongcollector-custom-k8s-packageフォルダから、次のコマンドを実行して LoongCollector とその依存コンポーネントをインストールします。bash k8s-custom-install.sh installインストールの確認: インストールが完了したら、次のコマンドを実行してコンポーネントのステータスを確認します:
# Pod のステータスを確認 kubectl get po -n kube-system | grep loongcollector-ds結果の例:
loongcollector-ds-gnmnh 1/1 Running 0 63sコンポーネントの起動に失敗した場合 (ステータスが `Running` ではない場合):
設定の確認:
values.yamlファイルの設定項目が正しいことを確認します。イメージの確認: 次のコマンドを実行して
Eventsを表示し、コンテナイメージがプルされたことを確認します。kubectl describe pod loongcollector-ds -n kube-system
コンポーネントがインストールされると、Simple Log Service は次のリソースを自動的に作成します。Simple Log Service コンソールにログインして表示できます。
リソースタイプ
リソース名
説明
プロジェクト
values.yamlファイルで指定したprojectNameの値異なるサービスのログを分離するリソース管理ユニット。
マシングループ
k8s-group-${cluster_id}ログ収集ノードのコレクション。
k8s-group-${cluster_id}-clusterloongcollector-cluster のマシングループ。主にメトリック収集に使用されます。
k8s-group-${cluster_id}-singleton単一インスタンスのマシングループ。主に一部の単一インスタンス収集設定に使用されます。
Logstore
config-operation-log重要この Logstore は削除しないでください。
LoongCollector の alibaba-log-controller コンポーネントのログを格納します。その課金は通常の Logstore と同じです。詳細については、「書き込みデータ量に応じた支払いモードの課金項目」をご参照ください。この Logstore に収集設定を作成しないでください。
サイドカーパターンを使用したインストール
アプリケーションレベルの詳細なログコレクションを行うには、サイドカーパターンを使用して LoongCollector をインストールできます。このパターンは、LoongCollector をコンテナーとしてアプリケーション Pod に挿入します。
利点: 優れたリソースの隔離、柔軟な構成を提供し、他のアプリケーションに影響を与えません。
欠点: DaemonSet パターンと比較して、このパターンではアプリケーションのデプロイメント YAML ファイルを手動で変更する必要があるため、構成とメンテナンスがより複雑になります。
手順
前提条件を満たしたら、次の手順に従って LoongCollector をインストールし、構成します。
(任意) テストデモのデプロイ: 適切なアプリケーションコンテナーがない場合、またはコレクション機能を迅速にテストしたい場合は、次のデプロイメントテンプレートを使用して専用のテストコンテナーをデプロイできます。
アプリケーションのデプロイメント YAML を取得する: アプリケーションが実行されているクラスターに接続します。次のコマンドを実行して、デプロイメントの YAML ファイルをエクスポートします。
# test-demo-deployment をデプロイメントの名前に置き換えます。 kubectl get deploy test-demo-deployment -o yaml > current-config.yamlサイドカーコンテナーと共有ボリュームを挿入するために YAML ファイルを変更する: 次の例とパラメーターの説明に従って YAML ファイルを変更します。
主要なパラメーターの説明
Loongcollector コンテナーを挿入するための YAML 構成
apiVersion: apps/v1 kind: Deployment metadata: name: your-app-deployment # これはアプリケーションのデプロイメントです spec: # ... その他の既存の spec 構成 ... template: spec: containers: # =================================================================== # ステップ 1: 既存のアプリケーションコンテナーを変更する # アプリケーションコンテナーの定義で、volumeMounts セクションを見つけるか追加します。 # =================================================================== - name: your-business-app-container # <--- これはアプリケーションコンテナーです image: your-app-image:latest # ... アプリケーションコンテナーのその他の構成 ... volumeMounts: # ... 既存の他のマウントポイント ... # --- 開始: 次の内容を追加 --- - name: ${shared_volume_name} mountPath: ${shared_volume_path} # 共有ボリュームをコンテナーのログディレクトリにマウントします - name: tasksite mountPath: /tasksite # Loongcollector コンテナーとの通信用の共有ディレクトリ # --- 終了: 内容の追加 --- # =================================================================== # ステップ 2: Loongcollector サイドカーコンテナーを追加する # containers リストの最後に、以下の完全なサイドカーコンテナー定義を貼り付けます。 # =================================================================== - name: loongcollector image: ${loongcollector_image} command: ["/bin/sh", "-c"] args: - >- /etc/init.d/ilogtaild start; sleep 10; touch /tasksite/cornerstone; until [[ -f /tasksite/tombstone ]]; do sleep 1; done; sleep 10; /etc/init.d/ilogtaild stop; livenessProbe: exec: command: - /etc/init.d/ilogtaild - status initialDelaySeconds: 30 periodSeconds: 30 env: # タイムゾーンを設定します。Kubernetes クラスターのリージョンに基づいてタイムゾーンを構成します。フォーマットは "Area/City" です。 # タイムゾーンが正しく構成されていない場合、生ログと処理済みログのタイムスタンプが一致しない可能性があります。 - name: TZ value: "${timezone}" - name: ALIYUN_LOGTAIL_USER_ID value: "${your_aliyun_user_id}" - name: ALIYUN_LOGTAIL_USER_DEFINED_ID value: "${your_machine_group_user_defined_id}" - name: ALIYUN_LOGTAIL_CONFIG value: "/etc/ilogtail/conf/${your_region_config}/ilogtail_config.json" # Pod 環境コンテキストをログタグとして追加 - name: "ALIYUN_LOG_ENV_TAGS" value: "_pod_name_|_pod_ip_|_namespace_|_node_name_|_node_ip_" # Pod とノード情報を取得 - name: "_pod_name_" valueFrom: fieldRef: fieldPath: metadata.name - name: "_pod_ip_" valueFrom: fieldRef: fieldPath: status.podIP - name: "_namespace_" valueFrom: fieldRef: fieldPath: metadata.namespace - name: "_node_name_" valueFrom: fieldRef: fieldPath: spec.nodeName - name: "_node_ip_" valueFrom: fieldRef: fieldPath: status.hostIP volumeMounts: # Loongcollector コンテナーのログディレクトリを共有ボリュームにマウントします - name: ${shared_volume_name} mountPath: ${dir_containing_your_files} # アプリケーションコンテナーとの対話用のマウントポイント - name: tasksite mountPath: /tasksite # =================================================================== # ステップ 3: 共有ボリュームを定義する # spec.template.spec の下、containers と同じレベルに volumes 定義を追加します。 # =================================================================== volumes: # ログストレージ用に空の共有ボリュームを定義します - name: ${shared_volume_name} emptyDir: {} # コンテナー間通信用のボリュームを定義します - name: tasksite emptyDir: medium: Memory${timezone}コンテナーのタイムゾーン。詳細については、「サポートされているタイムゾーン」をご参照ください。
${your_aliyun_user_id}Simple Log Service に使用する Alibaba Cloud アカウントの ID。
${your_machine_group_user_defined_id}マシングループのカスタム識別子。これは、カスタムマシングループを作成するために使用されます。
重要この識別子は、プロジェクトのリージョン内で一意である必要があります。
${your_region_config}このパラメーターは、Simple Log Service プロジェクトのリージョンとネットワークアクセスタイプに基づいて設定します。たとえば、プロジェクトが中国 (杭州) リージョンにある場合:
Alibaba Cloud 内の内部ネットワークアクセスの場合: このパラメーターを
cn-hangzhouに設定します。パブリックネットワークアクセスの場合: このパラメーターを
cn-hangzhou-internetに設定します。
リージョン ID については、「リージョン」をご参照ください。
${loongcollector_image}Loongcollector イメージアドレス。イメージアドレスの
${region-id}を、クラスターのリージョンに対応するリージョン ID に置き換えます。イメージアドレス:
aliyun-observability-release-registry.${region-id}.cr.aliyuncs.com/loongcollector/loongcollector:v3.0.12.0-25723a1-aliyun${shared_volume_name}ボリュームのカスタム名。
重要volumeMountsノードのnameパラメーターの値は、volumesノードのnameパラメーターの値と同じでなければなりません。これにより、Loongcollector コンテナーとアプリケーションコンテナーが同じボリュームにマウントされることが保証されます。${dir_containing_your_files}マウントパス。これは、収集したいテキストログを含むコンテナー内のディレクトリです。
更新された構成を適用する: 次のコマンドを実行してアプリケーションを更新します。
kubectl apply -f current-config.yamlLoongcollector のインストールを検証する: 次のコマンドを実行して新しい Pod を確認します。アプリケーションコンテナーと LoongCollector コンテナーの両方が実行中状態であることを確認してください。
kubectl describe pod <YOUR-POD-NAME>LoongCollector コンテナーのステータスが
Runningの場合、インストールは成功です。
マシングループを作成する:
Simple Log Service コンソールにログインし、プロジェクトをクリックします。
左側のナビゲーションウィンドウで、 を選択し、[マシングループ] ページで をクリックします。
[マシングループの作成] ダイアログボックスで、次のパラメーターを構成し、[OK] をクリックします。
マシングループ名に値を入力します。
マシングループ ID には、[カスタム識別子] を選択します。
カスタム識別子には、構成ファイルの
${your_machine_group_user_defined_id}の値を入力します。
マシングループが作成されたら、マシングループリストでその名前をクリックします。 セクションで、[ハートビート] ステータスを確認します。ステータスが OK の場合、マシングループが正常に作成されたことを示します。ハートビートが失敗した場合は、ユーザー ID とカスタム識別子が正しいことを確認してください。
よくある質問
ACK マネージドクラスターで LoongCollector の構成を変更して、アカウントまたはリージョンをまたいでログを収集するにはどうすればよいですか?
Alibaba Cloud ACK Edge、ACK One、ACS、および Serverless Kubernetes クラスターからコンテナーログを収集するにはどうすればよいですか?
次のステップ
LoongCollector をインストールした後、コア原則、主要なプロセス、選択に関する推奨事項、およびベストプラクティスについては、「Kubernetes コンテナーのログ収集」をご参照ください。次に、以下のいずれかのメソッドを使用してコレクション構成を作成します。

] > [マシングループの作成]