Node Exporter@Prometheus¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. Node Exporterの仕組み¶
記入中
...
02. セットアップ¶
バイナリとして¶
バイナリファイルをインストールする。
# GitHubのバイナリファイルのリリースページから、テキストのURLを取得する。
# tmpディレクトリ配下にダウンロードする。
$ curl -L https://github.com/prometheus/node_exporter/releases/download/v1.0.0/node_exporter-1.0.0.linux-amd64.tar.gz -o /tmp/node_exporter-1.0.0.linux-amd64.tar.gz
$ tar -xvf /tmp/node_exporter-1.0.0.linux-amd64.tar.gz -C /tmp
# バイナリファイルだけを移動する。
$ mv /tmp/node_exporter/node_exporter-1.0.0.linux-amd64 /usr/local/bin/node_exporter
バイナリに直接的にパラメーターを渡せる。
$ /usr/local/bin/node_exporter --web.listen-address=":9100"
チャートとして¶
チャートリポジトリからチャートをインストールし、Kubernetesリソースを作成する。
$ helm repo add <チャートリポジトリ名> https://prometheus-community.github.io/helm-charts
$ helm repo update
$ kubectl create namespace prometheus
$ helm install <Helmリリース名> <チャートリポジトリ名>/prometheus-node-exporter -n prometheus --version <バージョンタグ>
複数のExporterを一括してインストールする場合、例えばkube-prometheus-stackチャートがある。
$ helm repo add <チャートリポジトリ名> https://prometheus-community.github.io/helm-charts
$ helm repo update
$ kubectl create namespace prometheus
$ helm install <Helmリリース名> <チャートリポジトリ名>/kube-prometheus-stack -n prometheus --version <バージョンタグ>
03. メトリクスの一覧¶
確認方法¶
Node Exporterの場合は、Nodeの『127.0.0.1:9100/metrics
』をコールすると、PromQLで使用できるメトリクスを取得できる。
# Node内でコールする。
$ curl http://127.0.0.1:9100/metrics
...
node_exporter_build_info{branch="HEAD",goversion="go1.15.8",revision="4e837d4da79cc59ee3ed1471ba9a0d9547e95540",version="1.1.1"} 1
...
04. PromQLを使用したメトリクス分析¶
CPU使用率¶
NodeのCPU使用率を取得する。
rate(node_cpu_seconds_total[1m])
メモリ使用率¶
Nodeのメモリ使用率を取得する。
node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes
ディスク使用率¶
Nodeのディスク使用率を取得する。
100 - (node_filesystem_avail_bytes / node_filesystem_size_bytes) * 100
mountpoint
ディメンションを使用して、マウントポイント別のディスク使用率を取得する。
100 - (node_filesystem_avail_bytes{mountpoint="/var/lib/data"} / node_filesystem_size_bytes{mountpoint="/var/lib/data"} ) * 100
job
ディメンションを使用して、収集対象別にのディスク使用率を取得する。
100 - (node_filesystem_avail_bytes{job="foo-node"} / node_filesystem_size_bytes{job="foo-node"} ) * 100
ディスクのI/OによるCPU使用率¶
ディスクのI/OによるCPU使用率 (ディスクのI/OがNodeのCPUをどの程度使用しているか) を取得する。
iostat
コマンドの%util
指標と同じである。
rate(node_disk_io_time_seconds_total[1m])
ディスクのI/Oレスポンスタイム¶
# 読み出しレスポンスタイム
rate(node_disk_read_time_seconds_total[1m]) / rate(node_disk_reads_completed_total[1m])
# 書き込みレスポンスタイム
rate(node_disk_write_time_seconds_total[1m]) / rate(node_disk_writes_completed_total[1m])
パケットの受信サイズ¶
Nodeのパケットの受信サイズを取得する。
node_network_receive_packets_total
これを使用して、DDOS攻撃のアラートを作成することもできる。
(rate(node_network_receive_packets_total[5m]) / rate(node_network_receive_packets_total[5m] offset 5m)) > 10