Help us understand the problem. What is going on with this article?

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

More than 5 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

wittyfool@github
フリーランスITエンジニア
http://nt55.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away