111418  
                (hsiao)
               
                 
              
                  
                    June 10, 2021,  8:49am
                   
                   
              1 
               
             
            
              Jun  2 16:45:49 tp-id01.test.corp zorp/scb_ssh[1379]: core.alerting(3): (svc/wwVRLvYoUMToHT2Xz9vEbj/ssh_alert:11/ssh): Audit event was recognized; rule='PatternMatcherRule', type='adp.event.command', pattern='user', actions_taken='LOG, NOTIFY, METADB', event_data='ls -l'
Jun  8 17:00:11 sc-id01.test.corp zorp/scb_ssh[1416]: ssh.auth(3): (svc/778EuyyZrBFgb3eLsyVsh3/ssh_orig_target:78/ssh): User authentication failure on server; username='Sc', gateway_user=''
Jun  9 11:18:43 tp-id01.test.corp restserver[871]: User authentication failed; realm='Balabit', username='admin'
 
The log has different contents when users use different act.
In fact ,the log types have more variable contents.
How can set grok if log have different content from the same equipment?
Do I must use multiple pattern to one on one parse these logs?
             
            
               
               
               
            
            
           
          
            
              
                Badger  
                
               
              
                  
                    June 10, 2021,  5:04pm
                   
                   
              2 
               
             
            
              I would start with something like
    grok { match => { "message" => "^(?<[@metadata][timestamp]>.{15}) %{HOSTNAME:hostname} %{NOTSPACE:program}\[%{POSINT:pid}\]: (?<msg>[^;]+); %{GREEDYDATA:[@metadata][restOfLine]}" } }
    date { match => [ "[@metadata][timestamp]", "MMM  d HH:mm:ss", "MMM d HH:mm:ss" ] }
    kv { source => "[@metadata][restOfLine]" field_split_pattern => ", " }
 
which will get you
       "pid" => "1416",
  "hostname" => "sc-id01.test.corp",
       "msg" => "ssh.auth(3): (svc/778EuyyZrBFgb3eLsyVsh3/ssh_orig_target:78/ssh): User authentication failure on server",
  "username" => "'Sc',",
   "program" => "zorp/scb_ssh",
"@timestamp" => 2021-06-08T21:00:11.000Z
 
Note that the empty gateway_user is not added as a field. Or
       "pid" => "871",
     "realm" => "'Balabit',",
  "hostname" => "tp-id01.test.corp",
       "msg" => "User authentication failed",
  "username" => "admin",
   "program" => "restserver",
 
You may then want another grok to parse things out of the msg field.
             
            
               
               
               
            
            
           
          
            
              
                111418  
                (hsiao)
               
              
                  
                    June 11, 2021,  2:59am
                   
                   
              3 
               
             
            
              Hi, Thank you for your responses.
I want to test @metadata  but some grokdebug webs don't test the complete conf.d.
Have any webs can test ?
             
            
               
               
               
            
            
           
          
            
              
                Badger  
                
               
              
                  
                    June 11, 2021,  3:12am
                   
                   
              4 
               
             
            
              Then use logstash to test the config, not a site maintained by a third party that does not work like grok.
See here  and here .
             
            
               
               
               
            
            
           
          
            
              
                111418  
                (hsiao)
               
              
                  
                    June 13, 2021,  9:30am
                   
                   
              5 
               
             
            
              I use your pattern but have one problem.
event_data should contain ls -l , but the output is 'ls
{
             "rule" => "PatternMatcherRule",
             "host" => "idc-securitu-elk01",
          "message" => "<284>Jun  2 16:45:49 tp-id01.test.corp zorp/scb_ssh[1379]: core.alerting(3): (svc/wwVRLvYoUMToHT2Xz9vEbj/ssh_alert:11/ssh): Audit event was recognized; rule='PatternMatcherRule', type='adp.event.command', pattern='user', actions_taken='LOG, NOTIFY, METADB', event_data='ls -l'",
               "id" => "284",
             "time" => "Jun  2 16:45:49",
       "event_data" => "'ls",
       "@timestamp" => 2021-06-13T08:44:14.381Z,
         "hostname" => "tp-id01.test.corp",
    "actions_taken" => "LOG, NOTIFY, METADB",
             "type" => "adp.event.command",
              "msg" => "core.alerting(3): (svc/wwVRLvYoUMToHT2Xz9vEbj/ssh_alert:11/ssh): Audit event was recognized",
         "@version" => "1",
          "pattern" => "user",
          "program" => "zorp/scb_ssh",
              "pid" => "1379"
}
 
I have been use mutate and gsub like this:
filter{
  grok {
     match => { "message" => "<(?<id>\d+)>(?<time>.{15}) %{HOSTNAME:hostname} %{NOTSPACE:program}\[%{POSINT:pid}\][\:\;] (?<msg>[^;]+)[\;] %{GREEDYDATA:[@metadata][restOfLine]} " }
   }
  mutate{
    gsub => ["[@metadata][restOfLine]", "(\S+=)", ", \1"]
   }
   kv { source => "[@metadata][restOfLine]"
        field_split_pattern => ", "
        field_split => ","
   }
}
 
But the output still wrong. 
How can I modify the filter ? 
Thanks
             
            
               
               
               
            
            
           
          
            
              
                Badger  
                
               
              
                  
                    June 13, 2021,  3:54pm
                   
                   
              6 
               
             
            
              
If your fields can contain spaces then do not use a space in field_split_pattern. You can use field_split => "," instead, then use the trim_key option to remove the space.
             
            
               
               
               
            
            
           
          
            
              
                system  
                (system)
                  Closed 
               
              
                  
                    July 11, 2021,  3:55pm
                   
                   
              7 
               
             
            
              This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.