我最近配置了一个ELK服务器,
在我的应用服务器(magento)中,var / log /目录有许多日志文件(包括magento的一些第三方扩展日志), 所以我想把所有使用* .log发送到logstash,因为我们不知道由于第三方集成可能在将来创建的一些日志文件名。我们也需要抓住这些。
Magento异常日志包含带有堆栈跟踪的多行日志, 所以我做的是使用gork添加一个过滤器,现在看起来很有效(给出连接输出),
因为我有一个定义类型" staging-all-lincraft-logs" (在两个配置中)所有日志文件都通过它解析(参见下面的代码),
我无法移除* .log并提供具体名称,因为他们不知道文件名
有没有办法我只能解析logstash配置中的特定文件(exception.log和system.log)(我尝试添加parth,它不起作用)
logstash forwarder config:
"files": [
{
"paths": [
"/home/deploy/lindcraft/current/codepool/var/log/*.log"
],
"fields": { "type": "staging-all-lincraft-logs" }
}
]
logstash filter config:
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" ]
}
}
}
答案 0 :(得分:1)
如果您可以更改第三方扩展程序的日志目录,则可以使用解决方法。然后,您可以将所有名称未发现的文件发送到新目录(例如/ var / log / new_directory /),并将所有其他已知日志保存在 / var / log / 中。因此,您可以按如下所示更改logstash-forwader.conf文件,以将不同类型的日志文件发送到logstash服务器。
"files": [
{
"paths": [
"/home/deploy/lindcraft/current/codepool/var/log/syslog"
],
"fields": { "type": "syslog" }
},
{
"paths": [
"/home/deploy/lindcraft/current/codepool/var/log/exeption.log"
],
"fields": { "type": "exeption-log" }
},
{
"paths": [
"/home/deploy/lindcraft/current/codepool/var/log/new_directory/*.log"
],
"fields": { "type": "staging-all-lincraft-logs" }
}
]
然后添加一个过滤器来解析具有相关GROK模式的不同日志文件。这将是下面的事情。
filter {
if [type] == "syslog" {
grok {
match => { "message" => "GROK pattern for syslog" }
}
}
else if [type] == "exeption-log" {
grok {
match => { "message" => "GROK pattern for exeption-log" }
}
}
else if [type] == "staging-all-lincraft-logs" {
grok {
match => { "message" => "GROK pattern for staging-all-lincraft-logs" }
}
}
}
我认为如果我们需要在logstash中以不同方式处理日志文件,我们必须使用logstash-forwarder中的特定类型发送它们。
希望它有所帮助。