Kubernetes監視

Kubernetes監視を使用して、コンテナによるインフラストラクチャの各コンポーネントを監視し、Kubernetesクラスターの正常性とパフォーマンスを監視します。

目次

監視の追加

Site24x7ではオンプレミス、Azure (Azure Kubernetes Engine)、AWS (Elastic Kubernetes Service)、GCP (Google Kubernetes Engine)、MicroK8sといったプラットフォームでのKubernetes監視に対応しています。
Kubernetes監視を追加するにはSite24x7にログイン後、[サーバー]→[Kubernetes]→[クラスター]の横にある[+]アイコンをクリックしてください。

方法1:デーモンセット

ロールベースのアクセスコントロール権限を設定し、デーモンセットとしてSite24x7エージェントをインストールします。

  1. Site24x7のKubernetes監視の追加ページから、site24x7-agent.yamlファイルをダウンロードします。
  2. 次のコマンドを実行してシークレットを作成し、YAMLに適用します。<device-key>は自身のデバイスキーに置換してください。
    kubectl create secret generic site24x7-agent --from-literal KEY='<device-key>' && kubectl apply -f site24x7-agent.yaml
  3. kube-state-metricsを設定するために、site24x7-kube-state-metrics.yamlファイルをダウンロードして、クラウドシェルまたはマスターノードターミナルに保存します。
    次のコマンドをを実行してYAMLを適用します。
    kubectl apply -f site24x7-kube-state-metrics.yaml
kube-state-metricsを有効にすると、より詳細なKubernetesメトリックを監視できます。

site24x7-agentポッドが作成され実行状態であることを確認します。Site24x7にノード、コンテナー、ポッド、デプロイメント、HPA、レプリカセットが追加されるには数分かかります。

プロキシ設定:

プロキシが設定されている場合、site24x7-agent.yamlファイルのenvにある次の行をアンコメントして、プロキシの値を更新します。

- name: http_proxy
value: http://192.108.100.100:1118
- name: https_proxy
value: https://192.108.100.100:1118

方法2:Helm

Helmチャートを使用してKubernetesエージェントをインストールする手順は次のとおりです。

  1. Helmをインストールします。
  2. 次のコマンドを実行して、Site24x7 Helmレポジトリを追加します。
    helm repo add site24x7 https://site24x7.github.io/helm-charts/
    helm repo update
  3. 次のコマンドを実行して最新バージョンのチャートを取得します。

    helm repo update
  4. [管理]→[開発者]→[デバイスキー]からデバイスキーを取得します。
  5. 次のコマンドを実行してシークレットを作成します。<device-key>は自身のデバイスキーに置換してください。

    kubectl create secret generic site24x7-agent --from-literal KEY='<device-key>'  
  6. 次のコマンドを実行して、エージェントをデプロイします。
    Helmバージョン3以上の場合:
    helm install <RELEASE_NAME> --set site24x7.device_key='' site24x7/site24x7agent
    Helmバージョン2の場合:
    helm install --name <RELEASE_NAME> --set site24x7.device_key='' site24x7/site24x7agent

デーモンセット経由でクラスター内の全ノードにSite24x7が追加されます。数分後、Site24x7アカウントでデータが収集が行われます。

プロキシ設定:

Helmインストールコマンドにプロキシ設定のインストールパラメーターを設定します。

サンプルコマンド:
helm install <RELEASE_NAME> --set -site24x7.device_key=''" --set site24x7.http_proxy ="http://192.108.10.10:3128" --set site24x7.https_proxy ="http://192.108.10.10:3128" site24x7/site24x7agent
プロキシ認証のサンプル:
helm install <RELEASE_NAME> --set -site24x7.device_key=''" --set site24x7.http_proxy ="http://username:password@192.108.10.10:3128" --set site24x7.https_proxy ="http://username:password@192.108.10.10:3128" site24x7/site24x7agent
RELEASE_NAMEを入力により、Helmチャートを特定します。
例:site24x7-agent

上記により、エージェントがデーモンセット経由でクラスター内の全ノードにインストールされます。
これに加えて、メトリック取得のためkube-state-metricsがデプロイメントとしてデプロイされます。

方法3:Sidecarコンテナー

ロールベースのアクセスコントロール権限を設定し、エージェントをSidecarコンテナーとしてコンテナーにデプロイします。

  1. Site24x7 Sidecar YAMLファイルをダウンロードします。
  2. クラウドシェルまたはマスターノードターミナルにファイルを保存します。
  3. ファイルを開き、アプリケーションのイメージと名前をアプリケーションコンテナーに置換します。

    デバイスキーは[管理]→[開発者]→[デバイスキー]で表示されます。

  4. 次のコマンドを実行してシークレットを作成し、YAMLに適用します。<device-key>は自身のデバイスキーに置換してください。
    kubectl create secret generic site24x7-agent --from-literal KEY='<device-key>' && kubectl apply -f site24x7-sidecar-agent.yaml
プロキシ設定を行う場合は、YAMLファイル内の次の行をアンコメントし、プロキシの値を入力します。
Name: http_proxy
Value:
Name: https_proxy
Value:

Kubernetesメトリックであるkube-state-metricsを有効化する方法は次のとおりです。

  1. kube-state-metrics YAMLファイルをダウンロードします。
  2. クラウドシェルまたはマスターノードターミナルにファイルを保存します。
  3. 次のコマンドを実行し、YAMLを適用します。
kubectl apply -f site24x7-kube-state-metrics.yaml
  • このデプロイによりKubernetesインフラ全体がディスカバリーされます。
  • エージェントはside-carコンテナーとして実行しているため、ノード、ポッド、コンテナーのメトリックはポッドのみ表示されます。
  • 各ポッドのパフォーマンスを監視したい場合、各ポッドでエージェントを実行してください。

方法4:GKE Autopilot

ロールベースのアクセスコントロール権限をクラスターに設定し、GKE Autopilotにデーモンセットとしてエージェントをインストールします。

  1. Site24x7 GKE Autopilot YAMLファイルをダウンロードします。
  2. クラウドシェルまたはマスターノードターミナルにファイルを保存します。
  3. 次のコマンドを実行してシークレットを作成し、YAMLを適用します。<device-key>は自身のデバイスキーに置換してください。
    kubectl create secret generic site24x7-agent --from-literal KEY='<device-key>' && kubectl apply -f site24x7-gke-autopilot-agent.yaml
プロキシ設定を行う場合は、YAMLファイル内の次の行をアンコメントし、プロキシの値を入力します。
Name: http_proxy
Value: <http_proxy_value>
Name: https_proxy
Value: <https_proxy_value>

方法5:Openshift

ロールベースのアクセスコントロール権限をクラスターに設定し、Openshiftにデーモンセットとしてエージェントをインストールします。

  1. site24x7-openshift-agent.yamlファイルをダウンロードします。
  2. Cloud Shellまたはマスターノードターミナルにファイルを保存します。
  3. ダウンロードしたYAMLファイルを開き、デバイスキー項目を自身のデバイスキーに置換します。
  4. 次のコマンドをコピーして実行しYAMLを適用します。
    oc apply -f site24x7-openshift-agent.yaml

プロキシ設定

プロキシを設定している場合、YAMLファイルのenv配下の次の行をアンコメントし、プロキシ値を更新します。
- name: http_proxy
 value: <http_proxy_value>
- name: https_proxy
 value: <https_proxy_value>

監視の編集

Kubernetes監視の編集ページで、Kubernetesクラスター設定を編集できます。

  1. Site24x7画面で、[サーバー]→[Kubernetes]→[クラスター]をクリック後、監視名を選択し、[クラスターの詳細]をクリックします。
  2. 表示名横のハンバーガーアイコンから、[編集]を選択します。
  3. 表示名の編集、監視グループへの関連付け、タグ、IT自動化テンプレート、ネームスペースへの包含と除外、設定プロファイルの編集を行えます。
  4. リソース停止設定で、リソース停止アラートのミュート機能を使用して、リソースを停止した際のアラートをミュートします。
    [停止リソースの自動削除]を有効化すると停止されたリソースが削除されます。
  5. [保存]をクリックします。

ダッシュボード

ビジネスビュー

Kubernetes監視が追加されると、クラスタ全体を表示するビジネスビューが作成されます。

[インフラストラクチャビュー]と[サービスビュー]を切り替えると、外れ値を見つけて、Kubernetesクラスターの異常な監視パターンを検出します。
詳細は、こちらのページをご確認ください。

インフラストラクチャビュー:

クラスタ、ノード、ポッド、コンテナの情報をノード単位で表示します。

サービスビュー:

クラスタ、サービス、ポッド、コンテナの情報をサービス単位で表示します。

パフォーマンスメトリック

Site24x7にコンポーネントを追加すると、次のパフォーマンスメトリックを参照できます。

サービスのパフォーマンスメトリック

[サーバー]→[Kubernetes]→[クラスター]→[サービス]をクリック後、参照したい監視名を選択することで、パフォーマンスメトリックを表示します。

メトリック名 説明
サマリー
設定の詳細 ロードバランサーとクラスターの名前、タイプ、アノテーション、ID、ラベル、IPアドレスなどの情報を表示します
インベントリー情報
関連コンポーネント デプロイメント、ノード、ポッドに関連付けられているその他コンポーネントを表示し、リソースタイプをクリックすると詳細なレポートが表示されます

ノードのパフォーマンスメトリック

[サーバー]→[Kubernetes]→[クラスター]→[ノード]をクリック後、参照したい監視名を選択することで、パフォーマンスメトリックを表示します。

メトリック名 説明
サマリー
設定の詳細 名前、作成時間、ユニークID、アノテーションなどが表示されます
識別子 ノードに関連付けられているラベルとアノテーションが表示されます
条件 ノード機能の各条件です。この条件でしきい値が設定されます
リソース ノードのリソース容量と使用率です
依存関係 特定のノードのポッド情報が表示されます
パフォーマンス
CPUコアのリソース使用率 ノードのCPUリソースの合計です
メモリバイトのリソース使用率 ノードのメモリリソースの合計です
未スケジュールノード ノードが新規ポッドにスケジュールできるかどうかです

ポッドのパフォーマンスメトリック

[サーバー]→[Kubernetes]→[クラスター]→[ポッド]をクリック後、参照したい監視名を選択することで、パフォーマンスメトリックを表示します。

メトリック名 説明
サマリー
設定の詳細 名前、ホストIP、DNSポリシー、ラベルなどが表示されます。
条件 ポッド機能の条件です。この条件でしきい値が設定されます。
パフォーマンス
ポッドステータス 選択した期間でのポッドのステータスです
待機ポッドステータス ポットがリクエスト受信のために待機しているかどうかを示します
スケジュールポッドステータス ポッドのスケジューリング処理のステータスです

コンテナーのパフォーマンスメトリック

[サーバー]→[Kubernetes]→[クラスター]→[コンテナー]をクリック後、参照したい監視名を選択することで、パフォーマンスメトリックを表示します。

メトリック名 説明
ポートバインディング コンテナに公開されているポートの詳細とホストとのマッピング状況です
ボリュームバインディング コンテナにアタッチされているボリュームの詳細です
CPU使用率 ポッドのコンテナCPU使用率です
ネットワーク統計 コンテナのインターフェースで受信および送信されたバイト数です
I/O使用率 コンテナとディスク間での読み取り、書き込み、完了I/O操作数です
匿名メモリ統計 カーネルでアクティブおよび非アクティブと認識された匿名メモリ量です
ファイル統計 カーネルアクティブおよび非アクティブと認識されたキャッシュメモリです
キャッシュサイズ 制御グループのプロセスで使用されているメモリ量です
ページ統計 Cgroupに課金(アカウントに追加されている)ページ数で、PgPinが増加します。ページが未課金(Cgroupに請求されていない)場合、PgOutが増加します
レジデントセットサイズ プロセスのノンキャッシュメモリです
メモリの合計 スタック、ヒープ、匿名メモリ以外のコンテナディスクメモリ量です
スワップメモリ コンテナが使用可能なすべてのRAMを使い果たしたときの、ディスクに付与されるの過剰メモリです
再生不可メモリ 再利用できないメモリの量。通常、これはmlockでロックされたメモリを指します。秘密鍵やその他の機密情報がディスクにスワップアウトされないようにするための暗号フレームワークでよく使用されます

デプロイのパフォーマンスメトリック

[サーバー]→[Kubernetes]→[クラスター]→[デプロイ]をクリック後、参照したい監視名を選択することで、パフォーマンスメトリックを表示します。

メトリック名 説明
設定の詳細 名前、作成時間、ユニークID、ラベル、アノテーションなどが表示されます
レプリカセットのステータス レプリカセットごとのステータスです
ポッド数 ノード内のポッドリソース数です
利用可能および利用不可ポッドのステータス スケジューリングが利用可能および利用できないノードのポッドリソース数です
ポッドの必要数 正常なポッドの最小必要数です
停止デプロイメントのステータス デプロイメントが停止しているかどうかを示します
ローリングアップデート中に使用できないレプリカ ローリングアップデート中に使用できないレプリカの最大数です

レプリカセットのパフォーマンスメトリック

[サーバー]→[Kubernetes]→[クラスター]→[レプリカセット]をクリック後、参照したい監視名を選択することで、パフォーマンスメトリックを表示します。

メトリック名 説明
設定の詳細 名前、作成時間、ユニークID、ラベル、アノテーションなどが表示されます
レプリカの合計 デプロイメントごとのレプリカの合計です
フルラベルレプリカ レプリカセットごとのフルラベルレプリカの数です
待機レプリカ レプリカセットごとの待機レプリカの数です
レプリカセットの必要ポッド レプリカセットの必要ポッドです

デーモンセットのパフォーマンスメトリック

[サーバー]→[Kubernetes]→[クラスター]→[デーモンセット]をクリック後、参照したい監視名を選択することで、パフォーマンスメトリックを表示します。

メトリック名 説明
設定の詳細 名前、作成時間、ユニークID、ラベル、アノテーションなどが表示されます
利用可能なデーモンセット数 デプロイメントごとの利用可能なデーモンセット数です
スケジュールデーモンセット 最低1つ以上のデーモンポッドが稼働しているノード数です
デプロイされた待機デーモンセット デーモンポッドが稼働していて1つ以上が稼働または待機中のノード数です
更新されたデーモンセット 更新されたデーモンポッドを稼働しているノードです

エンドポイントのパフォーマンスメトリック

[サーバー]→[Kubernetes]→[クラスター]→[エンドポイント]をクリック後、参照したい監視名を選択することで、パフォーマンスメトリックを表示します。

メトリック名 説明
設定の詳細 エンドポイントおよびネームスペースの名前、ユニークID、作成時間が表示されます
作成済みエンドポイント Kubernetesクラスタ内で作成されたネットワークエンドポイントです
利用可能なアドレス エンドポイントで利用可能なIPアドレス数です
対応不可なアドレス エンドポイントで準備ができていないIPアドレスの数です

水平ポッドオートスケーラー (HPA)のパフォーマンスメトリック

[サーバー]→[Kubernetes]→[クラスター]→[HPA]をクリック後、参照したい監視名を選択することで、パフォーマンスメトリックを表示します。

メトリック名 説明
設定の詳細 HPAとネームスペースの名前、ユニークID、スケールセットの種類、作成時間が表示されます
レプリカ オートスケーラーで管理されているポッドのレプリカ数です
現在 vs 対象CPU使用率 全ポッド間の現在および対象のCPU使用率を示し、70の値を取ると要求されたCPUの70%を平均化されたポッドが使用していることを表します。
現在および必要レプリカ オートスケーラーで管理されているポッドの現在および必要なレプリカ数です
ステータス条件 オートスケーラーの条件です

ステートフルセットのパフォーマンスメトリック

[サーバー]→[Kubernetes]→[クラスター]→[ステートフルセット]をクリック後、参照したい監視名を選択することで、パフォーマンスメトリックを表示します。

メトリック名 説明
ステートフルセットの詳細 ステートフルセットおよびネームスペースの名前、作成時間、ユニークIDが表示されます
コンフィグ詳細 現在および更新されたリビジョン、サービス名、ポッド管理ポリシー、更新戦略などを表示します
ステートフルセットステータスレプリカ ステートフルセットに作成されたレプリカ数です
現在のステートフルセットのレプリカ 現在のバージョンのステートフルセットに作成されたレプリカ数です
ステートフルセットの準備済みレプリカ ステートフルセットに作成された準備済みレプリカ数です
ステートフルセット更新レプリカ 新規バージョンのステートフルセットに更新されたレプリカの数です
レプリカ ステートフルセットごとのレプリカ数です
コリジョン数 ステートフルセットのハッシュコリジョン数です

永続ボリュームクレームのパフォーマンスメトリック

[サーバー]→[Kubernetes]→[クラスター]→[永続ボリュームクレーム]をクリック後、参照したい監視名を選択することで、パフォーマンスメトリックを表示します。

メトリック名 説明
永続ボリュームクレームの詳細 PVCおよびネームスペースの名前、作成時間、ユニークIDが表示されます
コンフィグ詳細 ボリューム名、モード、ストレージクラス、最終編集者などが表示されます
永続ボリュームクレームステータス PVCの現在の情報やステータスが表示されます

レポート

Site24x7画面で、[レポート]→[Kubernetes]をクリックすると、次のレポートでKubernetes監視について表示できます。

  • サマリレポート
  • 可用性サマリレポート
  • ビジー時間レポート
  • 正常性トレンドレポート
  • パフォーマンスレポート

Kubernetesログ

Kubernetesノード上で稼働しているサーバー監視エージェントを経由してKubernetes環境の下記ログを収集して監視します。

セキュリティ

Site24x7エージェントがKubernetes APIを用いて設定データと基本的なパフォーマンスデータを収集します。

使用しているAPIのバージョンはapps/v1であり、エージェントはRBAC認証を用いてAPIにアクセスします。RBAC認証時には、site24x7-agent.yamlファイル適用時に作成される権限をもつ次のオブジェクトが作成されます。

  • ネームスペース "default"配下にサービスアカウント "site24x7"
  • ノードやポッドのAPIへの権限 "list"および"watch"をもつクラスターロール "site24x7"
  • クラスタロールバインディング "site24x7"

site24x7-agent.yamlファイルが適用されると、RBAC認証トークンが作成されて、自動的にSite24x7エージェントコンテナにマウントされます。このトークンを用いてエージェントがAPIにアクセスしてデータを収集します。

Site24x7エージェントのデーモンセット設定:

site24x7-agent.yamlファイルが適用されると、site24x7-agentというデーモンセットが作成されます。このデーモンセットはローリングアップデート戦略に用いられます。

  • site24x7-agentという同一名でポッドが作成されます。
  • イメージ"store/site24x7/docker-agent:<version>"をもつコンテナが作成されます。
    メモ:ImagePullPolicyは"Always"に設定されます。.
  • ボリュームはコンテナ"/etc/, /var/, /proc/, and /var/run/docker.sock"内に適用されます。

パフォーマンスメトリックの収集:

kube-state-metricsは詳細なパフォーマンスデータを収集するために用いられます。これはkube-state-metrics.yamlファイルが適用されている場合のみ有効にできます。パフォーマンスデータはAPIにアクセスすることで収集されます。

http://<KUBE_STATE_IP>:<KUBE_STATE_PORT>/metrics
<KUBE_STATE_IP> -> kube state pod ip
<KUBE_STATE_PORT> -> 8080 by default
待機、稼働、削除状態のコンテナ数、デプロイメント内の利用可能または利用不可なレプリカ数といったメトリックがこれにより有効化されます。

Site24x7エージェントのアクセス:

Site24x7エージェントはKubernetes APIの"List"と"Watch"権限のみを所持しており、それによりsite24x7-agent.yamlファイルを特定します。KubernetesオブジェクトデータはKubernetes APIのみを経由して読み取られ、書き込み操作は行いません。そのためエージェントはKubernetesオブジェクトの作成や更新が行えません。エージェントが収集したデータはKubernetesが首位証している認証メソッドでのみ収集されます。

ライセンス

1 Kubernetesクラスターごとに1ベーシック監視とみなされます。
詳細は、こちらのページをご確認ください。

[サーバー]→[Kubernetes]→クラスターに移動し、消費ライセンス数を表示できます。
特定のクラスターのライセンス使用量列に表示されている数字をクリックすることで消費量の詳細にドリルダウンできます。

FAQ