Simple Log Service では、DaemonSet モードまたは Sidecar モードで Logtail をインストールし、Logtail を使用して Kubernetes クラスターから stdout および stderr を収集できます。モードの違いの詳細については、「Kubernetes クラスターからログを収集するために Logtail をインストールする」をご参照ください。このトピックでは、DaemonSet モードで Logtail をインストールし、Logtail を使用して自己管理型 Kubernetes クラスターから stdout および stderr を収集する方法について説明します。
前提条件
Simple Log Service がアクティブ化されていること。詳細については、「Simple Log Service をアクティブ化する」をご参照ください。
Kubernetes 1.6 以降のクラスターが利用可能なこと。
kubectl コマンドラインツールが Kubernetes クラスターにインストールされていること。詳細については、kubectl をご参照ください。
使用上の注意
クラスターからテキストログを収集できます。詳細については、「自己管理型クラスターから DaemonSet モードでテキストログを収集する」をご参照ください。
Container Service for Kubernetes(ACK)クラスターから stdout および stderr を収集できます。詳細については、「ACK クラスターから DaemonSet モードで stdout および stderr を収集する(旧バージョン)」をご参照ください。
ソリューションの概要
以下の手順を実行して、DaemonSet モードで Logtail をインストールし、Logtail を使用して自己管理型 Kubernetes クラスターから stdout および stderr を収集できます。
Logtail コンポーネントをインストールする:Kubernetes クラスターに Logtail コンポーネントをインストールします。Logtail コンポーネントには、DaemonSet logtail-ds、ConfigMap alibaba-log-configuration、および Deployment alibaba-log-controller が含まれます。Logtail がインストールされると、Simple Log Service は Logtail 構成を Logtail に配信し、Logtail を使用して Kubernetes クラスターからデータを収集できます。
Logtail 構成を作成する:Logtail 構成が作成されると、Logtail は Logtail 構成に基づいて増分データを収集し、収集したデータを処理して作成されたログストアにアップロードします。CRD - AliyunPipelineConfig または CRD - AliyunLogConfig を使用するか、Simple Log Service コンソールで Logtail 構成を作成できます。CRD - AliyunPipelineConfig をお勧めします。
データをクエリおよび分析する:Logtail 構成が作成されると、Simple Log Service は収集されたデータを格納するログストアを自動的に作成します。ログストア内のデータを表示できます。
ステップ 1:Logtail をインストールする
alibaba-log-controller コンポーネントは、Kubernetes 1.6 以降でのみ使用できます。
コマンドを実行するマシンに kubectl コマンドラインツールがインストールされていることを確認してください。
Simple Log Service コンソール にログインします。 プロジェクトを作成します。詳細については、「プロジェクトを作成する」をご参照ください。
名前が
k8s-log-
で始まるプロジェクトを作成することをお勧めします。例:k8s-log-${your_k8s_cluster_id}
。Kubernetes クラスターにログインし、次のコマンドを実行して Logtail と必要な依存コンポーネントをインストールします。
インストールパッケージをダウンロードして解凍します。
中国本土
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
./alibaba-cloud-log-all/values.yaml
構成ファイルを修正します。# ===================== 必須設定 ===================== # プロジェクトの名前。 SlsProjectName: # プロジェクトが存在するリージョンの ID。 Region: # プロジェクトが属する Alibaba Cloud アカウントの ID。ID は二重引用符( "")で囲む必要があります。 AliUid: "11**99" # Alibaba Cloud アカウントまたは Resource Access Management(RAM)ユーザーの AccessKey ID と AccessKey シークレット。RAM ユーザーは、AliyunLogFullAccess 権限を持っている必要があります。 AccessKeyID: AccessKeySercret: # クラスターのカスタム ID。ID には、文字、数字、およびハイフン(-)のみを含めることができます。 ClusterID: # ========================================================== # 関連コンポーネントのメトリック収集を有効にするかどうかを指定します。有効な値:true および false。デフォルト値:true。 SlsMonitoring: true # ネットワークタイプ。有効な値:インターネットおよびイントラネット。デフォルト値:インターネット。 Net: Internet # クラスターのコンテナーランタイムが containerd かどうかを指定します。有効な値:true および false。デフォルト値:false。 SLS_CONTAINERD_USED: true
次の表は、上記のコマンドに含まれるパラメーターについて説明しています。ビジネス要件に基づいてパラメーターを構成できます。
パラメーター
説明
SlsProjectName
作成されたプロジェクトの名前。
Region
プロジェクトが存在するリージョンの ID。たとえば、中国(杭州)リージョンの ID は
cn-hangzhou
です。詳細については、「サポートされているリージョン」をご参照ください。AliUid
プロジェクトが属する Alibaba Cloud アカウントの ID。ID は二重引用符( "")で囲む必要があります。例:
AliUid: "11**99"
。詳細については、「Simple Log Service プロジェクトが属する Alibaba Cloud アカウントの ID を取得する」をご参照ください。AccessKeyID
プロジェクトが属する Alibaba Cloud アカウントの AccessKey ID。RAM ユーザーの AccessKey ペアを使用し、RAM ユーザーに AliyunLogFullAccess ポリシーをアタッチすることをお勧めします。詳細については、「RAM ユーザーを作成し、RAM ユーザーに Simple Log Service へのアクセスを承認する」をご参照ください。
AccessKeySercret
プロジェクトが属する Alibaba Cloud アカウントの AccessKey シークレット。RAM ユーザーの AccessKey ペアを使用し、RAM ユーザーに AliyunLogFullAccess ポリシーをアタッチすることをお勧めします。詳細については、「RAM ユーザーを作成し、RAM ユーザーに Simple Log Service へのアクセスを承認する」をご参照ください。
ClusterID
クラスターのカスタム ID。ID には、文字、数字、およびハイフン(-)のみを含めることができます。このパラメーターは、以下の操作の
${your_k8s_cluster_id}
変数に対応します。重要異なる Kubernetes クラスターに同じクラスター ID を指定しないでください。
SlsMonitoring
関連コンポーネントのメトリック収集を有効にするかどうかを指定します。有効な値:
true(デフォルト)
false
Net
ネットワークタイプ。有効な値:
インターネット(デフォルト)
イントラネット
SLS_CONTAINERD_USED
クラスターのコンテナーランタイムが containerd かどうかを指定します。有効な値:
true
false(デフォルト)
重要コンテナーランタイムが containerd である自己管理型 Kubernetes クラスターのパラメーター設定を有効にしないと、Logtail がログを収集できない場合があります。
Logtail と必要なコンポーネントをインストールします。
bash k8s-custom-install.sh; kubectl apply -R -f result
次の表は、Logtail と必要なコンポーネントをインストールした後に自動的に作成される Simple Log Service リソースについて説明しています。
自己管理型 Kubernetes クラスターに Logtail と必要な依存コンポーネントをインストールすると、Logtail に
privileged
権限が自動的に付与されます。これにより、他のポッドが削除されたときに発生する可能性のあるcontainer text file busy
エラーを防ぎます。詳細については、Bug 1468249、Bug 1441737、および Issue 34538 をご参照ください。
リソースタイプ | リソース名 | 機能 | 例 |
マシングループ | k8s-group- | ログ収集シナリオで使用される logtail-daemonset のマシングループ。 | k8s-group-my-cluster-123 |
k8s-group- | メトリック収集シナリオで使用される logtail-statefulset のマシングループ。 | k8s-group-my-cluster-123-statefulset | |
k8s-group- | 単一インスタンスの LoongCollector 構成を作成するために使用される単一インスタンスのマシングループ。 | k8s-group-my-cluster-123-singleton | |
ログストア | config-operation-log | このログストアは、Logtail コンポーネントの alibaba-log-controller コンポーネントのログを格納するために使用されます。このログストアのコレクション構成を作成しないことをお勧めします。このログストアは削除できます。ログストアが削除されると、システムは alibaba-log-controller の操作ログを収集しなくなります。このログストアは、他のログストアと同じ方法で課金されます。詳細については、「従量課金制における課金対象項目」をご参照ください。 | なし |
ステップ 2:Logtail 構成を作成する
次の表は、Logtail 構成を作成するために使用できる方法について説明しています。1 つの方法のみを使用して Logtail 構成を管理することをお勧めします。
構成方法 | 構成の説明 | シナリオ |
CRD - AliyunPipelineConfig(推奨) | Kubernetes CRD である AliyunPipelineConfig CRD を使用して、Logtail 構成を管理できます。 | この方法は、複雑な収集と処理、および自己管理型 Kubernetes クラスターの Logtail 構成と Logtail コンテナー間のバージョンの整合性が必要なシナリオに適しています。 説明 Logtail コンポーネントのバージョンは 0.5.1 以降である必要があります。Logtail の更新の詳細については、「Logtail を更新する」をご参照ください。 |
Simple Log Service コンソール | 迅速なデプロイと構成に基づいて、GUI で Logtail 構成を管理できます。 | この方法は、Logtail 構成を管理するために簡単な設定が必要なシナリオに適しています。この方法を使用して Logtail 構成を管理する場合、特定の高度な機能とカスタム設定は使用できません。 |
CRD - AliyunLogConfig | 古いバージョンの CRD である AliyunLogConfig CRD を使用して、Logtail 構成を管理できます。 | この方法は、古いバージョンの CRD を使用して Logtail 構成を管理できる既知のシナリオに適しています。 拡張性と安定性を向上させるために、AliyunLogConfig CRD を AliyunPipelineConfig CRD に徐々に置き換える必要があります。CRD - AliyunPipelineConfig メソッドと CRD - AliyunLogConfig メソッドの違いの詳細については、「CRD」をご参照ください。 |
CRD - AliyunPipelineConfig(推奨)
Logtail 構成を作成するには、AliyunPipelineConfig CRD からカスタムリソース(CR)を作成するだけです。CR が作成されると、Logtail 構成が有効になります。
CR を作成して Logtail 構成を作成し、Logtail 構成を変更する場合、CR のみ変更できます。Simple Log Service コンソールで Logtail 構成を変更した場合、新しい設定は CR に同期されません。
Kubernetes クラスターにログインします。
example-k8s-file.yaml という名前のファイルを作成します。
Logtail 構成ジェネレーター を使用してシナリオの YAML スクリプトを生成するか、提供されている例に基づいて手動で記述します。
以下の YAML ファイルの例では、デフォルトの名前空間内で
app: ^(.*test.*)$
というラベルが付いたポッドから標準出力を複数行テキストモードを使用してキャプチャし、k8s-log-test
という名前のプロジェクト内に自動的に作成されるk8s-file
というログストアに転送します。必要に応じて YAML のパラメーターを調整します。project
: Simple Log Service コンソール にログインし、インストールした Logtail によって作成されたプロジェクト名(通常はk8s-log-<YOUR_CLUSTER_ID>
の形式、例:k8s-log-test
)を確認します。IncludeK8sLabel
:ターゲットポッドのラベルをフィルタリングするために使用されます。たとえば、app: ^(.*test.*)$
は、ラベルキーがapp
であり、値にtest
が含まれるポッドを収集することを示します。説明クラスター内の
test
を含む名前のすべてのポッドを収集するには、IncludeK8sLabel
の代わりにK8sContainerRegex
を使用し、ワイルドカード文字を使用して値を設定します(例:K8sContainerRegex: ^(.test.)$
)。Endpoint
およびRegion
:例:ap-southeast-1.log.aliyuncs.com
およびap-southeast-1
。
YAML ファイルの
config
(サポートされている入力、出力、処理プラグインタイプ、コンテナフィルタリングメソッドなど)の詳細については、「PipelineConfig」をご参照ください。 YAML パラメーターの完全なリストについては、「CR パラメーター」をご参照ください。apiVersion: telemetry.alibabacloud.com/v1alpha1 # ClusterAliyunPipelineConfig を作成します。 kind: ClusterAliyunPipelineConfig metadata: # リソースの名前を指定します。名前は、現在の Kubernetes クラスター内で一意である必要があります。この名前は、作成される Logtail 構成の名前でもあります。 name: example-k8s-file spec: # ターゲットプロジェクトを指定します。 project: name: k8s-log-test # ログを格納するためのログストアを作成します。 logstores: - name: k8s-stdout # Logtail 構成を定義します。 config: # サンプルログ (オプション) sample: | 2024-06-19 16:35:00 INFO test log line-1 line-2 end # 入力プラグインを定義します。 inputs: # service_docker_stdout プラグインを使用して、コンテナー内のテキストログを収集します。 - Type: service_docker_stdout Stdout: true Stderr: true # コンテナー情報のフィルター条件を構成します。複数のオプションは AND 条件です。 # 収集対象のコンテナーを含むポッドが属する名前空間を指定します。正規表現マッチングをサポートします。 K8sNamespaceRegex: "^(default)$" # コンテナーメタデータのプレビューを有効にします。 CollectContainersFlag: true # Pod ラベル条件を満たすコンテナーを収集します。複数のエントリは OR 条件です。 IncludeK8sLabel: app: ^(.*test.*)$ # 複数行チャンク構成を設定します。単一行ログ収集の場合は無効な構成です。 # 行頭の正規表現を構成します。 BeginLineRegex: \d+-\d+-\d+.* # 出力プラグインを定義します。 flushers: # flusher_sls プラグインを使用して、ログを指定されたログストアに送信します。 - Type: flusher_sls # ログストアが存在することを確認します。 Logstore: k8s-stdout # エンドポイントが有効であることを確認します。 Endpoint: ap-southeast-1.log.aliyuncs.com Region: ap-southeast-1 TelemetryType: logs
kubectl apply -f example.yaml
コマンドを実行します。example.yaml
は、作成した YAML ファイルの名前に置き換えます。その後、Logtail によってコンテナーの stdout および stderr が Simple Log Service に収集されます。
CRD - AliyunLogConfig
Logtail 構成を作成するには、AliyunLogConfig CRD から CR を作成するだけです。CR が作成されると、Logtail 構成が有効になります。
CR を作成して Logtail 構成を作成し、Logtail 構成を変更する場合、CR のみを変更できます。Simple Log Service コンソールで Logtail 構成を変更した場合、新しい設定は CR に同期されません。
Kubernetes クラスタにログオンします。
example-k8s-file.yaml という名前のファイルを作成します。
この YAML スクリプトは、
simple-stdout-example
という Logtail 構成を確立します。複数行モードを使用して、app
で始まる名前を持つクラスタ内のすべてのコンテナから標準出力を収集します。収集されたデータは、k8s-log-<your_cluster_id>
という名前のプロジェクト内のk8s-stdout
というログストアに送信されます。サポートされている入力、出力、処理プラグインタイプ、コンテナフィルタリング方法など、YAML ファイルの logtailConfig 項目の詳細については、「AliyunLogConfig の詳細」をご参照ください。YAML パラメーターの完全なリストについては、「CR パラメーター」をご参照ください。
# 標準出力構成 apiVersion: log.alibabacloud.com/v1alpha1 kind: AliyunLogConfig metadata: # リソースの名前を指定します。名前は、現在の Kubernetes クラスタ内で一意である必要があります。 name: simple-stdout-example spec: # ターゲットプロジェクト名を指定します(オプション、デフォルトは k8s-log-<your_cluster_id> です) # project: k8s-log-test # ログストアの名前を指定します。指定されたログストアが存在しない場合、Simple Log Service は自動的にログストアを作成します。 logstore: k8s-stdout # Logtail コレクション構成を指定します。 logtailConfig: # データソースのタイプを指定します。標準出力を収集するには、値を plugin に設定します。 inputType: plugin # Logtail コレクション構成の名前を指定します。名前は、metadata.name で指定されたリソース名と同じである必要があります。 configName: simple-stdout-example inputDetail: plugin: inputs: - type: service_docker_stdout detail: # stdout と stderr のコレクションを指定します。 Stdout: true Stderr: true # 収集対象のコンテナを含むポッドが属する名前空間を指定します。正規表現マッチングをサポートします。 K8sNamespaceRegex: "^(default)$" # 収集対象のコンテナの名前を指定します。正規表現マッチングをサポートします。 K8sContainerRegex: "^(app.*)$" # 複数行チャンク構成を構成します。 # 行の先頭の正規表現を構成します。 BeginLineRegex: \d+-\d+-\d+.*
kubectl apply -f example.yaml
コマンドを実行します。example.yaml
を、作成した YAML ファイルの名前に置き換えます。その後、Logtail はコンテナの stdout と stderr を Simple Log Service に収集し始めます。
Simple Log Service コンソール
ログサービス コンソール にログオンします。
[プロジェクト] セクションで、Logtail コンポーネントのインストールに使用するプロジェクトをクリックします。例:
k8s-log-<your_cluster_id>
。表示されたページで、管理するログストアをクリックし、[Logtail 設定] をクリックします。[Logtail 設定] ページで、[Logtail 設定の追加] をクリックします。[クイックデータインポート] ダイアログボックスで、[K8S - Stdout And Stderr - Old Version] カードを見つけて [今すぐ統合] をクリックします。左側のナビゲーションペインで、[既存のマシン グループを使用]
をクリックします。
データインポートウィザードの [マシン グループ設定] ステップで、シナリオ パラメーターを Kubernetes クラスターに設定し、デプロイメント方法パラメーターを ACK DaemonSet に設定し、k8s-group-${your_k8s_cluster_id} マシン グループを選択して > [アイコン] をクリックし、[ソース マシン グループ] セクションから [適用済みサーバー グループ] セクションにマシン グループを移動し、[次へ] をクリックします。
ローカル Git を使用して、WordPress のデプロイをカスタマイズすることもできます。
グローバル構成セクションでパラメーターを構成する必要があります。詳細については、「Logtail 構成を作成する」をご参照ください。
[グローバル構成]
[グローバル構成] セクションで、構成名パラメーターを構成します。
インデックスを作成し、データをプレビューします。デフォルトでは、Simple Log Service で全文インデックスが有効になっています。この場合、全文インデックスが作成されます。インデックスに基づいてログ内のすべてのフィールドを検索できます。また、収集したログに基づいて、フィールドのインデックスを手動で作成することもできます。あるいは、自動インデックス生成をクリックすることもできます。すると、Simple Log Service がフィールドのインデックスを生成します。フィールドインデックスに基づいて、データを正確に検索できます。これにより、インデックス作成のコストが削減され、検索効率が向上します。詳細については、「インデックスを作成する」を参照してください。
ステップ 3: ログのクエリと分析
Simple Log Service コンソール にログオンします。
[プロジェクト] リストで、対象のプロジェクトをクリックして詳細ページに移動します。
対象のログストアを選択し、
をクリックし、[検索と分析] を選択して、Kubernetes クラスタログの出力を表示します。
コンテナ標準出力のデフォルトフィールド
各コンテナ標準出力には、次のデフォルトフィールドがあります。
フィールド名 | 説明 |
_time_ | ログ収集時間。 |
_source_ | ログソースタイプ。stdout または stderr。 |
_image_name_ | イメージ名 |
_container_name_ | コンテナ名 |
_pod_name_ | ポッド名 |
_namespace_ | ポッドが配置されている名前空間 |
_pod_uid_ | ポッドの一意の識別子 |
参照資料
ログを収集した後、Simple Log Service のクエリおよび分析機能を使用してログを理解できます。詳細については、「クエリと分析のクイックスタート」をご参照ください。
ログを収集した後、Simple Log Service の可視化機能を使用してログを視覚的に分析できます。詳細については、「ダッシュボードをすばやく作成する」をご参照ください。
ログを収集した後、Simple Log Service のアラート機能を使用して、ログの例外に関する通知を自動的に受信できます。詳細については、「ログアラートをすばやく構成する」をご参照ください。
コンテナログ収集のトラブルシューティング:
コンソールにエラーメッセージが表示されているかどうかを確認します。詳細については、「Logtail 収集エラー情報を表示する方法」をご参照ください。
コンソールにエラーメッセージが表示されない場合は、マシン グループと Logtail 構成のハートビートを確認します。詳細については、「コンテナログ収集の例外をトラブルシューティングする方法」をご参照ください。