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

スポンサーリンク

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

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

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

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

Page not found - Fluentd

時計合わせ

ここ↓でNTPで合わせた。

404 NOT FOUND | Densi
ワードプレス・エックスサーバー・PHPの取説

ファイル数の上限変更

ラズパイだと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をインストールしていきます。

Raspi 3+ Elasticsearch インストール 失敗メモ
ログ集めれグラフ表示するまでのツールをいろいろ入れてますが、Fluentdは入ったので、Elasticsearch・Kibanaを入れてみますがうまくいかなかった。

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

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

https://densi.biz/influxdb-grafana

自動起動

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)

ラズパイのバージョンを「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インストールの前に | Fluentd に従って設定...

コメント

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