[01] docker-compose で influxdb 2.0 + grafana を立ち上げる ... 🔥失敗🔥


# はじめに

docker-compose を使って後述の構成で、
influxdb 2.0 + grafana + fluentd を立ち上げを試みた.

が、コンテナ起動後の grafana から influxdb への接続設定で次のエラーが発生し、
残念ながら解消させることができなかった.
🔥「502 Bad Gateway」
🔥「Failed to fetch」


ただ、コンテナ起動の docker-compose.yml の情報は使えるかも知れないことと、
将来、エラー「Bad Gateway」や「Failed to fetch」の対策方法が判明したときに備えて
書き残しておく.

なお、influxdb 1.8 を使えば起動することを確認しているので、
急ぎで influxdb が必要な場合は 1.8 を使うと良いかも知れない.

・[[02] docker-compose で influxdb 1.8 + grafana を立ち上げる](https://qiita.com/robozushi10/items/d29b255fec94e4fdde2f)

# 構成

| No  | サービス      | ホスト側ポート  | コンテナ側ポート  | 備考  |
|:--|:--|:--|:--|:--|
| 1   | grafana   | 3000     | 3000      |     |
| 2   | influxdb  | 8086     | 8086      |     |
| 3   | Fluentd   | 44224    | 44224     | 本記事の趣旨とは無関係であるが、使用していたので載せているだけである |




# 参考にしたサイト

|URL|
|:--|
|https://www.youtube.com/watch?v=rRKDfU4tmJQ|
|https://github.com/Coac/fluentd-influxdb-grafana|
|https://amemo.hatenablog.jp/entry/2018/07/20/212116|
|https://grafana.com/docs/grafana/latest/installation/docker/#migrate-to-v51-or-later|
|https://qiita.com/tamanobi/items/a57f2802c7fd1236ea52|

　
# コード

```
$ git clone git@github.com:robozushi10/qiita-influxdb-docker
$ cd qiita-influxdb-docker/influxdb-2.0
```


# 手順

## 1. 必要なファイルを準備する

### ファイル構成

```
$ tree . --charset=c
.
|-- PV
|   |-- fluentd
|   |   |-- etc
|   |   |   `-- fluent.conf
|   |   `-- log
|   `-- grafana
|       `-- data
|-- README.md
|-- assets
|   `-- fluentd
|       `-- Dockerfile
`-- docker-compose.yml
```
　

### アクセス権限設定をする

下記エラー回避のために UID = 472, GID = 0(root) を付与しておく.

```bash
$ mkdir -p PV/grafana/data
$ sudo chown 472:0 PV/grafana/data
```

**発生したエラー**

```bash
myinflxdb_grafana | GF_PATHS_DATA='/var/lib/grafana' is not writable.
myinflxdb_grafana | You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later
myinflxdb_grafana | mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
```

### ./docker-compose.yml

```yaml
version: '3'
services:
  grafana:
    image: grafana/grafana
    container_name: myinflxdb_grafana
    ports:
      - '3000:3000'
    # エラー「GF_PATHS_DATA='/var/lib/grafana' is not writable」の対策として、UID = 472 にする
    # https://amemo.hatenablog.jp/entry/2018/07/20/212116
    # https://grafana.com/docs/grafana/latest/installation/docker/#migrate-to-v51-or-later
    user: '472:0'
    volumes:
      - './PV/grafana/data:/var/lib/grafana'
    depends_on:
      - influxdb
  fluentd:
    image: fluent/fluentd:v1.13-1
    build: assets/fluentd/.
    container_name: myinflxdb_fluentd
    user: '1000:1000'
    restart: always
    command: >
      /usr/bin/fluentd -c /fluentd/etc/fluent.conf -v
    ports:
      - "127.0.0.1:44224:44224"
      - "127.0.0.1:44224:44224/udp"
    volumes:
      - ./PV/fluentd/log:/fluentd/log
      - ./PV/fluentd/etc:/fluentd/etc
  influxdb:
    image: influxdb
    container_name: myinflxdb_influxdb
    ports:
      - '8086:8086'
    environment:
      - INFLUXDB_DB=grafana
      - INFLUXDB_USER=grafana
      - INFLUXDB_USER_PASSWORD=grafana
      - INFLUXDB_ADMIN_ENABLED=true
      - INFLUXDB_ADMIN_USER=admin
      - INFLUXDB_ADMIN_PASSWORD=admin
    volumes:
      - './PV/influxdb/data:/var/lib/influxdb'
```


### ./PV/fluentd/etc/fluent.conf


```
<source>
  @type tail
  path /var/log/logs.json
  pos_file /fluentd/logs.json.pos
  tag default.logs
  format json
</source>

<match default.logs>
  @type influxdb
  host  influxdb
  port  8086
  dbname grafana
  user  admin
  password  admin
  use_ssl false
  time_precision ms
  <buffer>
    @type memory
    flush_interval 5
  </buffer>
</match>

```

　


### ./assets/fluentd/Dockerfile

本題とは関係無いが、パッケージのインストール方法の参考にはなるはず.

```dockerfile
FROM fluent/fluentd:v1.13-1

# 次のエラー回避のために root 権限で実行すること.
# 「You don't have write permissions for the /usr/lib/ruby/gems/2.7.0 directory.」
# (ref. https://qiita.com/tamanobi/items/a57f2802c7fd1236ea52)
USER root

RUN gem install fluent-plugin-influxdb

USER fluentd
```

## 2. 起動させる

```bash
$ docker-compose build --no-cache
$ docker-compose up -d
```

```bash
$ docker-compose ps
       Name                     Command               State                                      Ports                                   
-----------------------------------------------------------------------------------------------------------------------------------------
myinflxdb_fluentd    tini -- /bin/entrypoint.sh ...   Up      24224/tcp, 127.0.0.1:44224->44224/tcp, 127.0.0.1:44224->44224/udp, 5140/tcp
myinflxdb_grafana    /run.sh                          Up      0.0.0.0:3000->3000/tcp                                                     
myinflxdb_influxdb   /entrypoint.sh influxd           Up      0.0.0.0:8086->8086/tcp  
```

## 3. localhost:3000 にアクセスして Grafana のセットアップをする

・初回ログインは「`admin`」「`admin`」である.
・するとパスワード変更が求められる. (面倒なら「skip」をクリックすればよい)
・下図「DATA SOURCES」→「InfluxDB」に進む

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1246056/5bc938d9-933c-286f-418c-5c9e37ecc7e1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1246056/a665f1ec-6bc1-70d7-cbe3-2bbdc8c498d6.png)


## 4. InfluxDB 接続のためのパラメータを入力する.

##### 物理ホストの IP を設定すると「Failed to fetch」が発生してしまう

・物理ホストの IP を 192.168.10.115 とする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1246056/7c832f45-db08-af8f-8c6e-19df5015d255.png)

・下図の「Password」には `admin` を入れた.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1246056/3992c5dd-38cc-221b-28a0-8f2c907ffcd8.png)


##### 「influxdb」というマシン名を設定すると「Failed to fetch」が発生してしまう

docker-compose.yml での service 名称「influxdb」を使って、
上図の「URL」欄に `http://influxdb:8086` を設定すると
「502 Bad Gateway」が発生してしまう.

　

# 以下メモ

もしかしたら、influxdb に grafana というテーブルが存在していないのかも知れない.