ログ収集 Fluentdインストール 失敗メモ

グラフを表示してくれるツールMRTGやmuninはもう古い?ということでFluentd・Elasticsearch・Kibana InfluxDB+Grafanaを使ってログ収集ツールを構築していきます。

まずはFluentdをインストールしてみる。Fluentdは集めたログなどをInfluxDBにわたすパイプ役のログ収集ミドルウェア。ESP32などで温度・湿度などを取得してFluentdでラズパイに送ってInfluxDBに保存する。

この記事は複数のページに別れています
  1. ログ収集 Fluentdインストール メモ (今このページを見ています)
  2. Raspi 3+ Elasticsearch インストール 失敗メモ
  3. fluentd使わない ESP8266からInfluxDB APIに投げる 失敗メモ
  4. 定期的に温湿度をFLUENTDに送信してグラフを作る 失敗メモ

Fluentdインストール前の下準備

取説どおりに下準備していきます。

Page not found - Fluentd

時計合わせ

ここ↓でNTPで合わせた。

404 NOT FOUND | Densi
WP・サーバー・PHP・ラズパイ・Arduinoの覚え書き

ファイル数の上限変更

ラズパイだと1024だったので/etc/security/limits.confで65535に変更しないといけないみたい。

$ ulimit -n
1024

rootだけ?上限を変更すればいいみたい。追加して再起動。

$ sudo vim /etc/security/limits.conf

#以下を追加
root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536

Fluentdインストール

$ sudo apt-get install ruby-dev libssl-dev
$ sudo gem install fluentd --no-ri --no-rdoc -V

確認

$ cd /home/pi
$ fluentd --setup ./fluent
$ fluentd -c ./fluent/fluent.conf -vv &

ここでなにやらトレースやエラーがたくさん出てきた。fluent.confはrootでしか取得できないログ設定や他の動いてないコマンドのログがたくさん書いてあるのでエラーになったもよう。

別シェルを出してテストしてみる。

$ echo '{"json":"message"}' | fluent-cat debug.test

以下のように表示されればちゃんと動いてる。

2019-01-20 05:50:42.083180503 +0900 debug.test: {"json":"message"}

停止

$ ps aux | grep fluent 
$ sudo kill 795 など#停止

設定ファイルを最低限にして起動してみる

fluentdを起動するとエラーになるので設定ファイル見直してテスト。

# cd /etc/fluent
$ sudo mv fluent.conf fluent_back.conf
$ sudo vim fluent.conf
<source>
  type forward
  port 24224
  bind 0.0.0.0
</source>
<match debug.**>
  @type stdout
</match>
$ fluentd -c /etc/fluent/fluent.conf -vv &
2019-02-01 13:35:33 +0900 [info]: fluent/log.rb:322:info: parsing config file is succeeded path="/etc/fluent/fluent.conf"
2019-02-01 13:35:33 +0900 [trace]: fluent/log.rb:281:trace: registered output plugin 'stdout'
2019-02-01 13:35:34 +0900 [trace]: fluent/log.rb:281:trace: registered buffer plugin 'memory'
2019-02-01 13:35:34 +0900 [trace]: fluent/log.rb:281:trace: registered formatter plugin 'stdout'
2019-02-01 13:35:34 +0900 [trace]: fluent/log.rb:281:trace: registered formatter plugin 'json'
2019-02-01 13:35:34 +0900 [warn]: fluent/log.rb:342:warn: 'type' is deprecated parameter name. use '@type' instead.
2019-02-01 13:35:34 +0900 [trace]: fluent/log.rb:281:trace: registered input plugin 'forward'
2019-02-01 13:35:34 +0900 [info]: fluent/log.rb:322:info: using configuration file: <ROOT>
  <source>
    type forward
    port 24224
    bind "0.0.0.0"
  </source>
  <match debug.**>
    @type stdout
  </match>
</ROOT>
2019-02-01 13:35:34 +0900 [info]: fluent/log.rb:322:info: starting fluentd-1.3.3 pid=8618 ruby="2.3.3"
2019-02-01 13:35:34 +0900 [info]: fluent/log.rb:322:info: spawn command to main:  cmdline=["/usr/bin/ruby2.3", "-Eascii-8bit:ascii-8bit", "/usr/local/bin/fluentd", "-c", "/etc/fluent/fluent.conf", "-vv", "--under-supervisor"]
2019-02-01 13:35:37 +0900 [info]: fluent/log.rb:322:info: gem 'fluentd' version '1.3.3'
2019-02-01 13:35:37 +0900 [info]: fluent/log.rb:322:info: adding match pattern="debug.**" type="stdout"
2019-02-01 13:35:37 +0900 [trace]: #0 fluent/log.rb:281:trace: registered output plugin 'stdout'
2019-02-01 13:35:37 +0900 [trace]: #0 fluent/log.rb:281:trace: registered buffer plugin 'memory'
2019-02-01 13:35:37 +0900 [trace]: #0 fluent/log.rb:281:trace: registered formatter plugin 'stdout'
2019-02-01 13:35:37 +0900 [trace]: #0 fluent/log.rb:281:trace: registered formatter plugin 'json'
2019-02-01 13:35:37 +0900 [warn]: #0 fluent/log.rb:342:warn: 'type' is deprecated parameter name. use '@type' instead.
2019-02-01 13:35:37 +0900 [info]: fluent/log.rb:322:info: adding source type="forward"
2019-02-01 13:35:37 +0900 [trace]: #0 fluent/log.rb:281:trace: registered input plugin 'forward'
2019-02-01 13:35:37 +0900 [info]: #0 fluent/log.rb:322:info: starting fluentd worker pid=8623 ppid=8618 worker=0
2019-02-01 13:35:37 +0900 [info]: #0 fluent/log.rb:322:info: listening port port=24224 bind="0.0.0.0"
2019-02-01 13:35:37 +0900 [info]: #0 fluent/log.rb:322:info: fluentd worker is now running worker=0
2019-02-01 13:35:42 +0900 [trace]: #0 fluent/log.rb:281:trace: connected fluent socket addr="127.0.0.1" port=50332
2019-02-01 13:35:42 +0900 [trace]: #0 fluent/log.rb:281:trace: accepted fluent socket addr="127.0.0.1" port=50332

ログ保存用DBと表示

次にElasticsearchやKibanaをインストールしていきます。

これはうまくいかなかった。

InfluxDB+Grafanaを使うことにする。

【Iot環境センシング下準備】InfluxDB設定+Grafana+telegrafでラズパイデータ可視化 カッコいいグラフを作ろう
自宅環境センシングの2回目の記事として今回はラズパイ(RaspberryPi)にデータベースのInfluxDBを入れて将来的にセンシングしたデータをInfluxDB保存していきます。そして次回は、GrafanaというデータをWebで美しく表

自動起動

rootユーザーでラズパイ起動時に起動しておく。

$ sudo su
# echo '@reboot /var/lib/gems/2.3.0/gems/fluentd-1.3.3/bin/fluentd -c /etc/fluent/fluent.conf -vv &' | crontab

td-agent インストール 失敗

なんだかtd-agentをインストールするのが最近のやりかたらしいのでやってみる。結果ラズパイはarmhf に対応してないようなのでインストール失敗

Install by DEB Package (Debian/Ubuntu) - Fluentd

ラズパイのバージョンを「lsb_release -a」で確認したらCodename「stretch」だったのでFor Debian Stretch,をダウンロードすると・・・td-agent が見つかりません・・・なんで?

$ sudo curl -L https://toolbelt.treasuredata.com/sh/install-debian-stretch-td-agent3.sh | sh
・・・省略
ヒット:4 https://repos.influxdata.com/debian stretch InRelease
パッケージリストを読み込んでいます... 完了
N: リポジトリ 'http://packages.treasuredata.com/3/debian/stretch stretch InRelease' がアーキテクチャ 'armhf' をサポートしないため設定ファイル 'contrib/binary-armhf/Packages' の取得をスキップ
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
E: パッケージ td-agent が見つかりません

Installation incompleted. Check above messages.

よく調べてみるとarmhf は、 “arm hard float”の略でRaspbianでは対応して無いっぽい。treasure-data.listが作られるのでいったん削除。

$ sudo rm /etc/apt/sources.list.d/treasure-data.list

td-agentはうまくインストールできないので、やはり上のapt-getでインストールしたfluentを使う。

参考

Raspberry Pi をセットアップして fluentd をインストールするまでメモ | iret.media
ども、cloudpack の 工作とか苦手なかっぱ (@inokara) です。はじめに仕事用と称して Raspberry Pi を購入したのでメモです。最終的にはセンサーデバイスから収集されるデータ...
Raspberry Pi に fluentd をインストールする - Qiita
Raspberry Pi (raspbian) に fluentd をインストールして upstart で自動起動するように設定する。fluentd 事前設定Fluentdインストールの前に |…

コメント

タイトルとURLをコピーしました