これまで、ESP8266やESP32で取得した時系列数値データは、ThingSpeakにアップデートして、グラフとして表示してきた。
一方で、サーバのCPU負荷やメモリ残量は、Telegrafを用いてinfluxdbに収集したデータを、Grafanaで可視化するとともに、slackにアラートを通知するようにしている。
ThingSpeakは昔からあるとても便利なASPサービスなのだが、グラフ表示の自由度が低いという弱点がある。今回もある目的で利用しはじめたが、グラフ表示の自由度が低く、他のASPサービスに乗り換えようか悩んでいた。
ふとある日、ESP32からinfluxdbに直接書き込みにいければ、grafanaで可視化できるので便利かもしれないとひらめいた。調べてみたところ、influxdataのページに、How to send sensor data to InfluxDB from an Arduino Unoというページを見つけた。
UDPの認証なしでデータをひたすら送り続けることで、データを蓄積できるとのこと。蓄積できれば、grafanaで可視化やアラート通知も簡単にはず。
設定してやってみた。UDPで投げつけるだけなので、マイコンの処理も軽く、お手軽。簡単にグラフが書けた。
問題は、受信側(サーバ側)のIPアドレスとポート番号、DBのスキーマが分かれば、誰でもデータを送れること。DoS攻撃を食らう可能性はゼロではない。しかし、個人で使う分には現実的に問題になることはないと思われるため、取り合えずやってみることにした。
この問題を解決するには、Basic認証か、クライアント証明書を使うか。手軽にBasic認証を使いたいが、通信路でパスワードが漏れる可能性がある点をどう考えるか。
もう少し考えてみたい。