ヒトリ歩き

愚痴とかいろいろ書きます

ハンズオンで学ぶ:PrometheusとGrafanaの魅力

PrometheusとGrafana、Exporterを使ったことがなかったので、チュートリアルでまずは動かしてみる

Prometheusとは

Prometheusは、オープンソースのシステム監視およびアラートツールキット。メトリクスを時系列データとして収集して保存する。 Prometheusエコシステムは優秀なものがいくつかあるそうだ。

エコシステムとは、製品の連携やつながりによって成り立つ全体の大きなシステムを形成するさまを「エコシステム」と表現する。

makefri.jp

ハンズオン

わかりやすいハンズオンがQiitaにあったので、実際に触ってみることにする。 Grafanaの設定画面が変更?になっているので、一部手順が違うかも。

qiita.com

構成

ファイルの構成は以下のとおり。 docker-compose.yamlにprometheusとgrafanaのコンテナを定義して、prometheus.ymlにprometheusの設定を定義する。

.
├── docker-compose.yaml
└── prometheus
    └── prometheus.yml

用意するもの

ハンズオンに合わせて、dockerを使ってセットアップする。

version: "3"

services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    volumes:
      - ./prometheus:/etc/prometheus/
    ports:
      - 127.0.0.1:9090:9090

  grafana:
    image: grafana/grafana
    container_name: grafana
    ports:
      - 3000:3000
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.
    external_labels:
      monitor: "codelab-monitor"

rule_files:

scrape_configs:
  - job_name: "prometheus"

    static_configs:
      - targets: ["localhost:9090"]

下記のコマンドを実行し、コンテナを起動する。

docker-compose up -d

promethuesとgrafnaが起動したら、ブラウザからアクセスする。 http://localhost:9090にアクセスするとpromethuesにアクセスができ、以下の画面が表示される。

画面の[Status]メニューから[Targets]をクリックし、Endpointに対して動作していることを確認できる。

grafanaにアクセスする場合、http://localhost:3000にアクセスする。 初回起動時は、ユーザ名/パスワードに admin を入力し、ログインする。

ログインすると、以下のような画面が表示される。

prometheusと連携するには、DataSourceから設定する必要があるので、DataSourceをクリックする。 次の画面で、Prometheusをクリックする。

SettingsタグのConnectionにprometheusのURLを入力し、画面下部にある Save&testをクリックする。

コンテナで起動しているので、URLはhttp://prometheus:9090にする必要がある。

メニューからDashboards を選択し、右上のNewボタンからNew dashboardをクリックする。

Import dashboardをクリックする。

https://grafana.com/grafana/dashboards/ にアクセスするとdashboardのテンプレートがあるので、使用したいテンプレートを選択する。 使用したいテンプレートを選択し、Copy ID to clipboardをクリックする。

コピーしたIDを貼り付けて、Loadボタンをクリックし、DataSourceを選択して、Importボタンをクリックする。

インポートしたテンプレートを使ってデータが可視化されるので、あとは保存するだけ。

Exporter連携

Exporterとは

Promethuesと連携して、CPU使用率などのメトリック情報を収集するアプリケーション。

dockerファイルの変更

exporter をdockerで起動するので、docker-compose.yamlにexporterの設定を追加する。

  exporter:
    image: prom/node-exporter
    ports:
      - 9100:9100

localhost:9100を監視対象に追加。

    static_configs:
      - targets: ["localhost:9090",
                  "localhost:9100"]

DashboardをPrometheusと同じように作成

Exporterの情報を表示するテンプレートも用意されているので、それを使用してデータを可視化。

yesコマンドでCPUに負荷をかけたので、CPU使用率が上昇していることがわかる。 画面もカッコいい

最後に

簡単に動かす程度の設定はできた。実際に自分でデータを登録して、自分で作成した画面に表示することはできていないので、自分で登録したデータを表示するというところまではやってみる。 まだまだ、理解不足だなと実感。

参考

qiita.com

qiita.com

knowledge.sakura.ad.jp

zenn.dev