How can I parse this using grok filter
"tags" => [
[0] "test-category",
[1] "beats_input_raw_event"
Tried this won't work
match => { "[tags][0]" => "%{WORD:category}" }
Thanks
How can I parse this using grok filter
"tags" => [
[0] "test-category",
[1] "beats_input_raw_event"
Tried this won't work
match => { "[tags][0]" => "%{WORD:category}" }
Thanks
grok {
match => { "tags[0]" => "%{WORD:category}" }
}
What are you really trying to do here? Why is the name of the first tag interesting?
I am using
shipper name and tags feature in topbeat and filebeat, to compensate for what I was doing with decorate events. Since I am not storing kafka consumer offsets in Zookeeper anymore. And the plugins don't support topic metadata at this moment.
What I noticed though that in topbeat this feature works, but not in filebeat 5.0-alpha 3
I'm not quite following you, but do you really need to use grok for the tags? I think it'll be easier with existence conditionals like
if "name-of-tag" in [tags] {
to check if a tag is set. Another option is to use Metricbeat instead of Topbeat and use the fields
option (also available in Filebeat) to assign structured fields instead of flat tag names. Then you can define a field like "category: foo" instead of figuring out whether a "category_foo" tag has been set.
Here is why:
I have this config that generates the topic in kafka:
input {
beats {
host => "0.0.0.0"
port => 5044
}
}
output {
kafka {
bootstrap_servers => "broker1.com:7000,broker2.com:7000"
topic_id => "herd-%{[@metadata][beat]}-ev1"
codec => json
}
This will correspond to:
herd-filebeat-ev1
herd-topbeat-ev1
herd-winlogbeat-ev1
Then I read from the kafka topics using decorate events:
kafka {
zk_connect => "blah1.com:2181,blah2.com:2181"
white_list => "herd-topbeat-ev1|herd-filebeat-ev1|herd-winlogbeat-ev1"
decorate_events => true
codec => json
}
}
filter {
grok {
match => { "[kafka][topic]" => "%{WORD:platform}-%{WORD:beatsource}-%{WORD:dc}" }
}
}
My index name follows this format index => "%{beatsource}-%{+YYYY.MM.dd}" which was acquired from parsing the topic name.
Now I have upgraded kafka input/output plugins to 3.x in order to have Kafka 0.9 consumer/producer, to allow consumer offset be stored in Kafka. As a result I have lost ability to use topic metadata through decorate events. I am told that is going to be reinstated at some point. Until then, if you can recommend a very generic way of passing a field or a tag from topbeat, logstash and winlogbeat that i can use in me filter I would greatly appreciate.
This is what I have, where
[beat][name] is suppsed to come from
shipper:
name: filebeat
filter {
grok {
match => { "[beat][name]" => "%{WORD:beatsource}" }
}
}
The reason I was trying to use the shipper, was to have very general high level categorization where messages that have filebeat go to, same for topbeat, and winlogbeat .
Hmm, okay. Metricbeat and Filebeat support adding arbitrary fields to emitted events but Winlogbeat and Topbeat currently only support tags. Since the number of possible tags is finite I'd just use a short series of conditionals like
if "source-filebeat" in [tags] {
...
} else if "source-topbeat" in [tags] {
...
}
...
to discriminate between different kinds of messages.
© 2020. All Rights Reserved - Elasticsearch
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant logo are trademarks of the Apache Software Foundation in the United States and/or other countries.