首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果消息中的“关键字”对logstash无效

如果消息中的“关键字”对logstash无效
EN

Stack Overflow用户
提问于 2021-10-01 08:15:23
回答 1查看 23关注 0票数 0

我在一个端口上接收来自5个不同来源的日志。实际上,它是通过syslog从服务器实时发送的文件的集合。该服务器存储来自4个VPN服务器和1个DNS服务器的日志。现在,服务器管理员开始在一个端口上发送所有5种类型的文件,尽管我问了一些不同的问题。不管怎样,我想现在也要让它工作了。以下是不同类型的样本-

代码语言:javascript
复制
------------------
<13>Sep 30 22:03:28 xx2.20.43.100 370 <134>1 2021-09-30T22:03:28+05:30 canopus.domain1.com1 PulseSecure: - - - id=firewall time="2021-09-30 22:03:28" pri=6 fw=xx2.20.43.100 vpn=ive user=System realm="google_auth" roles="" proto= src=1xx.99.110.19 dst= dstname= type=vpn op= arg="" result= sent= rcvd= agent="" duration= msg="AUT23278: User Limit realm restrictions successfully passed for /google_auth "
------------------
<134>Sep 30 22:41:43 xx2.20.43.101 1 2021-09-30T22:41:43+05:30 canopus.domain1.com2 PulseSecure: - - - id=firewall time="2021-09-30 22:41:43" pri=6 fw=xx2.20.43.101 vpn=ive user=user22 realm="google_auth" roles="Domain_check_role" proto= src=1xx.200.27.62 dst= dstname= type=vpn op= arg="" result= sent= rcvd= agent="" duration= msg="NWC24328: Transport mode switched over to SSL for user with NCIP xx2.20.210.252 "
------------------
<134>Sep 30 22:36:59 vpn-dns-1 named[130237]: 30-Sep-2021 22:36:59.172 queries: info: client @0x7f8e0f5cab50 xx2.30.16.147#63335 (ind.event.freefiremobile.com): query: ind.event.freefiremobile.com IN A + (xx2.31.0.171)
------------------
<13>Sep 30 22:40:31 xx2.20.43.101 394 <134>1 2021-09-30T22:40:31+05:30 canopus.domain1.com2 PulseSecure: - - - id=firewall time="2021-09-30 22:40:31" pri=6 fw=xx2.20.43.101 vpn=ive user=user3 realm="google_auth" roles="Domain_check_role" proto= src=1xx.168.77.166 dst= dstname= type=vpn op= arg="" result= sent= rcvd= agent="" duration= msg="NWC23508: Key Exchange number 1 occurred for user with NCIP xx2.20.214.109 "

下面是我的配置文件-

代码语言:javascript
复制
        syslog {
                port => 1301
                ecs_compatibility => disabled
                tags => ["vpn"]
        }
}

我尝试首先应用一个条件来获取VPN日志(第一个示例日志行),并将其传递给dissect-

代码语言:javascript
复制
filter {
        if "vpn" in [tags] {
                #if ([message] =~ /vpn=ive/) {
                if "vpn=ive" in [message] {
                        dissect {
                                mapping => { "message" => "%{reserved} id=firewall %{message1}" }
                                # using id=firewall to get KV pairs in message1 
                        }
                }
        }
        else { drop {}  }
# \/ end of filter brace
}

但是当我运行这个配置文件时,我得到了kibana中所有5种类型的日志的混合。我也没有看到任何剖析失败的地方。我记得这在其他服务器上对其他类型的日志有效,但在这里不起作用。

另一个问题是,如果我必须在一个配置文件中处理所有5种类型的日志,下面的方法是不是一个好方法?

代码语言:javascript
复制
if "VPN-logline" in [message] { use KV plugin and add tag of "vpn" }
else if "DNS-logline" in [message] { use JSON plugin and tag of "dns"}
else if "something-irrelevant" in [message] { drop {} }

或者可以在配置的input部分中完成?

EN

回答 1

Stack Overflow用户

发布于 2021-10-02 06:11:24

所以,问题是给每条logline赋上标记pf vpn。我这样做是因为我必须将这个配置合并到一个更大的配置文件中,该文件包含更多的标签。

不管怎么说,现在我只想单独保存这个配置文件。

代码语言:javascript
复制
input {
    syslog {
        port => 1301
        ecs_compatibility => disabled 
    }
}
filter {
        if "vpn=ive" in [message] {
            dissect {
                mapping => { "message" => "%{reserved} id=firewall %{message1}" }
            }
        }
    else { drop {}  }
}
output {
        elasticsearch {
            hosts => "localhost"
            index => "vpn1oct"          
            user => "elastic"
            password => "xxxxxxxxxx"
        }
    stdout { }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69402635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档