CPへ届け Kubernetesで利用するモニタリングスタック Prometheus

こんにちは、サイオステクノロジーの前田です。本日はKubernets環境でのモニタリングスタック(ほぼPrometheus)についてお話ししていきます。

アプリケーションを運用するときにはサービスが動作しているか監視します。監視の中でもCPUやメモリの使用量等をモニタリングして、サービスの使用量によるマシン設定の変更やリソース不足の問題等を見極めます。Kubernetesではその仕組みとしてPrometheusを使用したモニタリングを行うことが多いです。OKDもPromehteusを利用したモニタリングが存在しますので本記事ではモニタリングに関した内容を紹介していきます。

モニタリングスタックとは

モニタリングスタックとは、モニタリング機能とモニタリングで利用するコンポーネント群のことです。Prometheusはモニタリングで利用されるのですが、モニタリング機能以外のアラートや視覚化の要素はPrometheus以外を利用します。モニタリング単体ではなくモニタリングスタックとして利用することで、利用者の要望をかなえる動作ができます。

  • OKDのモニタリングスタックの主なコンポーネント
    • Prometheus
      • モニタリングとアラートルールを設定してアラートをAlertmanagerに送信する。
    • Alertmanager
      • Prometheusから送信されたアラートを処理し外部の通知システムにアラートを送信する。
    • Thanos Querier
      • メトリクスの集約と重複の排除
    • Grafana
      • メトリクスの分析および可視化のためのダッシュボードを提供
  • OpenShift(OKD)のモニタリングスタック
    • 初期構築時にクラスターオペレーターという形でデプロイされています。最初からメトリクスを取得しており、クラスター管理画面からモニタリングデータを閲覧することが可能です。
    • アプリケーションとしての冗長性はありますが、ストレージは初期状態では永続ストレージではなくローカルストレージのため注意が必要です。
    • ユーザ独自に作成したプロジェクト内部のアプリケーションのコンテナのCPUやメモリ等の情報は取得します。独自に設定したエクスポーターに関しては、オペレータの設定変更が必要です。

OKDモニタリングスタック構成情報

Prometheusについて

オープンソースのシステム監視およびアラートツールです。Kubernetesで利用されるメジャーなモニタリングツールです。

  • 特徴としては、下記の要素があります。
    • Key-Valueで表現される多次元データモデル
    • PromQLを利用した柔軟なクエリ
    • アプリケーションやサービスに応じた多数のエクスポーター
    • Pull型でHTTPを介したメトリクス収集モデル
    • サービスディスカバリを利用した監視ターゲットの自動検出

アーキテクチャ

OKDのモニタリング画面

OKDのモニタリング画面を紹介します。

  • 全体モニタリング画面
    • Administoratorのホームの概要でクラスターの使用率(CPU、メモリー、ファイルシステム、ネットワーク転送、Pod)を見ることができます。
  • プロジェクトのモニタリング画面
    • プロジェクトのリソース使用状況(CPU、メモリー、ファイルシステム、ネットワーク転送,Pod)を見ることがdきます。
  • クラスターのモニタリング画面
    • クラスターの監視の画面
      • メトリクス(PromQLを使用したメトリクスを確認)
      • ダッシュボード(PromQLで記載可能ないくつかの情報を表示)
      • アラートルール
  • Developerのプロジェクト内部のモニタリング画面
    • ダッシュボード(各種メトリクス情報が閲覧可能)
    • メトリクス(特定のクエリ―から選択)

よく変更される箇所

初期状態でよく変更される内容の二つについて記載します。下記内容はInsights の機能を利用している場合、改善したほうがいいと表示される内容でもあります。

  • 永続ストレージ設定
  • アラートレシーバの設定

永続ストレージ設定

デフォルトでは永続ストレージを利用していません。設定変更して永続ストレージを利用するように設定します。下記に簡易な設定方法を記載します。既存のコンフィグファイルがある場合は上書きしてしまうため注意してください。

  • コンフィグファイルの作成
    • vi cluster-monitoring-config.yaml
    • apiVersion: v1
      kind: ConfigMap
      metadata:
        name: cluster-monitoring-config
        namespace: openshift-monitoring
      data:
        config.yaml: |
          prometheusK8s:
            retention: 15d
            volumeClaimTemplate:
              spec:
                storageClassName: gp2
                resources:
                  requests:
                    storage: 40Gi 
      
  • コンフィグファイルの適応
    • oc apply -f cluster-monitoring-config.yaml
      
  • 永続ストレージの設定確認
    • oc get pv -n openshift-monitoring
    • 2つpvが作成されて、永続ストレージに新たにデータが保存されます。

参考URL:モニタリングスタックの設定

アラートレシーバの設定

アラートが発生したときは、クラスター外部に通知していると運用上すごく助かります。メールやslackやwebhookに送信する設定をクラスターの管理画面から設定します。

  • アラートレシーバの設定
    • クラスター管理コンソールにcluster-admin権限をもつユーザでログイン
    • 管理 -> クラスター設定 -> 設定 -> Alertmanager の順に選択します。
    • 画面下記の統合タイプの設定を選択します。
    • レシーバを設定します。
    • レシーバ個別の設定を行います。

最後に

Prometheusとgrafanaを利用すること関しては導入と初期設定をすると大変ですが、OKDやOpenShiftは導入されているので初期設定が少なくて楽できます。

モニタリングの範囲でクラスター側の設定はされています。しかし、ユーザのアプリケーションに対しては設定されていません。javaやphpやdb等のアプリケーション固有のモニタリングに関してはエクスポーターを開発者自ら設定すること、kubernetesクラスターのmonitoringオペレーターの設定変更をするという設定変更が必要になります。

Prometheusの導入や設定に関していろいろ学習しないといけないこともありますが、本記事が読者のKubernetesに関わる負担を解決する一つになれば幸いです。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です