Edited at

apacheのアクセスログをidobataのhookに

More than 3 years have passed since last update.

idobata.io 本当に便利ですよね

作った方々、公開している方々

ありがとうございます。m(_ _)m

で、apache のログをidobataに流そうと思って

少し手こずったので備忘録をば。

ただし大量のログを流すとご迷惑になると思うのでお気をつけください

条件付けをするなどしてログの一部だけを流すようにしましょう。

まず curl の使い方がよくわかっていなかった

パイプでつないで idobataに流す方法。例えば dateコマンドの出力なら

date | curl --data-urlencode source@https://idobata.io/hook/...

source@- とするのがミソでした。

次にapacheのログをパイプに流す所がよくわかっていなかった orz

当初、直接 httpd.conf

CustomLog "| curl ...."

と書いたら apache にアクセスが無くても

ジャンジャン idobata に流れてきました!orz

よくあるパイプの利用方法として rotatelogs があるわけですが

あれは動きっぱなしのプログラムですよね。

curl だと終了してしまう。

終了してしまうと apacheは何度も立ち上げ直すようで

その度にidobataにポストしてしまようです。

なので実際には無限ループで curl をラップする必要があります。


pipe2idobata.pl

#!/usr/bin/perl

$|=1;
while(<>){
open(PIPE, "|/usr/bin/curl --data-urlencode source\@- https://idobata.io/hook/.......") || next;
print PIPE $_;
close(PIPE);
}

このスクリプトへパイプで渡すように httpd.confに記述すればOK!

CustomLog "| /usr/local/bin/pipe2idobata.pl > /dev/null 2>&1" combined