Supprimer _grokparsefailure si match avec kv

Bonjour,

Je ne parviens pas à supprimer _grokparsefailure même lorsqu'il y a un match de regexp

filter {
  if [logsource] == "1.1.1.1" {
  kv {
      source => "message"
        exclude_keys => [ "type", "subtype" ] }
#        geoip { source => "dst" }
#        geoip { source => "dstip" }
#        geoip { source => "src" }
#        geoip { source => "srcip" }
        mutate {
            rename => [ "dst", "dst_ip" ]
            rename => [ "dstip", "dst_ip" ]
            rename => [ "dstport", "dst_port" ]
            rename => [ "devname", "device_id" ]
            rename => [ "status", "action" ]
            rename => [ "src", "src_ip" ]
            rename => [ "srcip", "src_ip" ]
            rename => [ "zone", "src_intf" ]
            rename => [ "srcintf", "src_intf" ]
            rename => [ "srcport", "src_port" ]
            rename => [ "rcvd", "byte_recieved" ]
            rename => [ "rcvdbyte", "bytes_recieved" ]
            rename => [ "sentbyte", "bytes_sent" ]
            rename => [ "sent", "bytes_sent" ]
            convert => ["bytes_recieved", "integer"]
            convert => ["bytes_sent", "integer"]
            remove_field => [ "msg" ]
        add_tag => [ "Tag1","Tag2" ]
        remove_tag => [ "_grokparsefailure" ]
    }
}
}

Dans Kibana je constate bien que Tag1et Tag2 sont ajoutés alors que _grokparsefailure n'est pas supprimé

Please format your code using </> icon as explained in this guide. It will make your post more readable.

Or use markdown style like:

```
CODE
```

Je laisse @colinsurprenant répondre éventuellement.

Bonjour,

Je ne suis pas certain de comprendre votre question. Si nous reformattons le code correctement:

filter {
  if [logsource] == "1.1.1.1" {
    kv {
      source => "message"
      exclude_keys => [ "type", "subtype" ]
    }
    mutate {
      rename => [ "dst", "dst_ip" ]
      rename => [ "dstip", "dst_ip" ]
      rename => [ "dstport", "dst_port" ]
      rename => [ "devname", "device_id" ]
      rename => [ "status", "action" ]
      rename => [ "src", "src_ip" ]
      rename => [ "srcip", "src_ip" ]
      rename => [ "zone", "src_intf" ]
      rename => [ "srcintf", "src_intf" ]
      rename => [ "srcport", "src_port" ]
      rename => [ "rcvd", "byte_recieved" ]
      rename => [ "rcvdbyte", "bytes_recieved" ]
      rename => [ "sentbyte", "bytes_sent" ]
      rename => [ "sent", "bytes_sent" ]
      convert => ["bytes_recieved", "integer"]
      convert => ["bytes_sent", "integer"]
      remove_field => [ "msg" ]
      add_tag => [ "Tag1","Tag2" ]
      remove_tag => [ "_grokparsefailure" ]
    }
  }
}

Premierement nous voyons que seuls les filtres kv et mutate sont executés, seulement lorsque [logsource] == "1.1.1.1". Donc si le tag "_grokparsefailure" est présent, il sera supprimé. Par contre Je ne vois pas de grok ici.

Colin

Bonjour Colin,

Désolé je suis un peu débutant.
Qu'avez vous reformaté dans le code ? juste enlevé les # ?

Cette règle ne match que 1.1.1.1 c'est normal je fais un test

Je crois comprendre que lorsqu'un règle n'est pas matchée un tag _grokparsefailure est ajouté.
Les règles kv semblent fonctionner correctement cependant dans Kibina je vois les messages avec un tag _grokparsefailure

Faut-il que je rajoute une instance grok ? Par exemple

    grok {
        break_on_match => true
        match => { "message" => ".*" }
        remove_tag => ["_grokparsefailure"]
    }

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.