InfluxDBに登録したデータをGrafanaで表示してみる
ども、てっしーです
先日、長野で行われたMyNA会でGrafanaの画面がチラッとでてきました
仕事で調べたこともあったので情報整理のためにブログに残しておきたいと思います
(使ったとは言っていない)
InfluxDB
InfluxData (InfluxDB) - Open Source Time Series Database for Monitoring Metrics and Events
時系列DBと呼ばれるもので時系列のデータを格納するのに適したデータベース
メトリクスやイベントの保存や解析に便利らしい
golangで作られていてバックエンドにはLevelDBを使用している
Grafana
Grafana - The open platform for analytics and monitoring
データソースに蓄積されたデータを可視化するダッシュボードツール
グラファナと読むらしい
棒グラフ・折れ線グラフ・円グラフ・表など、様々な表現方法でデータを可視化することができる
利用するもの
環境面はDockerを、データ登録はcurlでファイルインポートもできるのですが、Pythonを使ってみようと想います
ほぼサンプルのままですが^^;
- Docker:17.03.1-ce
- Docker-compose:1.11.2
- InfluxDB: latest(Docker)
- Grafana: latest(Docker)
docker-compose.yml
何はともあれ環境です
以下の内容で docker-compose.yml
を配置します
# InfluxDB influxdb: image: influxdb environment: - INFLUXDB_ADMIN_ENABLED=true ports: - "8083:8083" #InfluxDBのWeb UI - "8086:8086" #InfluxDBのHTTP API # Grafana grafana: image: grafana/grafana links: - influxdb ports: - "3000:3000"
んで起動
$ docker-compose pull $ docker-compose up -d
止めたり削除する場合は以下のコマンドで
$ docker-compose stop $ docker-compose rm
Webツール画面
InfluxDB
http://localhost:8083 にアクセスしてこんな画面が表示される
データベースを作成します
「Query」にCREATE DATABASE "example"
を入力してエンターキーを押してSuccess! (no results to display)
が表示されれば成功です
続いてユーザを作成します
同じく「Query」にCREATE USER "user" WITH PASSWORD 'user'
を実行してSuccess! (no results to display)
が表示されれば成功です
Grafana
http://localhost:3000/loginにアクセスしてこんな画面が表示される
admin / admin でログインができる
InfluxDBと接続するためにData Sourcesを作成します
データの登録
こちらGitHub - influxdata/influxdb-python: Python client for InfluxDBを参考にsamples.py
を作ってみました
# -*- coding: utf-8 -*- from influxdb import InfluxDBClient client = InfluxDBClient('localhost', 8086, 'user', 'user', 'example') loop = 0 while loop < 10: client.write_points([ { "measurement": "samples", "tags": { "host": "server01", "region": "us-west" }, "fields": { "value": 1 * loop } } ]) loop += 1
「Query」でselect * from samples
を実行すると↓が表示されます
Timeをクライアントから指定できる
samples.py
では指定していないのでシステム日時で登録されますが、過去・未来を指定することも可能です
TagとField
TagはRDBのINDEXのようなものをイメージしてもらえばいいかと思います
GroupByに指定できるのはTagになります
FieldはデータカラムでWHEREに指定することができます
Grafanaから取得してみる
とりあえず入っている通りに表示してみます
直接SQLを書くこともできますしQueryを組み上げていくことも可能です
色々な表示ができますので試してみてください
(決してめんどくさいからではない^^;)
まとめ
InfluxDBはJOINやTagの更新ができないなど気になる点がありますが簡単に利用することができました
機会があればぜひ試してみてくださいー