WindowsでGrafana+InfluxDB2.0+Glances&OhmGraphiteを使う


よくサーバー用OSにCentOSなどUNIX(LINUX)系が使わるため、公開されているサーバー監視ツールの記事も自然とLinux系が多くなってしまいます。私はWindows大好きマンなので今回はWindowsで構築していきます。
あまり詳しいことはわからないから書かないので、ご了承ください。

目次

  • 完成図
  • 使用するソフト+説明
  • InfluxDB 2.0
  • Glances
  • OhmGraphite
  • 確認してみる
  • Grafana
  • 最後に
  • 参考文献

完成図

こんな感じに「かっこいい!」ってなればOKだと思います。グラフの大きさや種類も自由に変えらます。

使用するソフト+説明

InfluxDB 2.0.7

  • オープンソースの時系列データベース
  • メトリクス可視化ツールとの相性〇
  • 1.xから2.0にアップデートされていろいろ変わった(↓変更点)

Glances 3.1.7

  • Pythonで書かれたオープンソースの監視ソフト
  • Windowsでも動くため採用

OhmGrahite 0.19.0

  • C#で書かれたオープンソースの監視ソフト
  • Windows用なので採用

Grafana 8.0.3

  • 取得したメトリクスをかっこよく見せる可視化ソフト
  • プラグインなどもあり自由にカスタマイズできる

その他環境

  • Windows 10 Home
  • Python 3.7.3
    • psutil 5.8.0
    • influxdb-client 1.18.0
    • windows-curses 2.2.0

InfluxDB 2.0

注意: 現在の最新バージョン"2.0.7"でコンソールでデータベースを作成しようとすると確認用のパスワードが打てない問題があります。今回は"influx.exe"は使いませんが使う人は注意してください。

ダウンロード&インストール

Versionは2.0.7、PlatformはWindows Binary(64bit)を選び、下に表示された文を管理者権限でPowershellにコピペするだけです。URL部分をブラウザにコピペしてもダウンロードされます。

公式のインストールページ

wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.0.7-windows-amd64.zip -UseBasicParsing -OutFile influxdb2-2.0.7-windows-amd64.zip
Expand-Archive .\influxdb2-2.0.7-windows-amd64.zip -DestinationPath 'C:\Program Files\InfluxData\influxdb2\'

展開したら"influxd.exe"をコマンドプロンプト上で起動します。
次にブラウザ上でlocalhost:8086にアクセスし、初期設定を行います。
Organizationは何でもいいです。
Initial Bucket NameはここではGlancesにしておきます。
TokenData>Tokenに一つ自動で作成されていると思います。なかったら作成してください。
これでInfluxDB 2.0のセットアップは終わりです。

Glances

ダウンロード&インストール

Python 3.6以上をインストール

コマンドプロンプトで
py -m pip install psutil
py -m pip install glances
py -m pip install windows-curses
py -m pip install influxdb-client
を実行します。

その後一度py -m glancesを実行して動作確認してください。

glances.confの編集

次にInfluxDB 2.0に値を送るための準備をします。
環境によっても変わりますが、
C:\Users\USER\AppData\Local\Programs\Python\Python37\share\doc\glances
C:\Users\USER\AppData\Roaming\Python\share\doc\glances
このどちらかに"glances"というフォルダがあると思います。その中の"glances.conf"を編集します。
[influxdb2]という項目を編集します。

[influxdb2]
# Configuration for the --export influxdb2 option
# https://influxdb.com/
host=localhost
port=8086
protocol=http
org=作成した組織
bucket=作成したバケット
token=作成したトークン
# Prefix will be added for all measurement name
# Ex: prefix=foo
#     => foo.cpu
#     => foo.mem
# You can also use dynamic values
#prefix=`hostname`
prefix=localhost
# Tags will be added for all measurements
#tags=foo:bar,spam:eggs
# You can also use dynamic values
#tags=system:`uname -s`

%appdata%内に"glances"というフォルダを作成し、そこに"glances.conf"を置きます。
保存したファイルのパスが%appdata%\glances\galnces.confになっていればOKです。

最後に実行します。
こちらも環境によりますが
C:\Users\USER\AppData\Local\Programs\Python\Python37\Scripts
C:\Users\USER\AppData\Roaming\Python\Python37\Scripts
このどちらかに"glances.exe"があると思います。

絶対パスを書くか環境変数にパスを通すかして
glances.exe --export influxdb2
をエラーなく実行できたらGlancesのセットアップは終了です。

OhmGrahite

ダウンロード&インストール

好きな場所に展開でOK

OhmGraphite.exe.configの設定

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="type" value="influx2" />
    <add key="influx2_address" value="http://localhost:8086" />
    <add key="influx2_org" value="上と同じ組織" />
    <add key="influx2_bucket" value="新しく作成したバケット(例:OhmGraphite)" />
    <add key="influx2_token" value="上と同じトークンでもOK" />
    <add key="interval" value="5" />
  </appSettings>
</configuration>

こちらは管理者権限でないと実行できないようです。
コマンドプロンプトからOhmGraphite.exe runを実行します。
これでOhmGraphiteのセットアップは終了です。

確認してみる

ここまできたら一度localhost:8086にアクセスして、きちんと値を記録しているか確認します。
Explorerを選択し、Fromに作成したBucket(この記事ではGlancesとOhmGraphiteを作成)があるか確認し、それを選択した後に右にいろいろ出るか確認してください。
Bucketがない場合は作成し、右に出ていない場合はGlancesかOhmGraphiteのconfigが間違えている可能性があります。
試しにGlances>localhost.cpu>totalを選択しSubmitを押してグラフが出現すれば成功です。

Grafana

ダウンロード&インストール

ここの少し下のところにDownload the zip fileがあるのでそこからダウンロード&展開します。

設定

これもコマンドプロンプトからgrafana-server.exeを実行し、localhost:3000へアクセスします。
ユーザー名とパスワードを登録し、もう一度ログインします。

ConfigurationからData Souece>Add Souece>InfluxDBを選びます。
Nameは任意
Query LanguageはFluxを選択
URLlocalhost:8086
InfluxDB Detailsにはorganization tokenを入力します。
Save&testをクリックし5 buckets foundと出ればOKです。

データの登録方法

詳しいGrafanaの使い方はここでは書きません。手抜き

localhost:8086へアクセスし、ExplorerからGrafanaに登録したいデータを選択します。
右下のScript Editorを選択すると、コードが表示されるのでそれをコピーします

一例
from(bucket: "Glances")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "localhost.cpu")
  |> filter(fn: (r) => r["_field"] == "user")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> yield(name: "mean")

これをGrafanaのQueryにペーストし、Applyすれば登録完了です。

最後に

無事にサーバー監視できたでしょうか。初めての投稿なので誤字脱字、間違いがあればごめんなさい。influxdb-clientを使えばApacheの同時接続数などを送ったりもできます。是非ためしてみてください。