この形式のphpログがあります
[Day Mon DD HH:MM:SS YYYY] [Log-Type] [client <ipv4 ip address>] <some php error type>: <other msg with /path/of/a/php/script/file.php and something else>
[Day Mon DD HH:MM:SS YYYY] [Log-Type] [client <ipv4 ip address>] <some php error type>: <other msg without any file name in it>
[Day Mon DD HH:MM:SS YYYY] [Log-Type] [client <ipv4 ip address>] <some msg with out semicolon in it but /path/of/a/file inside the message>
これは、logstash で処理した後、Graylog2 に送信しようとしています。こちらの投稿を使用して、開始できました。ここで、いくつかの追加フィールドを取得して、最終バージョンが次のようになるようにします。
{
"message" => "<The entire error message goes here>",
"@version" => "1",
"@timestamp" => "converted timestamp from Day Mon DD HH:MM:SS YYYY",
"host" => "<ipv4 ip address>",
"logtime" => "Day Mon DD HH:MM:SS YYYY",
"loglevel" => "Log-Type",
"clientip" => "<ipv4 ip address>",
"php_error_type" => "<some php error type>"
"file_name_from_the_log" => "/path/of/a/file || /path/of/a/php/script/file.php"
"errormsg" => "<the error message after first colon (:) found>"
}
個々の行の式があります。少なくとも、これらはgrokdebuggerを使用して解析できるはずです。このようなもの:
%{DATA:php_error_type}: %{DATA:message_part1}%{URIPATHPARAM:file_name}%{GREEDYDATA:errormsg}
%{DATA:php_error_type}: %{GREEDYDATA:errormsg}
%{DATA:message_part1}%{URIPATHPARAM:file_name}%{GREEDYDATA:errormsg}
しかし、どういうわけか、ログファイル全体で機能させるのは非常に難しいと感じています。
何か提案はありますか?また、ログ ファイルに他の種類のエラー メッセージが記録されるかどうかもわかりません。しかし、その意図は、すべてに同じフォーマットを取得することです。上記の形式を取得するためにこれらのログに取り組む方法について何か提案はありますか?