【監視入門】とりあえず使ってみるPrometheus

2021.12.04
2024.03.24
監視
Docker ComposePrometheus

はじめに

本記事では、Promethesについてざっくり解説して、実際に簡単な監視をしてみたいと思います。

実際に試す際は、ローカルにDocker Composeで構築します。

Prometheusとは

Prometheusとは、メトリクスに基づいた監視とアラートができるツールキットです。

メトリクスとは、特定の対象を測定した数値です。(メモリの使用率とか)

Prometheusはメトリクス管理ソリューションとして広く使用されており、Kubernetesとも組み合わせて利用されます。

Prometheus - Monitoring system & time series database

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には以下のような特徴があります。

  • メトリクスとキー/バリューの組み合わせで識別する時系列データ(多次元データモデル)
  • PromQLというクエリ言語でデータ抽出
  • 分散ストレージに依存しない
  • HTTPによるPull型の監視
  • ゲートウェイを中継した時系列データのPush
  • サービスディスカバリもしくは設定による監視対象の取得
  • グラフ化やダッシュボードの作成
  • メトリクス形式がさまざまなツールやサービスからサポートされている

グラフ化の部分はGrafanaなどが使われたりします。

アーキテクチャ

Prometheusはいくつかのコンポーネントから構成されています。

Prometheusのドキュメントより

Alertmanagerでアラートを出したり、exporterを利用してPrometheus形式のメトリクスを出力したりします。

exporterはさまざまな種類のものがあります。

Exporters and integrations | Prometheus

Exporters and integrations | Prometheus

An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.

Docker Composeで試す

Docker Composeを使ってローカルで動かしてみます。

Prometheusの設定ファイル

まずは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にすると通信できないので注意してください。

docker-compose.yml

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:/rootfs

Docker Composeの実行

Docker Composeでコンテナを起動させます。

1docker-compose up -d

http://localhost:9090/graphにアクセスするとPrometheusのWeb UIが確認できます。

メトリクスの確認

Prometheusからメトリクを確認してみます。

PromQLというPrometheusのデータを取得・集約するクエリ言語を使用します。

Querying basics | Prometheus

Querying basics | Prometheus

An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.

まずはnode-exporterからCPUの使用時間を見てみます。

1rate(node_cpu_seconds_total{mode="system"}[1m])

次にネットワークのトラフィックを見てみます。

1rate(node_network_receive_bytes_total[1m])

まとめ

  • Prometheusはメトリクス管理ツール
  • exporterでメトリクスを取得

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee