2021年7月31日土曜日

時系列DBにまみれる...InfluxDBの設定

今日は

zabbix監視を始めて以来、時系列データの監視にのめり込み、Prometheus環境の構築でニンマリ。これは、docker-composeで構築できたので、そう労力はかからず。M5stackの内部情報の監視は出来たものの、mqttプログラムとの同居が難しい感じ。ということで、M5stackの内部情報をpushで受け取ってくれるものを探していると、InfluxDBを使うとできそうだと先人の知恵。

今回もdocker-composeでお気軽構築を目指したいと思います。

構成

この図のようにdockerに頼り切って構成したいと思います。

準備

pi_zeroには、dcokerとdocler-composeは、インストール済みです。pi_zeroは、VScodeでremote接続できないので、手動でいきます。

そうは問屋が...

毎度のことですがdocker問屋は、なかなか一発で卸してくれません。在庫がないとか、発注伝票が違うとかしょっちゅうです。pi_zeroの公式armv6イメージはカタログにないそうで。あーーそうですか。自作物がアップロードされていましたが動きません。

pi_zeroはあきらめて、pi4bで確認します。pi4bには、Prometheusが動いていますが同居してもまだリソースは大丈夫そうです。

構成を再検討

armv6イメージ無い問題のためarmv7環境のpi4bに構築します。ポートが当たらないように、新たな構成図です。

ようやくdocker-compse.ymlでゴー

参考リンクからコピーして中身を修正します。

  1. influxdb:latest → armv7/influxdb:latest
  2. networkを前回Prometheusで構成した既存のgrafana_frontに
  3. chronografのポート8888がIPv6のポートと当たっているので待ち受けポートを8890へ変更
  4. パスワード等は、.envから読み込む

修正したものは、参考リンクへ張っておきます。

設定ファイルの作成

${HOME}/docker/influxdbで、設定ファイルの作成が必要です。

# docker run --rm arm32v7/influxdb influxd config > influxdb.conf
# docker run --rm arm32v7/telegraf telegraf config > telegraf.conf

mysqlと同様にDBの作成等面倒な作業が必要です。RDBとほぼ同じなSQL作業です。user追加等をいろいろと先人の知恵を拝借しました。この辺は、Prometheusの方がお気軽な感じです。

chronografって何?

これまでは、httpのpostでDBの作成やuser管理が出来たようですが、セキュリティな観点からか専用のchronografと言うパッケージから管理ができるようです。DBの視覚化と管理ツールです。grafanaほどの派手さはありません。dashboardもちまちま設定しないといけないのでちょっと面倒です。

garafanaのdashboardから見てみると

grafana+influxDB+telegrafと検索すると、サンプルは沢山あります。DLが多いdashboard(ID:1443)をimportするとこのような画面になります。

今日のまとめ

時系列DBのInfluxDBと関連ソフトウェアtelegraf,chronografを構築設定しました。pi4bの監視ができていることまでは確認出来ました。telegrafの使い方をもう少し勉強してUDPデータを受け取れるように変更し、M5stackの監視が出来るのか確認していきたいと思います。

参考リンク

raspi docker influxDB

Running influxdb on Raspberry Pi using Docker compose

esp32 telegraf arduino code

How to send sensor data to InfluxDB from an Arduino Uno | InfluxData

telegraf UDP listener

Telegraf Socket Listener Input Plugin | Blog | InfluxData

influxDB+telegraf+chronograf docker-compse.yml (.envが必要です)

version: "3"

services:
  influxdb:
    image: arm32v7/influxdb:latest
    container_name: influxdb
    restart: always
    env_file:
      - .env
    networks:
      - prometheus_front
    ports:
      - "8086:8086"
    volumes:
      - $HOME/docker/influxdb/data:/var/lib/influxdb
      - $HOME/docker/influxdb/influxdb.conf:/etc/influxdb/influxdb.conf:ro
      - $HOME/docker/influxdb/init:/docker-entrypoint-initdb.d
    environment:
      - INFLUXDB_ADMIN_USER=${INFLUXDB_USERNAME} # sourced from .env
      - INFLUXDB_ADMIN_PASSWORD=${INFLUXDB_PASSWORD} # sourced from .env
  telegraf:
    image: telegraf:latest
    restart: always
    container_name: telegraf
    networks:
      - prometheus_front
    volumes:
      - $HOME/docker/influxdb/telegraf.conf:/etc/telegraf/telegraf.conf:ro
  chronograf:
    container_name: chronograf
    restart: always
    image: chronograf:latest
    ports:
      - "8890:8888"
    depends_on:
      - influxdb
    networks:
      - prometheus_front
    environment:
      - INFLUXDB_URL=http://influxdb:8086 # needs to match container_name
      - INFLUXDB_USERNAME=${INFLUXDB_USERNAME} # sourced from .env
      - INFLUXDB_PASSWORD=${INFLUXDB_PASSWORD} # sourced from .env
        
networks:
  prometheus_front:
    external: true

0 件のコメント:

コメントを投稿

ページ引っ越しました

このページは、以下に引っ越しました。内容も逐次移行中です。引き続きよろしくお願いします。  https://hkaji.github.io →こちら