LoginSignup
10
10

More than 5 years have passed since last update.

小規模汎用ロガーの作成

Last updated at Posted at 2015-12-28

HTTP でデータを POST するとどんどんログファイルに記録していく簡易ロガーサーバーが欲しくなったので作成しました。

目的

DSC00903.JPG
部屋内の気温や気圧を計測したくて RaspberryPI にセンサーを付けました。
(参照)
http://www.fumi2kick.com/komekame/archives/2331
http://www.fumi2kick.com/komekame/archives/2345

このセンサーから読み取った値をネットワーク上の別サーバーにロギングしようということになったのですが、そういった小物デバイスや定期的な観測などからのデータ蓄積という場面は意外と多いため簡単なログサーバーを作ると便利だろう思ったのが今回の発端です。

RaspberryPi は割と色々できますが、これより小さい IoT 的なデバイスでも使えるようにプロトコルはシンプルな HTTP POST とし、ネットワークさえ繋がれば色んな所からログを POST できるようにします。
自宅内の「なんちゃってIoT」な環境構築への一歩かもしれません。

動作環境

Docker Engine と docker-compose がインストールされているサーバー上で動作します。

構成

2015-12-28_075621.png

3つの Docker コンテナで構成され、これらを docker compose でlinkを指定しながら起動します。
RabbitMQ はリクエストをシリアライズするのが目的ですが、AMQP で直接ポストしたいという状況にも対応するため挟んでいます。

使い方

動作させるだけならば下記の docker-compose ファイルがあれば十分です。
docker-compose.yml と名前を付けて保存してください。

docker-compose.yml
rabbitmq:
  image: rabbitmq
  ports:
    - "5672:5672"
  environment:
    RABBITMQ_DEFAULT_USER: nanlog
    RABBITMQ_DEFAULT_PASS: plaoSgs

nanlogapi:
  image: rerofumi/nanlog-api
  links:
    - rabbitmq:rabbitmq
  ports:
    - "8080:8080"

nanlogstore:
  image: rerofumi/nanlog-store
  links:
    - rabbitmq:rabbitmq
  volumes:
    - /etc/localtime:/etc/localtime:ro
    - /var/log/nanlog:/store

docker-compose.yml をサーバーに置き、docker-compose pull を実行して docker イメージを取得します。RabbitMQ は公式リポジトリのものを利用していますし、それ以外も DockerHub においてあります。
イメージ取得後

# docker-compose up -d

としてロガーを起動します。

上記 docker-compose.yml そのままだと port 8080 で待ち受けますので、http://localhost:8080/[prefix]/ に対しデータを POST してください。prefix の指定は必須です。POST した body がそのままログに記録されます。
curl でのテストコードは

$ curl -X POST -d "hoge" http://localhost:8080/test/

となります。
この場合 prefix が test ですので、/var/log/nanlog/test/ 内に YYYMMdd.log と日付が付いたファイルの中に "hoge" が記録されます。

log のフォーマットは1行毎の JSON 形式で、以下の様になっています。

{"time":"2015-12-28T15:53:38+09:00","log":"aaa"}
{"time":"2015-12-28T16:14:46+09:00","log":"bbb"}
{"time":"2015-12-28T16:22:58+09:00","log":"cccc"}

ソースコード等

以下を参照。
https://bitbucket.org/rerofumi/nanlog/

おわりに

本気でログを取ったり管理したい場合は flunetd を使ったシステムを構築したほうが良いでしょう。
そうではなくあくまで個人用途の小さいロガーとしてこういったものが部屋内にあると便利なのではないかと思います。

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10