Intern

Dockerを用いてGrafanaとInfluxDBを繋げる(3日目後半)

はじめに

  以前、GrafanaCloudを用いてGrafanaをインストールする方法についてブログを投
  稿した。しかし、今回GrafanaCloudとInfluxDBを接続しようと試みたが、接続する
  ことができなかった。そこで、今回はDockerを用いてGrafanaとInfluxDBをインス
  トールし、接続する方法を改めて紹介する。


目次

準備 ( カスタムネットワークの 作成 と 起動 )

 ① カスタムネットワークの作成
  GrafanaとInfluxDBを接続する際に、「カスタムネットワーク」を作成しないと接続
  できなかったため、最初にカスタムネットワークを作成する。カスタムネットワーク
  を使用することで、コンテナ間の通信が確実になるという利点が得られる。

  まず、以下のコマンドを使用してDockerのカスタムネットワークを作成する

docker network create my_custom_network

 ➁ InfluxDBコンテナの起動
  次に、InfluxDBコンテナをカスタムネットワークに追加して起動する。
  これにより、InfluxDBがカスタムネットワークで他のコンテナとの通信が可能になる。

docker run -d --name influxdb --network my_custom_network -p 8086:8086 -v influxdb-storage:/var/lib/influxdb influxdb:latest

 ➂ Grafanaコンテナの起動
  同様に、Grafanaコンテナをカスタムネットワークに追加して起動する。

docker run -d --name grafana --network my_custom_network -p 3000:3000 -v grafana-storage:/var/lib/grafana grafana/grafana:latest

InfluxDBの初期設定

 ① ブラウザで”http://localhost:8086“にアクセスし、InfluxDBを
  開く。

 ➁ ユーザー名、パスワード、組織名、バケットを設定する。

 ➂ データを挿入するバケットと方法の選択を行う。

   ・ 左の欄にある「」マークを押し、「BUCKETS」を選択。

   ・ 作成したバケットの「+ ADD DATA」を押し、「Line Protocol」を選択。

 ➃ バケットにデータを挿入する。

   ・「ENTER MANUALLY」を押し、仮データを挿入。 ( 下に提示 )

   ・「WRITE DATA」を押す。

t0921 name="宇都宮",population=93215,date_mod="2004-5-29"
t0922 name="小山",population=23719,date_mod="2004-7-6"
t0923 name="佐野",population=43817,date_mod="2004-8-12"

   ・ 上の画像の通りの画面になっていればデータ挿入完了

 ➄ データの確認

   ・ 左の欄にある「グラフマーク」を押し、「Data Explorer」を開く

画像に alt 属性が指定されていません。ファイル名: image-173-1024x492.png

   1. 「Measurement Tag」を選択
      (メジャーメントタグ … データを識別するための情報・値)

   2. 「field」で3つの要素にチェックを入れる(日付・名前・人口)

   3. 右の欄にある「AGGREGATE FUNCTION」を「CUSTOM」に変更し、
     「mean」を削除

   4. 画面の上部にある「View Raw Data」をオンにする

 ➅ API TOKENの作成

   ・ 左の欄にある「」マークを押し、「API TOKENS」を選択。

   ・ 「+ GENERATE API TOKEN」を押した後、
AII Access API Token」を選択。

   ・ 必要な場合説明を記載し、「SAVE」を押す。

   ・ 作成した「API TOKEN」が表示されるので、
     コピーし、忘れないように別の場所に保存するなどして対策する。

Grafanaの初期設定

 ① ブラウザで”http://localhost:3000“にアクセスし、Grafanaにロ
   グインする。


    ・初回ログイン時、ユーザー名・パスワードは「admin」となっている。
    ・初回ログイン後に新しいパスワードを設定する。

➁ データソース( InfluxDB )の追加

 ・ 左側のメニューから「Connections」 > 「Data Sources (データソース)」を選択。

 ・「Add data source (データソースを追加)」をクリック。

 ・「InfluxDB」を選択。

➂ InfluxDBの接続情報を入力

 ・下記の通りに変更・入力する

  ① Query LanguageFluxに変更

  ➁ HTTP の URL → 「http://localhost:8086

  ➂ 「Basic auth」がオンになっているか確認

  ➃ InfluxDBで設定した「ユーザー名」を入力

  ➄ InfluxDBで設定した「パスワード」を入力

  ➅ Organization → InfluxDBで設定した「組織名」を入力

  ⑦ TokenInfluxDBで生成したAPIトークンをコピーして貼り付ける。

  ⑧ Default BucketInfluxDBで設定した「バケット名」を入力

    →「Save & Test」をクリックして接続

InfluxDBの中身をGrafanaで可視化

 ・「Dashboads」 → 「+ Create Dashboads」でダッシュボード作成

 ・「+ Add visualization」 → 「influxDB」を選択する

from(bucket: "testbucket")
  |> range(start: 0)
  |> filter(fn: (r) => r._measurement == "t0921" or r._measurement == "t0922" or r._measurement == "t0923")
  |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")
  |> keep(columns: ["_time", "name", "population", "date_mod"])

 ・上記のコードを「Query」に挿入後、「Apply」を押すことで、
  InfluxDBにあるデータがテーブルグラフで表示される。