2

高度にカスタマイズされた apache 出力を分析するために goaccess をセットアップしようとしています。私は .goaccessrc ファイルをすぐに書き出す機会がなかったので、(テキスト エディターで) ログを単純化し、ゆっくりと開始することにしました。ただし、この簡単な例を機能させることさえできません。「回答済み」としてマークされているSOの例もいくつか試しましたが、まだかなり簡潔な「処理に有効なものはありません」というメッセージが表示されます。

単純化されたログ ファイルからの行を次に示します。

2014-05-14 06:26:18 "GET / HTTP/1.1" 200 37.157.246.146

ここに私の.goaccessrcがあります:

date_format %Y-%m-%d %H:%M:%S
log_format %d "%r" %s %h

.goaccessrc ファイルが適切な場所にあり、読み取られていると確信しています。これを削除すると、goaccess の実行時にログ形式の構成ウィンドウが表示されるためです。些細なことだと思いますが、見えません。最近の端末セッションの完全な出力は次のとおりです。

[root@dev ~] # cat .goaccessrc
date_format %Y-%m-%d %H:%M:%S
log_format %d "%r" %s %h
[root@dev ~] # cat /var/log/apache2/simple.log
2014-05-14 06:26:18 "GET / HTTP/1.1" 200 37.157.246.146
[root@dev ~] # goaccess -f /var/log/apache2/simple.log

GoAccess - version 0.7.1 - Apr 18 2014 21:28:20

An error has occurred
Error occured at: goaccess.c - render_screens - 456
Message: Nothing valid to process.
4

1 に答える 1

2

完全な回答については、こちらを参照してください。基本的にはこれに尽きます。すべての解析は によって駆動されているようlog_formatで、トークン区切り文字はスペース文字です。したがって、上記の例では、 の最初の%dプレースホルダーはlog_formatの最後まで一致し2014-05-14、その後停止します。次に、次のトークン ( "%r") は、時間部分の先頭を見つけると失敗します。

上記の解決策は次のとおりです。

date_format %Y-%m-%d
log_format %d %^ "%r" %s %h

これは日付 (時間ではなく) に一致し、最初の文字まですべてを無視し"、次にリクエスト URL に一致し、最後にステータスとホスト アドレスに一致します。

日付と時刻が単一のトークン (空白なし) でない限り、時刻部分をうまく一致させることはできないようです。

于 2014-05-19T12:30:46.143 に答える