Python ログ ファイルの解析に logtash を使用したいのですが、それを行うのに役立つリソースはどこにありますか。例えば:
20131113T052627.769: myapp.py: 240: 情報: ユーザー Niranjan ログイン
ここでは、時間情報といくつかのデータ情報を取得する必要があります。
Python ログ ファイルの解析に logtash を使用したいのですが、それを行うのに役立つリソースはどこにありますか。例えば:
20131113T052627.769: myapp.py: 240: 情報: ユーザー Niranjan ログイン
ここでは、時間情報といくつかのデータ情報を取得する必要があります。
私はまったく同じ問題/ニーズを抱えていました。私は本当にこれに対する解決策を見つけることができませんでした。Python のログ出力と実際に一致する利用可能な grok パターンはなかったので、単純に に追加したカスタム grok パターンを作成しましたpatterns/grok-patterns
。
DATESTAMP_PYTHON %{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:%{MINUTE}:%{SECOND},%{INT}
私が書いたlogstash構成は、素晴らしいフィールドを提供してくれました。
ログエントリを生成していた python モジュールを表示するpymoduleと呼ばれるいくつかの追加フィールドを追加しました。
私の logstash 構成ファイルは次のようになります ( sincedb_path を無視します。これは、logstash を実行するたびにログ ファイル全体を強制的に読み取る単純な方法です)。
input {
file {
path => "/tmp/logging_file"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
grok {
match => [
"message", "%{DATESTAMP_PYTHON:timestamp} - %{DATA:pymodule} - %{LOGLEVEL:level} - %{GREEDYDATA:logmessage}" ]
}
mutate {
rename => [ "logmessage", "message" ]
}
date {
timezone => "Europe/Luxembourg"
locale => "en"
match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss,SSS" ]
}
}
output {
stdout {
codec => json
}
}
その点に注意してください
これが最善の解決策である、またはわずかに許容できる解決策であるという保証はまったくありません。
Python ログ ファイルの形式は少し異なります。
[2014-10-08 19:05:02,846] (6715) DEBUG:Our debug message here
そのため、特別なパターンを必要とせずに構成ファイルを作成できました。
input {
file {
path => "/path/to/python.log"
start_position => "beginning"
}
}
filter {
grok {
match => [
"message", "\[%{TIMESTAMP_ISO8601:timestamp}\] \(%{DATA:pyid}\) %{LOGLEVEL:level}\:%{GREEDYDATA:logmessage}" ]
}
mutate {
rename => [ "logmessage", "message" ]
}
date {
timezone => "Europe/London"
locale => "en"
match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss,SSS" ]
}
}
output {
elasticsearch {
host => localhost
}
stdout {
codec => rubydebug
}
}
そして、これはうまくいくようです。