InfluxDBが起動しているPCでブラウザから http://localhost:8086/
にアクセスすると次のようにシンプルなテキストが表示される。
404 page not found
404エラーが出ているがこれは後ろで起動しているInfluxDBが正しくエラーを出している結果だ(InfluxDBにHTTPのUI機能が無いため)
不安であれば http://localhost:8086/debug/vars
にアクセスしJSONが帰ってくることを確認するのもよい。
参考:もしInfluxDBに正しくアクセス出来ていない場合は次の表示になる(Windows)
このサイトにアクセスできません
ではこれをローカルネットワーク上の別のPCからアクセスすると次のようなメッセージでアクセス出来ない場合がある。
このサイトにアクセスできません
{アドレス} からの応答時間が長すぎます。
これは単純にファイアーウォールが仕事しているだけではない可能性が高い。そもそもInfluxDBが別マシンからのアクセスに応答しないようになっている可能性がある。
bind-address
を次のように変更する。
bind-address = ":8086"
bind-address
の設定が2箇所あるという問題実はデフォルトでは [http]
の項目で bind-address = ":8086"
になっているのだがconfファイルにbind-addressが2行コメントアウトされており片方が 127.0.0.1:8088
になっている。他のウェブサイトでも localhost:8086
などを推奨しているページが散見されるためこの設定が別れているパターンが多そうだ。
余談:127.0.0.1:8088
は Backup and Restore にて使用するそうだ。
ここは個別に設定が違うが、Windowsセキュリティを使用している場合は
左下の「ここに入力して検索」に「windows defender」と入力して「Windows セキュリティの設定」をクリック
「ファイアーウォールとネットワーク保護」から「詳細設定」をクリック
送信の規則・受信の規則どちらにも「新しい規則」でポートを開放する
「送信・受信」両方とも開放することを忘れずに。
あとは手順に従ってTCPを選択、ポート番号を入力、接続を許可、規則は全て、名前をつけて完了
★冗長になるので画像は省略
ipアドレス:8086
にクライアントのPCから接続して 404 page not found
がテキストで表示されるか確認する。
筆者の場合はサーバがwi-fi接続、クライアントが有線で同一のルータに接続されているがこれだけで問題なく利用できている。
セキュリティのため認証を設定する
confファイルで次を設定する
auth-enabled = true
InfluxDBを起動する
コマンドプロンプトから次のコマンドで管理者のユーザーIDとパスワードを登録する
curl -X POST http://ここにサーバip:8086/query --data-urlencode "q=CREATE USER ここにユーザ名 WITH PASSWORD 'ここにパスワード' WITH ALL PRIVILEGES"
★ユーザー名はそのままでパスワードはシングルクォーテーションで囲うようだ。
{"results":[{"statement_id":0}]}
が帰ってきたら成功
Telegrafはconfファイルにユーザー名とパスワードを設定する箇所があるので記入して保存しておく。
## HTTP Basic Auth
username = "telegraf"
password = "metricsmetricsmetricsmetrics"
ChronografはDBに接続する最初の設定でUI上から設定できる。
node-influxからログインして登録する場合は次のinfluxDBのオブジェクトにコードを使う。
const client = new Influx.InfluxDB({
database: 'my_db',
host: 'localhost',
port: 8086,
username: 'connor', //ここを追記:ユーザ名
password: 'pa$$w0rd', //ここを追記:パスワード
//続く
余談:setPassword()
という関数もあるが、こちら単体では動作しなかったため上記の方法で対応。
もっとセキュアな認証方法にも対応しているが大変な記事になるので今回は簡単な方で実装した。
付随するプログラムにも認証手続きが必要となるため思いの外大変になった印象だがセキュリティ的には仕方がない。