概要
つらいし枯れた技術だろうな。
何でいまさら枯れた技術?って感じだろうが、
枯れた技術をも生かしてゆきたい、そんな初夏2016
っというわけもなく、
もろもろあって本番しか動いて無いし、故に何もインストールできない。
のでタイトルを実現するためにやったことと、他の場所でやってる方法。
です。
方法
inotify
パッケージインストールしていい状況なら絶対これ。
$ yum install inotify-tools $ inotifywait -d -o /tmp/inotify_message.log -m [folder/file path]
フォルダ or ファイル 更新とかもろもろログに書いてくれる。
-d
でデーモン。
-o
でイベントログ出力先指定。(-s
でsyslog)
主要言語でデーモンプロセス起動!!
Rubyなら fssm
で。
参考)
www.virment.com
phpなら fam_monitor_directory()
で。
参考)
stackoverflow.com
Pythonなら watchdog
で。
参考)
qiita.com
っと、まー各言語でいろいろステキな感じで関数がそろってた。
が、しかし、
phpだとcomposerとかでモジュールインストールしなきゃだし、
rubyでもgemとかでモj...。
pythonでもpipとかd...。そもそも3系入ってない...。
perlは書いたことないし。
...シェル(◞‸◟)
tail!!! ←結局これ
今回のイベントトリガーがhttpアクセスだったから、
アクセスログをtailさせておkだった。
(データ受け取ってファイル出力して 200 OK 返す人がいたということ)
log_checker.sh
#!/bin/sh function str_check() { trigger_str=$1 while read i do echo $i | grep -q ${trigger_str} if [ $? = "0" ];then echo "mitsuketayo!!!!!!" fi done } tail -n 0 --follow=name --retry $1 | str_check $2
$ nohup sh log_checker.sh [/path/to/log] [trigger_str] &
的な感じで実行(◞‸◟)
ちなみに --retry
だとログローテートされても新ログでtailし続けてくれる。
終わりに:イベント通知機能あるから、普通。
github だって slack だってイベント通知してくれるものです。
AWSだっていろいろイベント通知機能あります。
上に挙げたものよりも何よりもまず先に、
イベント通知してくれる機能を調べた方がいい。絶対。