filter {
  if "nova" in [tags] {
    mutate {
      gsub => ['logmessage',"\"",""]
    }
    if [module] == "nova.osapi_compute.wsgi.server" {
      grok {
        match => { "logmessage" => "\[(%{NOTSPACE:requestid} %{NOTSPACE:user_id} %{NOTSPACE:tenant} \- \- \-|\-)\] %{NOTSPACE:requesterip} %{NOTSPACE:verb} %{NOTSPACE:url_path} %{NOTSPACE:http_ver} status\: %{NUMBER:response} len\: %{NUMBER:bytes:int} time\: %{BASE10NUM:httptime:float}" }
        add_tag => ["apimetrics"]
      }
    } else if [module] == "nova.api.ec2" {
      grok {
        match => { "logmessage" => "\[%{GREEDYDATA:requestid}\] %{NUMBER:seconds}s %{NOTSPACE:requesterip} %{NOTSPACE:verb} %{NOTSPACE:url_path} None\:None %{NUMBER:response} %{GREEDYDATA:user_agent}" }
        add_tag => ["apimetrics"]
      }
    } else if [module] == "nova.metadata.wsgi.server" {
      grok {
        match => { "logmessage" => "\[%{GREEDYDATA:requestid}\] %{NOTSPACE:requesterip} %{NOTSPACE:verb} %{NOTSPACE:url_path} %{NOTSPACE:http_ver} status\: %{NUMBER:response} len\: %{NUMBER:bytes} time\: %{NUMBER:seconds}" }
        add_tag => ["apimetrics"]
      }
    }
  }
}