はじめに
サイオステクノロジーの塚田です。Rancher入門ブログシリーズとして、前回はRancherを使って複数のクラスターを管理する方法について解説しました。本記事では、Rancherを用いてKubernetesクラスターの監視を行う方法について解説します。具体的には、Rancher標準のモニタリング機能を有効化し、PrometheusやGrafanaと連携することでRancherのダッシュボードからクラスターのリソース消費状況をモニタリングしたり、アラート通知を実現する手順を紹介します。これにより、複数のクラスターを効率的に監視・管理できる仕組みを構築することができます。
概要
前提条件
- Rancher Serverが構築済みであること
- Rancher Serverにログインできること
- Rancherから管理対象クラスターを連携済みであること
構築イメージ
RancherのダッシュボードからHelmを利用して、rancher-monitoringアプリケーションをインストールします。これにより、管理対象クラスター内にPrometheusやGrafanaなどのモニタリングツールを導入することができます。rancher-monitoringアプリケーションは、主要なオープンソースの監視およびアラート機能をクラスタに迅速に導入するためのツールです。
Prometheusは、システム監視や時系列データの収集を目的としたオープンソースのモニタリングツールです。Prometheusを利用することで、CPU使用率やメモリ使用量などのリソースデータを効率的に収集し、システムの状況を可視化することができます。
導入後のイメージは以下の通りです。
バージョン情報
- Rancher Monitoring: 105.1.0+up61.3.2※
※本記事執筆時点における最新バージョン
導入手順
モニタリングのインストール
まずはCluster Management画面上で対象クラスターのExploreを押下してクラスターのダッシュボードに遷移します。
Apps内のChartsからMonitoringを選択します。
Monitoringを選択し、Installを押下します。
インストール設定を以下のように入力し、Installを実行します。
- Project: System
- 他はデフォルト
インストール完了後、サイドバーからWorkloadsを選択し、Installed Appsページにrancher-monitoringが存在することを確認します。
Monitoringアプリケーションをインストールすると、クラスターダッシュボードのメニューにMonitoringが追加されます。
この画面から、インストールしたPrometheus、Grafana、Alertmanagerの詳細な設定画面に遷移することができます。
クラスターのモニタリング
rancher-monitoringアプリケーションを導入することで、RancherのUI画面に各種ダッシュボードが追加されます。これを利用して、クラスターのモニタリングを行います。
メニューからClusterを選択し、画面を下にスクロールすると、クラスターのリソース消費状況を表示するダッシュボードが追加されています。
ここではクラスター内の各NodeのCPU利用率、メモリ利用率、ディスク利用率などを確認することができます。
Summaryの横にある、Grafanaへのリンクを押下するとクラスター内で稼働しているGrafanaの画面に遷移することができます。
Grafanaへ遷移した直後は未ログイン状態です。
この状態でもダッシュボードの閲覧は可能ですが、Data Sourceの追加などができません。
Grafanaにadminユーザーとしてログインすると、Data Sourceの追加やダッシュボードの編集が実行できるようになります。
デフォルトのGrafanaのログイン情報は以下の通りです。
- ユーザー:admin
- パスワード:prom-operator
ワークロードのモニタリング
クラスター単位だけではなく、クラスター内部のリソースも監視することができます。手順は以下の通りです。
サイドバーからWorkloadsに遷移します。
DeploymentsやPodsに移動し、Metricsタブを押下するとPodのリソース消費状況のダッシュボードが表示されます。
アラート設定
Rancherのダッシュボード上でAlertmanagerのルールを設定し、各クラスターから設定した通知先にアラート通知を送信することができます。
今回は、nginxのPodからアラートを発報する設定を作成するデモを行います。Rancher上でPodを作成する方法は前回の記事にて紹介しておりますので、参考になれば幸いです。
前提条件
- nginxのPodが起動していること
- SlackのIncoming Webhookを設定し、Slcak API用のURLを発行していること
Slack Webhook URLをキーとするSecretをnginx namespaceに作成します。
- Key: slack_url
- Value: <SLACK_WEBHOOK_URL>
Monitoring→AlartmanagerConfigへ遷移します。
Createを押下してAlartmanagerConfigを新規作成します。
Add Receiverを押下してReciever設定画面へ遷移します。
Add Slackを選択します。
Target情報を入力します。
- 作成したSecretを選択
- defaultチャンネル欄に作成した検証用チャンネルを入力
Routeを設定します
- プルダウンからAlartmanagerConfigを選択
- MatcherでSecretと同じnamespaceを指定
サイドバーのMonitoringからPrometheus Ruleに遷移し、Createを押下してアラートルールを作成します。
以下のように設定します。
- namespace: アラートを発報したいリソースと同じnamespaceを指定
- name: 任意の名称
- Rule Group 1の設定
- Group Name: 任意の名称
- Add Alertを選択し、アラートルールを入力
- Alert Name: 任意の名称
- PromQL Expression: container_memory_working_set_bytes{pod=~”nginx.*”} > 1000000
- Severity: critical
- Annotations: Messageを有効化し、任意のメッセージを入力
指定したSlackチャンネルにアラートが送信されたことを確認します。
このように、Rancherのダッシュボード画面上からAlertmanagerの通知ルールを設定し、アラートをSlackに送信することができます。これにより、複数のクラスターが稼働している環境下でも、アラート設定をRancher上で一元管理することができます。
まとめ
本記事では、RancherのKubernetesクラスター監視機能を利用して管理対象クラスターをモニタリングする方法を解説しました。
一般的に、PrometheusやGrafanaはHelmを用いてインストールされることが多いですが、この方法ではインストール後に設定やツール間の連携を手動で行う必要があり、セットアップに時間と手間がかかる場合があります。さらに、管理するクラスターが増えるほど、それぞれのクラスターでモニタリング環境を構築・管理する工数も比例して増加し、運用の負担が大きくなる傾向があります。一方で、rancher-monitoringアプリケーションを利用することで、PrometheusやGrafanaのインストールと設定をRancherのUIから簡単に一括管理でき、手動設定の手間を大幅に削減できます。特に、複数クラスターを管理している環境では、Rancherの一元化されたダッシュボードを活用することで、効率的にモニタリング環境を構築できる点が大きなメリットです。
次回の記事では、RancherとLonghornを組み合わせた分散ストレージの管理方法を紹介します。ぜひご期待ください。