Hi, I am new to elastic search and started using logstash to parse unstructured logs. I am using a grok filter to split the logs as much as ı understood from the documentation but it doesn't work. It just uploads every log in a "message" field. How can I use the grok filter to seperate the logs into different fields.
Here is my logstash.conf file.
input {
    file {
            path => "/home/amo/qwe.txt"
            start_position => "beginning"
            ignore_older => 0
    }
}
filter {
    if [message] =~ /":  103]"/ or [message] =~ /":   93]"/ or [message] =~ /":   89]"/ {
            grok {
                    patterns_dir => ["/etc/logstash/conf.d/patterns"]
                    match => { "message" => "(?<timestamp>(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3})) (?<Message_Type>(\w{4,5}))\s+\[(?<Source>[\w\.]*)\s*:(\s){2,3}(?<Message_Code>\d{2,3})\] (?<Message>[\w\s]*):\s*(?<NPC_Event_Bytes>[\dA-F ]*)" }
            }
    }
}
output {
    stdout {
            codec => rubydebug
    }
    elasticsearch {
            hosts => ["localhost:9200"]
    }
}
Here are some of the logs I'm trying to parse.
2018-03-11 17:33:27,177 WARN  [tr.com.xxx.tcconnector.npc.NPCClientActor                   :  103] Incoming message from NPC is: 02 AE 01 52 FF 03
2018-03-11 17:33:27,677 WARN  [tr.com.xxx.tcconnector.npc.NPCClientActor                   :  103] Incoming message from NPC is: 02 AE 04 37 00 00 00 9F 03
2018-03-11 17:33:27,760 WARN  [tr.com.xxx.tcconnector.npc.NPCClientActor                   :   93] Command CommandWithResponseNIRT to be sent to NPC is:	02 20 02 79 53 0A 03
2018-03-11 17:33:27,777 WARN  [tr.com.xxx.tcconnector.npc.NPCClientActor                   :  103] Incoming message from NPC is: 02 60 06 79 53 05 50 00 A7 BC 03
2018-03-11 17:47:36,387 WARN  [tr.com.xxx.tcconnector.npc.NPCClientActor                   :   89] Command CommandNIRT to be sent to NPC is:	02 20 02 83 56 F5 03
I had posted a more full version of what I wanted to do but noone replied. I would very much appreciate it if I could get some insight on what I am doing wrong and how to fix it. Thank you.
By the way I tried the grok pattern on both the herokuapp grok debugger and the kibana debugger and it worked for each log files above. However logstash can't seem recognize it because when I commented out the filter plugin the output didn't change. Also when i added an
else {
     drop {}
}
after the if message this time nothing was uploaded at all.
I am changing the filename each time I reun logstash so it uploads from the beginning.