InfluxDBとElasticSearchとGrafanaのためdocker-compose.yml
温湿度センサのDHT11で計測した温度と湿度をダッシュボードに表示するための環境を用意します。以前dweet.ioからアボガド果樹園のデータを取得したときにDockerコンテナで構築しました。このときはコンテナを個別に作成したのでコンテナの起動が煩雑でした。Docker Composeを使うと1つのYAMLに設定をまとめてdocker-compose up
するだけで簡単です。また定義したサービス名がそれぞれの/etc/hosts
に設定してくれます。環境変数に設定するホスト名はこのサービス名を使うことができるのでIPアドレスをinspectしてハードコードする必要がありません。
プロジェクトの作成
適当なディレクトリを作成してdocker-compose.ymlを書くだけです。このディレクトリにはInfluxDBのボリュームをアタッチされます。
$ cd ~/influx_apps
$ tree
.
└── docker-compose.yml
docker-compose.yml
以下のdocker-compose.ymlを作成してinfluxdb、elasticsearch、grafanaのサービスを定義します。すべてTutumがDockerイメージを提供してくれます。
Grafanaのポートだけ他のサービスと競合するのでDockerホストには80から変更して8080にマップしています。
influxdb:
restart: always
image: tutum/influxdb
volumes:
- ./influxdb:/data
environment:
- PRE_CREATE_DB=influxdb
ports:
- "8083:8083"
- "8086:8086"
elastic:
restart: always
image: tutum/elasticsearch
volumes:
- ./elastic:/usr/share/elasticsearch/data
environment:
- ELASTICSEARCH_USER=admin
- ELASTICSEARCH_PASS=mypass
ports:
- "9200:9200"
grafana:
restart: always
image: tutum/grafana
ports:
- "8080:80"
environment:
- INFLUXDB_PROTO=http
- INFLUXDB_HOST=influxdb
- INFLUXDB_PORT=8086
- INFLUXDB_NAME=dht11
- INFLUXDB_USER=root
- INFLUXDB_PASS=root
- ELASTICSEARCH_PROTO=http
- ELASTICSEARCH_HOST=elastic
- ELASTICSEARCH_PORT=9200
- ELASTICSEARCH_USER=admin
- ELASTICSEARCH_PASS=mypass
フォアグラウンドで起動
コンテナをまとめて起動します。起動シーケンスを確認したいのでフォアグラウンドでテスト起動します。
$ cd ~/influx_apps
$ docker-compose up
InfluxDBのテスト
コンテナのbashを実行してInfluxDBのバージョンを確認します。0.8.8
を使っています。
$ docker exec -it influxapps_influxdb_1 bash
$ influxdb -v
InfluxDB v0.8.8 (git: afde71e) (leveldb: 1.15)
Reading and Writing Dataに書いてあるようにテストデータを投入してみます。Dockerホストからcurlで確認します。
$ curl -X POST -d '[{"name":"foo","columns":["val"],"points":[[23]]}]' 'http://localhost:8086/db/influxdb/series?u=root&p=root'
レコードをクエリしてみます。POSTしていないデータのtimeとsequence_numberは自動的に入ります。
$ curl -G 'http://localhost:8086/db/influxdb/series?u=root&p=root&pretty=true' --data-urlencode "q=select * from foo"
[
{
"name": "foo",
"columns": [
"time",
"sequence_number",
"val"
],
"points": [
[
1433443454781,
10001,
23
]
]
}
]
リモートからブラウザでDockerホストにアクセスしてInfuxDBの管理画面を表示します。
ElasticSearchのテスト
DockerホストからElasticSerchの起動確認を兼ねてバージョンを表示します。1.3.9
を使っています。
$ curl admin:mypass@localhost:9200
{
"status" : 200,
"name" : "Abner Jenkins",
"version" : {
"number" : "1.3.9",
"build_hash" : "0915c7306e6264ba21a6cb7609b93545ccc32ef1",
"build_timestamp" : "2015-02-19T12:34:48Z",
"build_snapshot" : false,
"lucene_version" : "4.9"
},
"tagline" : "You
Grafanaのテスト
Grafanaは2015/04/20に2.0がリリースされていますが、今回のイメージは1.9.1
を使っています。
$ docker exec -it influxapps_grafana_1 bash
$ echo $GRAFANA_VERSION
1.9.1
Grafanaの管理画面にアクセスするためランダムで生成されるパスワードを標準出力のログから確認します。
- login: admin
- password: 5jG0HLZ09sZQ
...
grafana_1 | => Creating basic auth for "admin" user with random password
grafana_1 | Adding password for user admin
grafana_1 | => Done!
grafana_1 | ========================================================================
grafana_1 | You can now connect to Grafana with the following credential:
grafana_1 |
grafana_1 | admin:5jG0HLZ09sZQ
grafana_1 |
grafana_1 | ========================================================================
grafana_1 | => Configuring InfluxDB
grafana_1 | => InfluxDB has been configured as follows:
grafana_1 | InfluxDB ADDRESS: influxdb
grafana_1 | InfluxDB PORT: 8086
grafana_1 | InfluxDB DB NAME: dht11
grafana_1 | InfluxDB USERNAME: root
grafana_1 | InfluxDB PASSWORD: root
grafana_1 | ** Please check your environment variables if you find something is misconfigured. **
grafana_1 | => Done!
grafana_1 | => Found Elasticsearch settings.
grafana_1 | => Set Elasticsearch url to "http://admin:mypass@elastic:9200".
grafana_1 | => Done!
grafana_1 | => Starting and running Nginx...
リモートからGrafanaのダッシュボードをブラウザで開きます。通常80ポートですが他のサービスと競合するのでDockerホストには8080でマップしています。
バックグラウンドで起動
正常に動作しているようなので、コンテナを停止してボリュームも削除してからバックグラウンドで起動します。
$ docker-compose stop
Stopping influxapps_grafana_1...
Stopping influxapps_elastic_1...
Stopping influxapps_influxdb_1...
コンテナを削除します。
$ docker-compose rm
Going to remove influxapps_grafana_1, influxapps_elastic_1, influxapps_influxdb_1
Are you sure? [yN] y
Removing influxapps_influxdb_1...
Removing influxapps_elastic_1...
$ sudo rm -fr influxdb/ elastic/
バックグラウンドで起動します。
$ docker-compose up -d
Creating influxapps_influxdb_1...
Creating influxapps_elastic_1...
Creating influxapps_grafana_1...
ブラウザで管理画面のBASIC認証に必要なGrafanaのパスワードはdocker-compose logs
コマンドで確認します。
$ docker-compose logs grafana
Author And Source
この問題について(InfluxDBとElasticSearchとGrafanaのためdocker-compose.yml), 我々は、より多くの情報をここで見つけました https://qiita.com/masato/items/acaa5f56351fdfed7c20著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .