influxDBの導入

#influxDBの導入

- 時系列データを扱いたいと思い、influxDBを使ってみました。

|**説明**|**起動コマンド**|
|---|---|
| **dockerイメージから起動する場合** | docker run -d -p 8083:8083 -p 8086:8086 -p 8090:8090 -p 8099:8099 --name influxdb1 soushi/influxdb:1.0 |
| **Centos:6イメージから新規に作成する場合** | docker run -i -t -d -p 8083:8083 -p 8086:8086 -p 8090:8090 -p 8099:8099 -v /etc/localtime:/etc/localtime:ro --name influxdb1 centos:6 /bin/bash |

- dockerイメージが無い場合、Dockerfileから作成できます。

~~~
docker build [ -t ｛イメージ名｝ [ :｛タグ名｝ ] ] <Dockerfileのあるディレクトリ>
~~~

- Dockerfileからdockerイメージを作成するコマンド例

~~~sh
docker build -t soushi/influxdb:1.0 <Dockerfileのあるディレクトリ>
~~~
- dockerイメージを作成するためのDockerfileの場所

[~/OneDrive/docker/influxdb/Dockerfile](/Users/soushi/OneDrive/docker/influxdb/Dockerfile)

|**ポートを利用するライブラリ**|**目的**|**ポート番号**|
|---|---|---|
| influxDB | Web UI | 8083 |
| influxDB | Comm. | 8086 |
| influxDB | Raft for clustering | 8090 |
| influxDB | Protobuf for clustering | 8099 |
※ポート番号の解説は[influxDB installation](http://influxdb.com/docs/v0.8/introduction/installation.html)を参照


|**設定項目**|**設定値**|
|---|---|
|**influxdb本体**|/usr/bin/influxdb|
|**influxdb設定ファイル**|/opt/influxdb/shared/config.toml|
|**influxdb pidファイル**|/opt/influxdb/shared/influxdb.pid|

##1 influxDBの導入を行います

###1.0 dockerコンテナの起動
|**説明**|**起動コマンド**|
|---|---|
| Centos:6イメージから新規に作成する場合 | docker run -i -t -d -p 8083:8083 -p 8086:8086 -p 8090:8090 -p 8099:8099 -v /etc/localtime:/etc/localtime:ro --name influxdb1 centos:6 /bin/bash |

###1.1 influxDBのダウンロードとセットアップ
~~~sh
mkdir /usr/local/download/
cd /usr/local/download/
yum -y install wget
wget http://s3.amazonaws.com/influxdb/influxdb-latest-1.x86_64.rpm
rpm -ivh influxdb-latest-1.x86_64.rpm
/etc/init.d/influxdb start
~~~


##2 influxDBでデータベースを作成します。
###2-A CLIベースでデータベースとユーザーを作成します。
[公式サイト](http://influxdb.com/docs/v0.6/api/administration.html)参照

~~~sh
curl -X POST 'http://localhost:8086/db?u=root&p=root' -d '{"name": "grafanadb"}'
curl -X POST 'http://localhost:8086/db?u=root&p=root' -d '{"name": "grafanaconf"}'
curl -X POST 'http://localhost:8086/db/grafanadb/users?u=root&p=root' -d '{"name": "soushi", "password": "soushi"}'
curl -X POST 'http://localhost:8086/db/grafanaconf/users?u=root&p=root' -d '{"name": "soushi", "password": "soushi"}'
curl -X POST 'http://localhost:8086/db/grafanadb/users/soushi?u=root&p=root' -d '{"admin": true}'
curl -X POST 'http://localhost:8086/db/grafanaconf/users/soushi?u=root&p=root' -d '{"admin": true}'
~~~


###2-B GUIベースでデータベースを作成します。
###2-B.1 ホストVMから、influxDBのフロントエンド(8083番ポート)にアクセスします。

|**設定値**|**値**|
|---|---|
| **初期ログインID** | root |
| **初期パスワード** | root |
| **ホストネーム** | 10.0.0.1 |
| **ホストポート番号** | 8086 |

<img width="691" alt="Grafana Fig 1.png" src="https://qiita-image-store.s3.amazonaws.com/0/9023/e823a2b6-6f37-1fca-d2d5-e44a3a03643f.png">


###2-B.2 Grafanadbで利用するためのデータベースを2つ作成します。

|**設定値**|**値**|
|---|---|
| **データベース名** | grafanadb |
| **Shard Spaces Space名** | default |
| **Shard Spaces Retention** | inf |
| **Shard Spaces Duration** | 7d |
| **Shard Spaces RegEx** | /.*/ |
| **Shard Spaces RF** | 1 |
| **Shard Spaces Split** | 1 |

|**設定値**|**値**|
|---|---|
| **データベース名** | grafanaconf |
| **Shard Spaces Space名** | default |
| **Shard Spaces Retention** | inf |
| **Shard Spaces Duration** | 7d |
| **Shard Spaces RegEx** | /.*/ |
| **Shard Spaces RF** | 1 |
| **Shard Spaces Split** | 1 |

<img width="1031" alt="Grafana Fig 2.png" src="https://qiita-image-store.s3.amazonaws.com/0/9023/f5bcf7de-f451-cfe8-293e-3b586fe6cd3d.png">


###2-B.3 データベース操作用のユーザーを追加します。

|**設定値**|**値**|
|---|---|
| **データベース名** | grafanadb |
| **Username** | soushi |
| **Password** | soushi |
| **Admin?** | true(checked) |

|**設定値**|**値**|
|---|---|
| **データベース名** | grafanaconf |
| **Username** | soushi |
| **Password** | soushi |
| **Admin?** | true(checked) |

<img width="1037" alt="Grafana Fig 3.png" src="https://qiita-image-store.s3.amazonaws.com/0/9023/86c43bcc-18ac-425f-8bd9-0bcfc257d021.png">


#全コード

~~~sh
mkdir /usr/local/download/
cd /usr/local/download/
yum -y install wget
wget http://s3.amazonaws.com/influxdb/influxdb-latest-1.x86_64.rpm
rpm -ivh influxdb-latest-1.x86_64.rpm
/etc/init.d/influxdb start
curl -X POST 'http://localhost:8086/db?u=root&p=root' -d '{"name": "grafanadb"}'
curl -X POST 'http://localhost:8086/db?u=root&p=root' -d '{"name": "grafanaconf"}'
curl -X POST 'http://localhost:8086/db/grafanadb/users?u=root&p=root' -d '{"name": "soushi", "password": "soushi"}'
curl -X POST 'http://localhost:8086/db/grafanaconf/users?u=root&p=root' -d '{"name": "soushi", "password": "soushi"}'
curl -X POST 'http://localhost:8086/db/grafanadb/users/soushi?u=root&p=root' -d '{"admin": true}'
curl -X POST 'http://localhost:8086/db/grafanaconf/users/soushi?u=root&p=root' -d '{"admin": true}'
~~~