Help us understand the problem. What is going on with this article?

Javaからの監視入門 Prometheusに触れる

More than 1 year has passed since last update.

Prometheusって何?

Pull型の監視システム。OSS。
メモリ、CPUの使用量などが監視できるシステム。

プル型の監視システムって何?

通常の監視システム(Meckerel,Sensuなど)は、
監視する側にエージェントをインストールして、監視サーバーへ情報を送る。

反対にPull型は、監視サーバーが監視する側から情報を取得する。

メリット・デメリット

Push型

[メリット]
・監視対象にアプリをインストールだけで簡単
・監視対象が増えてもサーバーの設定変更が少ない

[デメリット]
・監視量が増えると、監視サーバーの負荷が多い

Pull型

[メリット]
・監視対象がダウンしていることがPush型より簡単に分かる
・監視サーバーの負荷がPushより低負荷

[デメリット]
・監視対象のエンドポイントを設定しないといけない。単純インストールだけではない。
・監視対象が増えると、都度設定が必要

今回のゴール

Springのアプリケーションで、Promethusにデータを連携して、
Grafana(グラファナ)でいい感じに表示にする。

image.png

手順

SpringにPromethusのエンドポイント作成

Spring Initializr [ https://start.spring.io/ ]より、Spring Actuatorを追加。
Spring Actuator(アクチュエータ)はSpringのダンプやヘルスチェックなどを確認できるようになる。

image.png

依存関係にMicrometer Registry Prometheusをセット。
[ https://mvnrepository.com/artifact/io.micrometer/micrometer-registry-prometheus ]

Maven Repository:.png

プロパティファイルより、エンドポイントをオープン。

application.properties
# フルオープン
management.endpoints.web.exposure.include=*

アプリケーションを起動してエンドポイントができたことを確認。

http://localhost:8080/actuator/prometheus

Prometheusの設定

以下のYMLで設定が可能

prometheus.yml
global:
  # Target取得の頻度
  scrape_interval:     10s
  evaluation_interval: 10s

#監視対象の設定
scrape_configs:
  # Spring Boot App Exporter 監視設定
  - job_name: 'springboot'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['web:8080']
        labels:
          group: 'docker-springboot'

Prometheus・Grafana・アプリの起動

DockerComposeで起動する。

docker-compose.yml
version: '3.1'
services:

  web:
    build: app/
    ports:
      - "8080:8080"

  monitor:
    build: prometheus/
    ports:
      - "9090:9090"
    depends_on:
      - "web"

  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
Prometheusを確認

▼ 監視対象を確認する画面

http://54.238.228.193:9090/targets

image.png

▼ グラフの確認画面

http://54.238.228.193:9090/graph

image.png

しかし、グラフのUIがいまいち。ということでGrafanaで見る。

Grafanaを確認

URL: http://localhost:3000
ID: admin(初期)
PASS: admin(初期)

▼ データソースを選択

image.png

以下のようにURLを設定

Prometheus.png

▼ ダッシュボード作成

AddQueryを選択

image.png

あとは、自身のお好みで設定

New dashboard.png

その他余談

・ Springで設定するPromethunsのエンドポイントのクラスは継承して独自カスタマイズ可能

・ 通知設定がPromethunsとGrafanaは大変かも

haruto167
2018年から技術メモ残したいと思いQiitaはじめました!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away