関連記事

【Prometheus】Node exporterをざっくり理解

Prometheusのアーキテクチャをざっと理解する




本記事では、Promethesについてざっくり解説して、実際に簡単な監視をしてみたいと思います。
実際に試す際は、ローカルにDocker Composeで構築します。

Prometheusとは、メトリクスに基づいた監視とアラートができるツールキットです。
メトリクスとは、特定の対象を測定した数値です。(メモリの使用率とか)
Prometheusはメトリクス管理ソリューションとして広く使用されており、Kubernetesとも組み合わせて利用されます。

Prometheus - Monitoring system & time series database
An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.
Prometheusには以下のような特徴があります。
グラフ化の部分はGrafanaなどが使われたりします。
Prometheusはいくつかのコンポーネントから構成されています。
Prometheusのドキュメントより
Alertmanagerでアラートを出したり、exporterを利用してPrometheus形式のメトリクスを出力したりします。
exporterはさまざまな種類のものがあります。
Exporters and integrations | Prometheus
Prometheus project documentation for Exporters and integrations
Docker Composeを使ってローカルで動かしてみます。
まずはPrometheusの設定ファイルを作成します。
今回監視するのは、Prometheus自身とnode-exporterのコンテナになります。
設定ファイルprometheus.ymlは以下の通りです。
1global:
2 scrape_interval: 15s # デフォルトの監視対象にpullする間隔
3 external_labels: # 外部と通信するときのラベル
4 monitor: 'codelab-monitor'
5scrape_configs: # 監視対象ごとの設定
6 - job_name: 'prometheus' # Prometheus自身の監視
7 scrape_interval: 5s # デフォルトの間隔を上書き
8 static_configs:
9 - targets: ['localhost:9090']
10 - job_name: 'node-exporter'
11 static_configs:
12 - targets: ['<PCのIPアドレス>:9100']node-exporterのIPアドレスはローカルPCのIPアドレスになるので、ifconfigなどでIPアドレスを調べて追記してください。PrometheusからみるとlocalhostはPrometheus自身になるので、node-exporterのIPアドレスをlocalhostにすると通信できないので注意してください。
Prometheusとnode-exporterのコンテナをDocker Composeで構築します。
docker-compose.ymlは以下の通りです。
1version: '3'
2services:
3 prometheus:
4 image: prom/prometheus
5 volumes:
6 - ./prometheus.yml:/etc/prometheus/prometheus.yml
7 ports:
8 - '9090:9090'
9 node-exporter:
10 image: quay.io/prometheus/node-exporter
11 ports:
12 - 9100:9100
13 volumes:
14 - ./proc:/host/proc
15 - ./sys:/host/sys
16 - ./rootfs:/rootfsDocker Composeでコンテナを起動させます。
1docker-compose up -dhttp://localhost:9090/graphにアクセスするとPrometheusのWeb UIが確認できます。
Prometheusからメトリクを確認してみます。
PromQLというPrometheusのデータを取得・集約するクエリ言語を使用します。
Querying basics | Prometheus
Prometheus project documentation for Querying basics
まずはnode-exporterからCPUの使用時間を見てみます。
1rate(node_cpu_seconds_total{mode="system"}[1m])
次にネットワークのトラフィックを見てみます。
1rate(node_network_receive_bytes_total[1m])