TelegrafでWindowsのメトリクスを取得しInfluxDBに格納しGrafanaで可視化する

性能評価をする際に Windows のメトリクスをリアルタイムで監視したかったので，Telagraf で Windows のメトリクスを取得して InfluxDB に格納し，Grafana で可視化した。

## 概要

| ソフト         | 内容 |
|--------------|------|
| InfluxDB     | 時系列DB。メトリクスをここに格納する。 |
| Grafana      | 様々なデータソースを可視化するGUIツール。 |
| Telegraf     | 様々なメトリクスを influxdb に収集するコレクタ。 |

- 対象の Windows に Telegraf をインストールし，Telegraf から Windows のメトリクスを InfluxDB に流し，Grafana で可視化する。
    - Telegraf -> InfluxDB -> Grafana

## Docker コンテナ作成

InfluxDB と Grafana は Docker で用意する。

### ディレクトリ

- ローカルに influxdb, grafana のデータを保持したり influxdb の設定ファイルを読み込んだり出来るようにディレクトリを用意する。

```shell
$ pwd
C:\LoadTest\Docker
$ ls
grafana  influxdb
```


### influxdb.conf

データのディレクトリを設定する。

```shell
$ pwd
C:\LoadTest\Docker
$ vi influxb/etc/influxdb.conf
```

```conf
[meta]
  dir = "/var/lib/influxdb/meta"

[data]
  dir = "/var/lib/influxdb/data"
  engine = "tsm1"
  wal-dir = "/var/lib/influxdb/wal"
```



### docker-compose.yml

- InfluxDB, Grafana のコンテナを作成する。

```shell
$ pwd
C:\LoadTest\Docker
$ vi docker-compose.yml
$ ls
docker-compose.yml  grafana  influxdb
```

```yaml
version: "3"
services:
  influxdb:
    image: influxdb:latest
    ports:
      - "8086:8086"
    volumes:
      - ./influxdb/data:/var/lib/influxdb
      - ./influxdb/etc:/etc/influxdb
  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    volumes:
      - ./grafana:/var/lib/grafana/
    depends_on:
      - influxdb
```

### コンテナ作成

```shell
$ pwd
C:\LoadTest\Docker
$ docker-compose up -d
$ docker-compose ps
         Name                  Command               State           Ports
----------------------------------------------------------------------------------------
docker_grafana_1      /run.sh                          Up      0.0.0.0:3000->3000/tcp
docker_influxdb_1     /entrypoint.sh influxd           Up      0.0.0.0:8086->8086/tcp
```

## InfluxDB

### 動作確認

```shell
$ curl -sl -I http://localhost:8086/ping
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 47b37236-8a8b-11ea-8001-0242ac120002
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 47b37236-8a8b-11ea-8001-0242ac120002
Date: Thu, 14 May 2020 00:44:43 GMT
```

### DB 作成

- Windows のメトリクスを格納する DB を作成する。

```shell
$ curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE win_perf"
HTTP/1.1 200 OK
Content-Type: application/json
Request-Id: 4e59158c-957c-11ea-8002-0242ac130003
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 4e59158c-957c-11ea-8002-0242ac130003
Date: Thu, 14 May 2020 00:46:11 GMT
Transfer-Encoding: chunked

{"results":[{"statement_id":0}]}
```

## Telegraf

パフォーマンスを見たい Windows にインストールする。

### インストール

https://portal.influxdata.com/downloads から Windows 用の Telegraf をダウンロードする。
今回は https://dl.influxdata.com/telegraf/releases/telegraf-1.14.2_windows_amd64.zip をダウンロードした。
これを任意のディレクトリに C:\Program Files\telegraf 解凍した。

中身はシンプル。
設定ファイルと実行ファイルのみ。

```
> tree /F .
C:\PROGRAM FILES\TELEGRAF
    telegraf.conf
    telegraf.exe
```

### telegraf.conf

設定ファイルは InfluxDB の接続先とDB名を設定する。

```conf
[[outputs.influxdb]]
  urls = ["http://xxx.xxx.xxx.xxx:8086"]
  database = "win_perf"
```

### 起動

```ps1
> cd C:\"Program Files"\telegraf
> .\telegraf.exe --config .\telegraf.conf
```

### サービス化

```
> C:\"Program Files"\telegraf\telegraf.exe --service install
```

### サービス起動／停止

```
> net start telegraf
> net stop telegraf
```

## grafana

- https://grafana.com/docs/grafana/latest/installation/migrating_to2/ より cofnig.js は廃止された模様。

### 管理者作成

- http://localhost:3000/login にアクセする。
- 下記のように入力し Login をクリックする。

| userid | password |
|--------|----------|
| admin  | admin    |
  
### data source (InfluxDB) 追加
  
- Add data source をクリックする。
- InfluxDB を選択する。
- 下記設定し Test & Save をクリックする。

| 項目 | 設定 |
|-----|-----|
| Name        | InfluxDB_WinPerf |
| URL         | http://xxx.xxx.xxx.xxx:8086 |
| Access      | Server |
| Database    | win_perf |
| User        | admin |
| Password    | admin |
| HTTP Method | GET |
    
### フォルダ作成

- \+ アイコンをクリックし，Create\Folder を選択する。
- Name : win_perf
- Create をクリックする。

### Dashboard 作成

- \+ アイコンをクリックし，Create\Dashboard を選択する。
- Add Query をクリックする。
- Query で InfluxDB_WinPerf を選択する。
- FROM の select measurement で win_cpu を選択する。
- FROM の WHERE に host = 見たいホスト名，instance = _Total を設定する。
- Visualization の Axes を設定する。
    - Unit : percent(0-100)
    - Y-Max : 100
- General の Title を CPU Usage
- Save dashboard から 
    - Dashboard name : Windows Performance Monitor
    - Folder : win_perf
    - Save をクリックする