【发布时间】:2015-12-13 23:10:31
【问题描述】:
我最近配置了一个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" ]
}
}
}
【问题讨论】:
标签: logging elasticsearch logstash-grok logstash-configuration logstash-forwarder