Prometheus はクラウドネイティブアプリケーション向けのオープンソースのモニタリングツールです。 このトピックでは、Alibaba Cloud Container Service for Kubernetes による Prometheus モニタリングシステムのデプロイ方法を解説します。

背景

モニタリングシステムは以下の 2 つのタイプのオブジェクトをモニターします。

  • リソース、つまりノードやアプリケーションのリソース使用率です。 Container Service for Kubernetes のモニタリングシステムはノードのリソース使用率、クラスターのリソース使用率およびポッドのリソース使用率をモニターします。
  • アプリケーション、つまりアプリケーションの内部メトリクスです。 たとえば、モニタリングシステムは、リアルタイムでアプリケーションを使用しているオンラインユーザー数から統計の収集し、サービスレベルモニタリングおよび開放ポートによるアプリケーションへのアラームを実行します。

Kubernetes クラスターで、モニターされるオブジェクトは以下のようになります。

  • システムコンポーネントは、 apiserver、controller-manager および etcd などの Kubernetes クラスターのビルトインコンポーネントです
  • 静的リソースエンティティは、ノードリソースステータスおよびカーネルイベントを含みます。
  • 動的リソースエンティティは、デプロイ、DaemonSet およびポッドのような Kubernetes の抽象ワークロードエンティティです。
  • カスタマイズアプリケーションオブジェクトには、アプリケーションでのカスタマイズが必要なデータおよびメトリクスが含まれます。

システムコンポーネントおよび静的リソースエンティティのモニターのため、設定ファイルでモニタリング方法を指定する必要があります。

動的リソースエンティティのモニターのため、Prometheus モニタリングシステムのデプロイを推奨します。

前提条件

Prometheus モニタリングシステムのデプロイ

  1. 以下のコマンドを実行し、prometheus-operator コードをダウンロードします。
    git clone https://github.com/AliyunContainerService/prometheus-operator 
  2. 以下のコマンドを実行し、Prometheus モニタリングシステムをデプロイします。
    いくつかの Prometheus コンポーネントは、初めてコマンドを実行する際にデプロイが失敗することがあります。これは、Prometheus コンポーネントがデプロイに特定のシーケンスを必要とするためです。 初めてのデプロイの間に、例外が発生した場合、コマンドをもう一度実行する必要があります。
    cd prometheus-operator/contrib/kube-prometheus
    kubectl apply -f manifests
  3. 以下のコマンドを実行し、Prometheus に関するアクセス方法を設定します。
    kubectl --namespace monitoring port-forward svc/prometheus-k8s 9090
  4. デプロイの結果を表示します。
    1. Prometheus を参照するために、ブラウザで localhost:9090 へアクセスします。
      デフォルトでは、Prometheus はインターネットを通じてアクセスできません。 Prometheus へのアクセスにお使いのローカルプロキシを使う必要があります。
    2. [ステータス] メニューで、[ターゲット] をクリックし、すべての収集タスクを表示します。すべてのタスクのステータスが UP の場合、すべての収集タスクは正常に実行されています。

データ集計の参照および表示

  1. 以下のコマンドを実行し、Grafana へアクセスします。
    kubectl --namespace monitoring port-forward svc/grafana 3000
  2. ブラウザから localhost:3000 へアクセスし、ダッシュボードを選択しデータ集計を表示します。
    デフォルトのユーザー名とパスワードはどちらも "admin" です。

警告ルールの表示および警告の非通知設定

  • 警告ルールの参照
    ブラウザから localhost:9090 へアクセスし、[警告] メニューをクリックし現在の警告ルールを表示します。
    • 赤: 警告がトリガーされていることを示しています。
    • 緑: 正常なステータスを示しています。
  • 警告の非通知設定
    以下のコマンドを実行し、ブラウザで localhost:9093 を開きます。 [非通知] を選択し、警告の非通知を設定します。
    kubectl --namespace monitoring port-forward svc/alertmanager-main 9093