1

syslog-ng を使用してログを中央の syslog サーバーに転送しようとしています。しかし、それは機能していません。

これは、syslog-ng.conf に追加した行です。

source s_access { file("/var/log/httpd/access_log" follow_freq(10) flags(no-parse)); };
destination logserver { udp("xxxxxx.amazonaws.com" port(514)); };
log { source(s_access); destination(logserver); };

しかし、再起動すると、次のエラーが発生します。

[root@ip-10-244-143-226 ~]# /etc/init.d/syslog-ng restart
Stopping syslog-ng:                                        [  OK  ]
Starting syslog-ng: syntax error at 79
Parse error reading configuration file, exiting. (line 79)
                                                           [FAILED]

79 行目は source s_access が定義されている行です。

何が問題になる可能性がありますか?

誰か助けてください :( 次の行が問題です。 source s_access { file("/var/log/httpd/access_log" follow_freq(10) flags(no-parse, validate-utf8)); };

しかし、どこが悪いのかわかりません。

Apache、Tomcat、およびいくつかのカスタム アプリケーションがあり、これらのログをリモートの中央 syslog サーバーに送信する必要があります。

4

1 に答える 1

1

Apache イベントを syslog-ng に記録しようとしている場合、いくつかのことが不足しています。これを行う手順を説明するLogZillaのブログ投稿がここにあります。ニーズに合わせて調整できるはずです。しかし、完全を期すために、ブログページが削除された場合に備えて、ここに再投稿します。

この方法は Apache に限定されませんが、すべての Common Log Format ログで機能します。共通ログ形式で保存されたファイルの各行には、次の構文があります。

host ident authuser date request status bytes

最初のステップは、新しいソースを syslog-ng 構成に追加することです。/etc/syslog-ng/conf.d ディレクトリにファイルを作成し、apache.conf という名前を付けます。

cd /etc/syslog-ng/conf.d 
 vi apache.conf

ファイルがエディターで開かれたら、まずソースを追加します。

source s_apache {
 file("/var/log/apache2/access.log");
 file("/var/log/apache2/error.log");
 };

Web サーバーで有効にしている場合は、ssl-access.log を追加することもできます。同じファイルに、宛先を追加する必要があります。

log { source(s_apache);
 destination(d_tls);
 };

この例では、宛先は前のチュートリアルで作成された TLS トンネルです。ファイルを保存して終了し、syslog-ng を再起動します。

service syslog-ng restart

これで、Logzilla サーバーで apache イベントを受信するはずですが、少しずれているように見えます。これは、まだフォーマットされていないためです。そのためには、apache 構成を編集する必要があります。この手順は Apache でのみ機能します。その他の Common Log Format ソースについては、それぞれ独自のフォーマット ソリューションがあります。

cd /etc/apache2
 vi apache2.conf

そのファイルには、次のような行があります。

LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %v" combined

それに少し追加する必要があります(事前に設定された日付は無視されます)。

LogFormat "Jan 12 12:12:12 %v apache[666]: %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %v" combined

ファイルを保存して Apache を再起動すると、ログは次のようになります。

0 www user notice apache None 97.76.75.78 - - [07/Nov/2013:15:14:41 -0500] "GET /highslide/highslide.css HTTP/1.1" 304 209 
"http://www.yourserver.com/" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; EIE10;ENUSMSN)" 
www.yourserver.com
于 2014-03-06T13:52:43.240 に答える