Kubernetes データプレーンモニタリング機能は、Simple Log Service と Anolis コミュニティが共同開発した非侵入型モニタリング機能に基づいて構築されています。この機能により、Kubernetes 環境全体のデータフローを可視化し、ボトルネックを特定し、複雑なクラウドネイティブシステムを容易に管理できます。
前提条件
-
Full-stack Observability インスタンスが作成されていること。詳細については、「インスタンスの作成」をご参照ください。
-
コンソールを使用している場合は、モニタリングコンポーネントがインストールされていること。詳細については、「モニタリングコンポーネントのインストール」をご参照ください。
制限事項
Kubernetes データプレーンモニタリングには、Linux カーネルバージョン 4.19 以降、またはカーネルバージョン 3.1.0 (CentOS 7.6 から 7.9 のみ) を搭載した x86_64 ホストが必要です。`uname -r` コマンドを実行してカーネル情報を確認できます。
コンソールを使用した設定
Simple Log Service コンソールにログインします。
[ログアプリケーション] セクションで、[インテリジェント O&M] タブをクリックします。次に、[フルスタック可観測性] をクリックします。
[Simple Log Service フルスタックオブザーバビリティ] ページで、目的のインスタンスをクリックします。
-
左側のナビゲーションウィンドウで、フルスタックモニタリング をクリックします。
このインスタンスでフルスタックモニタリングを初めて使用する場合は、有効化をクリックします。
-
左側のナビゲーションウィンドウで、データのインポート をクリックします。データアクセス設定 ページの Kubernetes モニタリング セクションで、非侵入型サービス監視 を探します。
対象のモニタリング項目に対して初めてデータアクセス構成を作成する場合は、スイッチをオンにして構成ページを開きます。構成が既に存在する場合は、
アイコンをクリックして構成ページを開きます。 -
マシングループの作成:
既にマシングループを作成している場合は、このステップをスキップしてください。
-
ACK クラスター用のマシングループを作成するには、「IP アドレスベースのマシングループの作成」をご参照ください。
-
自己管理型 Kubernetes クラスター用のマシングループを作成するには、「カスタム識別子ベースのマシングループの作成」をご参照ください。
-
CLI を使用した設定
-
Logtail CRD ツールをダウンロードして収集設定を生成します。
メソッド
説明
クラスター外からのインストール
ローカルマシンに、対象クラスターに対して kubectl コマンドを実行する権限を持つ `~/.kube/config` ファイルが必要です。
コンテナ内からのインストール
`alibaba-log-controller` コンポーネントの権限を使用して CRD を作成します。`~/.kube/config` ファイルがない場合や、ネットワークの問題でクラスターに接続できない場合に使用します。
クラスター外からのインストール
-
クラスターにログインし、テンプレートツールをダウンロードします。
-
中国
curl https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/crd-tool.tar.gz -o /tmp/crd-tool.tar.gz -
中国以外のリージョン
curl https://logtail-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/kubernetes/crd-tool.tar.gz -o /tmp/crd-tool.tar.gz
-
-
テンプレートツールをインストールします。インストールが成功すると、現在のディレクトリに実行可能ファイル `sls-crd-tool` が生成されます。
tar -xvf /tmp/crd-tool.tar.gz -C /tmp &&chmod 755 /tmp/crd-tool/install.sh && sh -x /tmp/crd-tool/install.sh -
`./sls-crd-tool list` を実行してインストールを検証します。コマンドが何らかの出力を返した場合、インストールは成功です。
コンテナ内からのインストール
-
クラスターにログインし、`alibaba-log-controller` コンテナにアクセスします。
kubectl get pods -n kube-system -o wide |grep alibaba-log-controller | awk -F ' ' '{print $1}' kubectl exec -it {pod} -n kube-system bash cd ~ -
テンプレートツールをダウンロードします。
-
クラスターがパブリックネットワークにアクセスできる場合は、次のいずれかのコマンドを実行します:
-
中国
curl https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/crd-tool.tar.gz -o /tmp/crd-tool.tar.gz -
中国以外のリージョン
curl https://logtail-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/kubernetes/crd-tool.tar.gz -o /tmp/crd-tool.tar.gz
-
-
クラスターがパブリックネットワークにアクセスできない場合は、クラスターの外部からツールをダウンロードし、`kubectl cp <source> <destination>` などのコマンドや、ACK がサポートする他のファイル転送方法を使用してコンテナに転送します。
-
-
テンプレートツールをインストールします。インストールが成功すると、現在のディレクトリに実行可能ファイル `sls-crd-tool` が生成されます。
tar -xvf /tmp/crd-tool.tar.gz -C /tmp &&chmod 755 /tmp/crd-tool/install.sh && sh -x /tmp/crd-tool/install.sh -
`./sls-crd-tool list` を実行してインストールを検証します。コマンドが何らかの出力を返した場合、インストールは成功です。
-
-
Logtail CRD ツールを使用して収集設定を生成します。
-
テンプレート定義を表示します。
./sls-crd-tool get ebpfK8sPlugin -
REQUIREDを現在のインスタンスの ID に置き換え、次のコマンドを実行してパラメーターをプレビューします。./sls-crd-tool apply -f template-ebpfK8sPlugin.yaml --create=false -
`project` パラメーターが現在のインスタンスに関連付けられたプロジェクトに設定されていることを確認します。次に、次のコマンドを実行してテンプレート収集ファイルをデプロイします。
./sls-crd-tool apply -f template-ebpfK8sPlugin.yaml -
データアクセス設定 ページに戻ります。インストールが成功すると、リソースモニタリング セクションの 設定 カウントが 1 つ増加します。インストールが失敗した場合、カウントは変更されません。
-
データ収集の設定
-
[既存のマシングループを使用] をクリックします。
モニタリングコンポーネントをインストールすると、Simple Log Service は自動的に `k8s-group-${your_k8s_cluster_id}` という名前のマシングループを作成します。このマシングループを直接使用できます。
-
ターゲットマシングループ (
k8s-group-${your_k8s_cluster_id}など) を選択します。 グループをソースサーバーグループから適用されたサーバーグループに移動し、次へをクリックします。重要マシングループのハートビートステータスが FAIL の場合は、自動再試行 をクリックします。問題が解決しない場合は、「Logtail マシングループにハートビートがない場合の対処方法」をご参照ください。
-
データソースの設定 ステップで、次のパラメーターを設定し、完成 をクリックします。
パラメーター
説明
一般設定
設定名
Logtail 収集設定の名前。
クラスター
クラスターの名前。
このパラメーターを設定すると、Simple Log Service はこの設定を通じて収集されたモニタリングデータに `cluster=cluster_name` ラベルを追加します。
重要データ競合を避けるため、クラスター名が一意であることを確認してください。
プロトコル処理
プロトコル処理 スイッチをオンにすると、Logtail は HTTP、MySQL、Redis などのアプリケーションレイヤーのネットワークプロトコルを解析します。
ネットワークメトリックの統計頻度
レイヤー 4 ネットワークデータが集約され、レポートされる間隔 (秒単位)。600 秒以下の値を推奨します。
プロトコルメトリックの統計頻度
レイヤー 7 プロトコルネットワークデータが集約され、レポートされる間隔 (秒単位)。60 秒以下の値を推奨します。
プロトコルサンプルレート
ネットワークデータのサンプリングレート。この設定はレイヤー 7 ネットワークデータのみをフィルターし、レイヤー 4 ネットワーク統計には影響しません。
プロトコル許可リスト
解析したいアプリケーション層プロトコルを選択します。
K8s セレクター
Namespace 許可リスト
データを収集する Namespace の名前に一致する正規表現を入力します。
Namespace 拒否リスト
データ収集から除外する Namespace の名前に一致する正規表現を入力します。
Pod 許可リスト
データを収集する Pod の名前に一致する正規表現を入力します。
Pod 拒否リスト
データ収集から除外する Pod の名前に一致する正規表現を入力します。
コンテナ許可リスト
データを収集するコンテナの名前に一致する正規表現を入力します。
コンテナ拒否リスト
データ収集から除外するコンテナの名前に一致する正規表現を入力します。
ラベル許可リスト
ラベルに基づいてデータを収集するコンテナを指定します。
[ラベルキー] を特定の名前、[ラベル値] を正規表現に設定します。 たとえば、[ラベルキー] を io.kubernetes.container.name に、[ラベル値] を ^(nginx|cube)$ に設定すると、
nginxまたはcubeという名前のコンテナに一致します。複数のエントリは OR ロジックで結合されます。指定された条件のいずれかを満たすコンテナが一致します。
ラベル拒否リスト
ラベルに基づいてデータ収集から除外するコンテナを指定します。
[ラベルキー] に特定の名前を設定し、[ラベル値] に正規表現を設定します。 たとえば、[ラベルキー] に io.kubernetes.container.name、[ラベル値] に ^(nginx|cube)$ を設定すると、
nginxまたはcubeという名前のコンテナが除外されます。複数のエントリは OR ロジックで結合されます。指定された条件のいずれかを満たすコンテナが除外されます。
環境変数のホワイトリスト
環境変数に基づいてデータを収集するコンテナを指定します。
[環境キー] には特定の名前を、[環境値] には正規表現を設定します。 たとえば、[環境キー] に NGINX_SERVICE_PORT を、[環境値] に ^(80|6379)$ を設定すると、
NGINX_SERVICE_PORT環境変数が80または6379に設定されているコンテナが一致します。複数のエントリは OR ロジックで結合されます。指定された条件のいずれかを満たすコンテナが一致します。
環境変数のブラックリスト
環境変数に基づいてデータ収集から除外するコンテナを指定します。
[Env キー] に特定の名前を、[Env 値] に正規表現を設定します。 たとえば、[Env キー] に NGINX_SERVICE_PORT を、[Env 値] に ^(80|6379)$ を設定すると、
NGINX_SERVICE_PORT環境変数が80または6379に設定されているコンテナが除外されます。複数のエントリは OR ロジックで結合されます。指定された条件のいずれかを満たすコンテナが除外されます。
詳細設定
ローカルネットワークでパケットをドロップする
ローカルネットワークでパケットをドロップする スイッチをオンにすると、Logtail はローカルアドレス宛のネットワークリクエストを破棄します。
Unix ネットワークでパケットをドロップする
Unix ネットワークでパケットをドロップする スイッチをオンにすると、Logtail は UNIX ドメインからのネットワークリクエストを破棄します。
UNIX ドメインは通常、ローカルネットワークの対話に使用されます。
不明なパケットをドロップする
不明なパケットをドロップする スイッチをオンにすると、Logtail は INET または UNIX ドメインからではないネットワークリクエストを破棄します。
コンテナ情報の読み取り間隔
コンテナメタデータの完全な読み取り間隔 (秒単位)。60 秒以下の値を推奨します。
Socket 情報の読み取り間隔
ソケットメタデータの読み取り間隔 (秒単位)。30 秒以下の値を推奨します。
プロトコルのウィンドウ集約
プロトコルメトリック統計間隔内のプロセスレベルのデータ集約ウィンドウのサイズ。このパラメーターは、リソース消費を制御し、多数の異なる呼び出しがある場合に Logtail の高いメモリ使用量を防ぐのに役立ちます。デフォルト値は、クライアントで 500、サーバーで 5,000 です。
設定が完了すると、Simple Log Service は Metricstore などのアセットを自動的に作成します。
次のステップ
Kubernetes データプレーンのモニタリングデータが収集されると、Full-stack Observability アプリケーションは自動的に専用のダッシュボードを生成します。このダッシュボードを使用してモニタリングデータを分析できます。詳細については、「ダッシュボードの表示」をご参照ください。