我最近配置了一个ELK服务器,
在我的应用服务器(magento)var/log/ 目录中有很多日志文件(包括一些用于 magento 的 3rd 方扩展日志),所以我想使用 *.log 将所有日志发送到 logstash,因为我们不知道一些日志由于 3rd 方集成,将来可能创建的文件名。我们也需要抓住那些。
Magento 异常日志有一个带有堆栈跟踪的多行日志,所以我所做的是使用 gork 添加一个过滤器,现在它似乎工作(给出连接输出),
由于我有一个定义类型“staging-all-lincraft-logs”(在两个配置中)所有日志文件都通过它进行解析(参见下面的代码),
我无法删除 *.log 并在不知道文件名的情况下给出特定名称
有什么方法可以只解析logstash配置中的特定文件(exception.log和system.log)(我尝试添加parth,它不起作用)
logstash 转发器配置:
"files": [
{
"paths": [
"/home/deploy/lindcraft/current/codepool/var/log/*.log"
],
"fields": { "type": "staging-all-lincraft-logs" }
}
]
logstash 过滤器配置:
filter {
if [type] == "staging-all-lincraft-logs" {
multiline{
# path => "/home/deploy/lindcraft/current/codepool/var/log/exception.log"
pattern => "^%{TIMESTAMP_ISO8601:timestamp}"
what => "previous"
negate=> true
}
grok {
match => [
"message",
"(?m)%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:priority_name} \(%{INT:priority_level}\): %{GREEDYDATA:message}"
]
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
overwrite => [ "message" ]
}
date {
match => [ "timestamp", "ISO8601" ]
}
}
}