Hi Guys,
I want to parse this JSON to Kibana using Logstash
{
"Format": "IDEA0",
"ID": "2b03eb1f-fc4c-4f67-94e5-31c9fb32dccc",
"DetectTime": "2022-01-31T08:16:12.600470+07:00",
"EventTime": "2022-01-31T01:23:01.637438+00:00",
"Category": ['Intrusion.Botnet'],
"Confidence": 0.03,
"Note": "C&C channel, destination IP: 192.168.1.24 port: 8007/tcp score: 0.9324",
"Source": [{'IP4': ['192.168.1.25'], 'Type': ['CC']}]
}
 
I want that ID, Detect Time, Event Time, Category, Confidence, Note, Source  is a single field so later i can do visualization in kibana.
Here's what I'm already trying to do
input {
        file {
                path => "/home/ubuntu/Downloads/StratosphereLinuxIPS/output/*.json"
                start_position => "beginning"
                sincedb_path => "/dev/null"
        }
}
filter {
        json {
                source => "message"
        }
}
output {
        elasticsearch {
                hosts => ["localhost:9200"]
                index => "test-test"
                user => "***"
                password => "***"
        }
        stdout{}
}
 
But the field is not separated correctly
Thanks.
             
            
               
               
               
            
            
           
          
            
              
                Tomo_M  
                (Tomohiro Mitani)
               
              
                  
                    February 2, 2022,  4:16am
                   
                   
              2 
               
             
            
              Add multiline codec to input plugin
input {
        file {
                path => "/home/ubuntu/Downloads/StratosphereLinuxIPS/output/*.json"
                start_position => "beginning"
                sincedb_path => "/dev/null"
                codec = > multiline { pattern = > "^{$" negate = > "true" what = > "previous" }
        }
}
 
Your input plugin generates events for each line.
             
            
               
               
               
            
            
           
          
            
            
              Hi Tomo,
I've tried the code you give me, but still, output still gives me un-separated fields.
             
            
               
               
               
            
            
           
          
            
              
                Tomo_M  
                (Tomohiro Mitani)
               
              
                  
                    February 2, 2022,  4:45am
                   
                   
              4 
               
             
            
              Does multiline codec make any change at all? 
What is your current output if you use:
output {
   stdout { codec => rubydebug }
}
 
             
            
               
               
               
            
            
           
          
            
            
              oh my bad, there's a change in the output
all the JSON are contained in the one message fields.
Note: the rubydebug give the same output
             
            
               
               
               
            
            
           
          
            
            
              just to make sure what i mean in this sentence
" I want that ID, Detect Time, Event Time, Category, Confidence, Note, Source  is a single field so later i can do visualization in kibana."
is not all those fields in 1 field, I want those field are have own fields.
So there's a fields called ID, Detect Time, Event Time, etc
Thanks.
             
            
               
               
               
            
            
           
          
            
              
                Tomo_M  
                (Tomohiro Mitani)
               
                 
              
                  
                    February 2, 2022,  6:03am
                   
                   
              7 
               
             
            
              
I suppose I have understood your intent.
You can get JSON from Discover. Please share documentw by texts because sharing by screenshot is less informative in most cases.
As there are _jsonparsefailure in tags, the cause of the problem can be identified as the JSON filter plugin.
Single quotation is not consistent with the original JSON format. Try:
filter {
        mutate => {
                gsub => ["message", "'","\""]
        }
        json {
                source => "message"
                # remove_field => "message" #if you don't need this field
        }
}
 
             
            
               
               
               
            
            
           
          
            
            
              still contained in 1 fields
@timestamp:
    Feb 2, 2022 @ 13:17:45.986
@version:
    1
host:
    ubuntu2004
message:
    { "Format": "IDEA0", "ID": "5031c428-dae4-4c47-81b1-c672f1e3325f", "DetectTime": "2022-01-31T11:04:05.206553+07:00", "EventTime": "2022-01-31T04:06:40.906870+00:00", "Category": [\"Anomaly.Connection\"], "Confidence": 0.8, "Note": "a connection without DNS resolution to IP: 34.117.59.81. ", "Source": [{\"IP4\": [\"192.168.1.24\"], \"Type\": [\"Malware\"]}], "Target": [{\"IP4\": [\"34.117.59.81\"], \"Type\": [\"Malware\"]}] }
path:
    /home/ubuntu/Downloads/StratosphereLinuxIPS/output/alerts.json
tags:
    multiline, _jsonparsefailure
_id:
    hR0UuX4Bi0YbDUJ9-J-c
_index:
    test-keempat
_score:
    - 
_type:
    _doc 
 
Here's the screenshot (if needed)
             
            
               
               
               
            
            
           
          
            
              
                Tomo_M  
                (Tomohiro Mitani)
               
              
                  
                    February 2, 2022,  7:22am
                   
                   
              10 
               
             
            
              Turn on config.support_escapes setting in logstash.yml 
Or try
mutate => {
                gsub => ["message", "'",'"']
        }
 
             
            
               
               
               
            
            
           
          
            
            
              Thank You Tomo, work like a charm 
I'm using this one
             
            
               
               
              1 Like 
            
            
           
          
            
              
                system  
                (system)
                  Closed 
               
              
                  
                    March 2, 2022,  8:50am
                   
                   
              12 
               
             
            
              This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.