influxdbをお試し利用

# 目的
influxdbをお試し利用した際の備忘録です

# 準備
以下を参考にDockerをインストールする
> [MacBookでDockerを用いてwebサーバを立てる練習をする(Mac + Docker + PHP + Apache)](https://qiita.com/seigot/items/08d73dc0e9e821efec3d)
>[Dockerの開発環境構築 (Mac + Docker + PHP + Apache)](https://qiita.com/seigot/items/08d73dc0e9e821efec3d)


# influxdbの起動

```
$ docker run -d -p 8083:8083 -p 8086:8086 -p 8090:8090 -p 8099:8099 influxdb
Unable to find image 'influxdb:latest' locally
latest: Pulling from library/influxdb
99760bc62448: Pull complete 
e3fa264a7a88: Pull complete 
a222a2af289f: Pull complete 
8765a3c7874a: Pull complete 
01e00e492310: Pull complete 
0d251e625d04: Pull complete 
d34a9a8c60e0: Pull complete 
c8a7cfaa1936: Pull complete 
Digest: sha256:42f362a7bc74e7aef7b26901f5dd37ec2ba59559a6cc629beae7497694656be6
Status: Downloaded newer image for influxdb:latest
5bf16c05b197736352a61aca2025a270bc800dee9f028680d77649df83e8ad67
$ docker ps
CONTAINER ID        IMAGE                                                 COMMAND                  CREATED             STATUS              PORTS                                                                                            NAMES
5bf16c05b197        influxdb                                              "/entrypoint.sh infl…"   8 minutes ago       Up 8 minutes        0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp, 0.0.0.0:8090->8090/tcp, 0.0.0.0:8099->8099/tcp   tender_ride
```

mydb を作成

```
curl -G http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb"
```

値をWRITEする

```
$ curl -i -XPOST http://localhost:8086/write?db=mydb --data-binary "temperature,machine=unit42,type=assembly external=90,internal=60"
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 0a60c0c4-929b-11ea-8017-0242ac110003
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 0a60c0c4-929b-11ea-8017-0242ac110003
Date: Sun, 10 May 2020 08:48:38 GMT
```

値をGETする

```
$ curl -G http://localhost:8086/query?db=mydb --data-urlencode "q=SELECT * FROM temperature"
{"results":[{"statement_id":0,"series":[{"name":"temperature","columns":["time","external","internal","machine","type"],"values":[["2020-05-10T08:40:46.2789346Z",90,60,"unit42","assembly"],["2020-05-10T08:40:58.3198991Z",90,60,"unit42","assembly"]]}]}]}
```

整形してみやすくできる

```
$ curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=mydb" --data-urlencode "q=SELECT * FROM temperature"
{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "name": "temperature",
                    "columns": [
                        "time",
                        "external",
                        "internal",
                        "machine",
                        "type"
                    ],
                    "values": [
                        [
                            "2020-05-10T08:40:46.2789346Z",
                            90,
                            60,
                            "unit42",
                            "assembly"
                        ],
                        [
                            "2020-05-10T08:40:58.3198991Z",
                            90,
                            60,
                            "unit42",
                            "assembly"
                        ],
                        [
                            "2020-05-10T08:48:37.9922405Z",
                            90,
                            60,
                            "unit42",
                            "assembly"
                        ]
                    ]
                }
            ]
        }
    ]
}
```

### （参考）Dockerコンテナ内からmydbを作成する場合

docker exec -it (コンテナ名) /bin/bash でコンテナ内のinfluxを直接実行する

```
$ docker ps
CONTAINER ID        IMAGE                                                 COMMAND                  CREATED             STATUS              PORTS                                                                                            NAMES
5bf16c05b197        influxdb                                              "/entrypoint.sh infl…"   8 minutes ago       Up 8 minutes        0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp, 0.0.0.0:8090->8090/tcp, 0.0.0.0:8099->8099/tcp   tender_ride
$ docker exec -it tender_ride /bin/bash
# find / -name influx
/usr/bin/influx
# /usr/bin/influx
Connected to http://localhost:8086 version 1.8.0
InfluxDB shell version: 1.8.0
> SHOW DATABASES
name: databases
name
----
_internal
> CREATE DATABASE mydb
> SHOW DATABASES
name: databases
name
----
_internal
mydb
> exit
```

### （参考）Dockerコンテナ内から値をGETする場合

以下のようにコマンドを実行する

```
> USE mydb
Using database mydb
> SELECT * FROM temperature
name: temperature
time                external internal machine type
----                -------- -------- ------- ----
1589100046278934600 90       60       unit42  assembly
1589100058319899100 90       60       unit42  assembly
```

### （参考）Dockerコンテナ内からDBのユーザを作成する場合

USER/PASS=test/test のadminユーザを作成する場合

```
> CREATE USER test WITH PASSWORD 'test' WITH ALL PRIVILEGES
> SHOW USERS
user   admin
----   -----
test   true
```

# InfluxDBの8083ポートにhttpアクセスできない

[InfluxDBの8083ポートにhttpアクセスできない](https://zkat.hatenablog.com/entry/2018/10/31/090000)
> デフォルトで8083ポートで可視化や管理等できる画面が立ち上がると聞いていたのですが、 バージョン1.3.0からなくなったようです。

# 参考
[github.com/influxdata/influxdb](https://github.com/influxdata/influxdb)
[influxdbのコマンドメモ](https://qiita.com/uni-3/items/34dc40541e3620b4c008)
[手軽にシステムダッシュボードが作れる「Grafana」レビュー](https://knowledge.sakura.ad.jp/6831/)
[MacBookでDockerを用いてwebサーバを立てる練習をする(Mac + Docker + PHP + Apache)](https://qiita.com/seigot/items/08d73dc0e9e821efec3d)
[Dockerの開発環境構築 (Mac + Docker + PHP + Apache)](https://qiita.com/seigot/items/08d73dc0e9e821efec3d)
[InfluxDB インストール - 簡単な使い方](https://qiita.com/akito1986/items/9c1c14a36654646db456)
[influxdbのコマンドメモ](https://qiita.com/uni-3/items/34dc40541e3620b4c008)