Raspberry PiにFluentdをインストール
はじめに
Raspberry PiにFluentdをインストールして,Pythonアプリケーションのログを監視しようと思った.
が,インストールで軽く詰まったのでメモ
つまったこと
よくあるインストール方法で簡単にインストール&動作確認してみた.
[参考] fluentdインストール(丁寧な説明つき) - Qiita
gem install fluentd --no-ri --no-rdoc fluentd --setup ./fluent fluentd -c ./fluent/fluent.conf -vv & echo '{"json":"message"}' | fluent-cat debug.test
が,実行したと同時にエラーログが大量に流れ出した.
[error]: fluent/supervisor.rb:640:rescue in main_process: unexpected error error="undefined method `compress' for nil:NilClass" [error]: command/fluentd.rb:288:<top (required)>: /home/user/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/fluentd-0.14.8/lib/fluent/plugin/out_forward.rb:145:in `configure' ...
rbenvのせいかなと思ったけど,そうでもなさそうだった.
解決法
簡単な話で,自動で生成されるfluent.conf
の設定がよくなかったみたい.
<source> type forward port 24224 bind 0.0.0.0 </source> <match **> type stdout </match>
みたいに簡単なものにすると無事動いた.
サーバ起動時に自動でpyenv環境下のuWSGIアプリケーションを実行しようとしたらはまった
前置き
Raspberry Piでサーバを構築している.
せっかくなので起動したら自動的に作成したPythonアプリケーションを実行できるようにしたい.
作成したPythonアプリケーションはpyenvで管理していて,uWSGIサーバを使って動いている.
した
/etc/rc.local
のファイルにシェルスクリプトを書くと実行できる.
ここにこんな風に書くと希望のアプリケーションを実行できる.
# run app from shell script sh run_app.sh
run_app.sh
# nohup uwsgi --ini hoge_app.ini & <-怒られたやつ nohup /home/hoge/.pyenv/shims/uwsgi --ini hoge_app.ini &
はまったこと
上記のように書くと,実行できるが,run_app.sh
はrootユーザで実行される.
がuWSGIはhogeユーザのpyenvで管理していたので,rootユーザからは動かすことができなかった.
そのため,そのまま動かすとuWSGIがないと怒られた.
nohup: コマンド `uwsgi' の実行に失敗しました: そのようなファイルやディレクトリはありません
解決策
たぶんよくない方法だと思うのだが,直接hogeユーザの.pyenv内のuwsgiを指定して実行することで,無事動いた.