はじめに
Prometheus(プロメテウス)はメトリクスの監視を行うモニタリングツールで、Kubernetesクラスタの監視においてもCNCFのプロジェクトとして採用されています。
本記事ではKubernetesクラスターのWorkerNodeのCPU情報をPrometheusを通じてグラフ化します。
尚、YAMLの展開にはパッケージマネージャのHelmを利用しました。
環境情報
$ kubectl get prometheus --all-namespaces NAMESPACE NAME VERSION REPLICAS AGE prometheus prometheus-prometheus-oper-prometheus v2.18.2 1 xx
$ kubectl get node NAME STATUS ROLES AGE VERSION xx Ready <none> xx v1.20.7+IKS
Prometheusのインストール
プロメテウス用の名前空間を作成し
$ kubectl create namespace prometheus
Helmリポジトリを追加した上で
$ helm repo add stable https://charts.helm.sh/stable "stable" has been added to your repositories
以下で展開します。
$ helm install prometheus stable/prometheus-operator --namespace prometheus
作成されたPod群を見るとPrometheusだけでなくログ・データ可視化ツールのGrafanaも展開されています。
$ kubectl --namespace prometheus get pods -n prometheus NAME READY STATUS RESTARTS AGE alertmanager-prometheus-prometheus-oper-alertmanager-0 2/2 Running 0 X prometheus-grafana-7789c77d9d-4jwhn 2/2 Running 0 X prometheus-kube-state-metrics-95d956569-nkn9p 1/1 Running 0 X prometheus-prometheus-node-exporter-txx8c 1/1 Running 0 X prometheus-prometheus-oper-operator-6d9c4bdb9f-tzkdk 2/2 Running 0 X prometheus-prometheus-prometheus-oper-prometheus-0 3/3 Running 1 X
Prometheusにブラウザからアクセスする
展開されているサービスの中にあるservice/prometheus-prometheus-oper-prometheusをブラウザからアクセスするために
$ kubectl --namespace prometheus get service -n prometheus NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP X prometheus-grafana ClusterIP 172.21.48.169 <none> 80/TCP X prometheus-kube-state-metrics ClusterIP 172.21.103.231 <none> 8080/TCP X prometheus-operated ClusterIP None <none> 9090/TCP X prometheus-prometheus-node-exporter ClusterIP 172.21.96.134 <none> 9100/TCP X prometheus-prometheus-oper-alertmanager ClusterIP 172.21.171.143 <none> 9093/TCP X prometheus-prometheus-oper-operator ClusterIP 172.21.172.7 <none> 8080/TCP,443/TCP X prometheus-prometheus-oper-prometheus ClusterIP 172.21.23.53 <none> 9090/TCP X
以下コマンドでポートフォワードを行います。
$ kubectl port-forward service/prometheus-prometheus-oper-prometheus 9090:9090 --address 0.0.0.0 -n prometheus Forwarding from 0.0.0.0:9090 -> 9090
これによってブラウザから以下URLにアクセスをすればPrometheusのGUIが表示されます。
http://localhost:9090
リソースを確認する
ブラウザ上では以下の画面が表示されるので、Expressionという箇所にリソース名を指定してExecuteを実行します。
同欄に文字列を入れると以下のように候補がでるので、そこから該当のものを選べます。今回は
cluster:node_cpu:sum_rate5m
を選択した状態でExecuteを行い、ノードの負荷を上げるような処理(レプリカ数が多いPodを展開)するとGraphにて以下のように確かにリソース情報が表示されていることが確認できました。
終わりに
本記事ではPrometheusをKubernetesクラスターに展開し、リソースの一部を抜き取る方法について解説しました。
今回はデフォルトの/etc/prometheus/prometheus.ymlが以下として配置されていましたが
global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. alerting: alertmanagers: - static_configs: - targets: rule_files: scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090']
同ファイルを編集することでPrometheus自身のカスタマイズも可能です。
以上、ご参考になれば幸いです。