将Apache的访问日志发送到Idobata的钩子

idobata.io真的很方便啊
感谢那些制作和公开的人们
非常感谢m(_ _)m

所以,因为我想将Apache的日志流式传输到Idobata上,遇到了一些问题,所以我写下了备忘录。

请注意,如果大量发送日志可能会对其他人造成困扰。
我们可以通过条件筛选的方式只发送部分日志。

首先,我对curl的使用方法不太了解。

将管道连接到idobata并流向方法。例如,对于date命令的输出:
date | curl –data-urlencode source@https://idobata.io/hook/… => 将日期命令的输出通过管道传送到idobata,例如:
date | curl –data-urlencode source@https://idobata.io/hook/…

以下是将源文本转述为中文的一种可能方式:这个技巧就是关键所在。

接下来,对于将 Apache 的日志流式传输到管道的部分我并不是很理解 orz
最初,我直接在 httpd.conf 中写了以下代码:
CustomLog “| curl ….”
结果即使没有访问 Apache,日志还是会被大量地发送到 idobata!orz

常见的使用管道的方法之一是使用 rotatelogs,它是一个持续运行的程序。
而使用 curl 则会终止程序运行。
一旦终止,Apache 将会多次重新启动,
每次重新启动都会向 idobata 发送一次通知。

所以实际上需要用无限循环包装curl。

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

只需要一个选项:将以下内容以中国的母语进行转述:
如果在httpd.conf中写入适当的代码,将脚本传递到管道中,就可以了!
CustomLog “| /usr/local/bin/pipe2idobata.pl > /dev/null 2>&1” combined