Simple Log Service (SLS) と登録済みクラスターを連携させることで、様々な場所にある Kubernetes クラスターを統一的に管理できます。このトピックでは、Alibaba Cloud Container Service for Kubernetes (ACK) のアプリケーションを使用して、Simple Log Service と登録済みクラスターを連携させる方法について説明します。
前提条件
ACK One 登録済みクラスターが作成され、データセンター内の自己管理型 Kubernetes クラスターが ACK One 登録済みクラスターに接続されていること。 詳細については、「ACK One 登録済みクラスターの作成」をご参照ください。
ステップ 1: Simple Log Service コンポーネントの RAM 権限の設定
onectl の使用
オンプレミスマシンに onectl をインストールします。 詳細については、「onectl を使用した登録済みクラスターの管理」をご参照ください。
次のコマンドを実行して、Simple Log Service コンポーネントの RAM 権限を設定します。
onectl ram-user grant --addon logtail-ds期待される出力:
Ram policy ack-one-registered-cluster-policy-logtail-ds granted to ram user ack-one-user-ce313528c3 successfully.
コンソールの使用
登録済みクラスターにコンポーネントをインストールする前に、AccessKey を設定して、クラスターに Alibaba Cloud サービスへのアクセス権限を付与する必要があります。 AccessKey を設定する前に、RAM ユーザーを作成し、関連するクラウドリソースへのアクセス権限を追加します。
カスタムポリシーの作成。 ポリシーの内容は次のとおりです。
RAM ユーザーの AccessKey の作成。
警告AccessKey のセキュリティを向上させるために、ネットワークポリシーを設定して、AccessKey の呼び出しを信頼できるネットワーク環境に制限することを推奨します。 詳細については、「AccessKey のネットワークアクセス制限ポリシー」をご参照ください。
AccessKey を使用して、登録済みクラスターに
alibaba-addon-secretという名前の Secret リソースを作成します。次のコマンドを実行して、Logtail コンポーネントが使用する Secret を作成します。
kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=<your AccessKey ID>' --from-literal='access-key-secret=<your AccessKey Secret>'説明<your AccessKey ID>と<your AccessKey Secret>は、前のステップで取得した AccessKey 情報です。
ステップ 2: logtail-ds コンポーネントのインストール
onectl の使用
次のコマンドを実行して logtail-ds をインストールできます:
onectl addon install logtail-ds期待される出力:
Addon logtail-ds, version **** installed.コンソールの使用
ACK コンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスターリスト ページで、対象クラスターの名前をクリックします。 次に、左側のナビゲーションウィンドウで アドオン管理 をクリックします。
アドオン管理 ページで、ログとモニタリング タブをクリックします。[logtail-ds] コンポーネントを探し、そのカードの右下隅にある インストール をクリックします。
確認ダイアログボックスで、OK をクリックします。
(任意) ステップ 3: すべての Pod のログ出力収集の設定
テキストログ
すべての Pod のテキストログを設定するには、kubectl を使用して登録済みクラスターに接続します。 次に、以下の構成をデプロイします。
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
name: test-file # リソース名。現在の Kubernetes クラスター内で一意である必要があります。
spec:
project: k8s-log-c326bc86**** # 任意。 プロジェクト名。 カスタマイズ可能です。 [k8s-log-クラスター ID] の形式で命名することを推奨します。
logstore: test-file # 必須。 Logstore 名。 存在しない場合は、Simple Log Service が自動的に作成します。
logtailConfig: # Logtail 構成。
inputType: file # データソースのタイプ。 "file" はテキストログ、"plugin" は標準出力を示します。
configName: test-file # Logtail 構成の名前。 リソース名 (metadata.name) と同じである必要があります。
inputDetail: # Logtail 構成の詳細。
logType: common_reg_log # シンプルモードでテキストログを収集します。
logPath: /log/ # ログファイルが配置されているパス。
filePattern: "*.log" # ログファイルの名前。 ワイルドカードのアスタリスク (*) と疑問符 (?) をサポートしています。 例: log_*.log。
dockerFile: true # コンテナー内のファイルを収集します。 dockerFile を true に設定します。
advanced: # コンテナーのフィルター条件を設定します。
k8s:
K8sNamespaceRegex: ^(default)$
K8sPodRegex: '^(nginx-log-demo.*)$'
K8sContainerRegex: ^(nginx-log-demo-0)$
IncludeK8sLabel:
job-name: "^(nginx-log-demo.*)$"詳細については、「Logtail 構成 (レガシー)」をご参照ください。
標準出力
すべての Pod の標準出力を設定するには、kubectl を使用して登録済みクラスターに接続します。 次に、以下の構成をデプロイします。 デプロイが成功すると、stdout-logstore という名前の Logstore が自動的に作成され、そこにログが収集されます。
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
# 構成名。k8s クラスター内で一意である必要があります。
name: stdout-collector
spec:
# ログをアップロードする Logstore 名。
logstore: stdout-logstore
# Logtail 構成の詳細。
logtailConfig:
# Docker 標準出力の inputType は 'plugin' です。
inputType: plugin
# Logtail 構成名。[metadata.name] と同じにする必要があります。
configName: stdout-collector
inputDetail:
plugin:
inputs:
-
type: service_docker_stdout
detail:
# stdout と stderr を収集します。
Stdout: true
Stderr: true
# Docker 環境設定で "COLLECT_STDOUT_FLAG:false" が指定されているコンテナーを除く、すべてのコンテナーの標準出力を収集します。ステップ 4: Simple Log Service の設定
アプリケーション作成時の Simple Log Service の設定に関する詳細については、「アプリケーション作成時の Simple Log Service の設定」をご参照ください。
Ingress ログの収集に関する詳細については、「Nginx Ingress アクセスログの収集と分析」をご参照ください。