如何从logstash输出grep particulr字段

如何从logstash输出grep particulr字段,logstash,logstash-grok,Logstash,Logstash Grok,我正试图从logstash 1.repositories#create 2.的输出中仅对几个字段进行grep处理。\“repo\”:\“username/reponame\”。请分享您的想法,以grep此输出的特定信息,并将其分配给另一个变量 “消息”11月01日20:35:15 10-25-15-25-128-66 git-66 gituHuHuHupupupupun审计::{“演员ip”男::“192.168.1.1.1”1,,从”从”从”从”从”从”从”从”从”到”从”从”从”从”到”从”

我正试图从logstash 1.repositories#create 2.的输出中仅对几个字段进行grep处理。\“repo\”:\“username/reponame\”。请分享您的想法,以grep此输出的特定信息,并将其分配给另一个变量

“消息”11月01日20:35:15 10-25-15-25-128-66 git-66 gituHuHuHupupupupun审计::{“演员ip”男::“192.168.1.1.1”1,,从”从”从”从”从”从”从”从”从”到”从”从”从”从”到”从”从”从”从”从”到”从”从”从”储存库中::::“存储库”储存库中。3.168.168.1.1.168.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.“lon\”:null}}},

我使用这个syslog.conf文件来获取输出

input {
  tcp {
    port => 8088
    type => syslog
  }
  udp {
    port => 8088
    type => syslog
  }
}

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp}"
    }
    grep {
      match => { "message" => "repositories#create" }
    }
  }
}

output {
  elasticsearch { host => localhost }
  stdout { codec => rubydebug }
}
我无法为您的回复添加我的评论,非常感谢您的回复

请分享您的想法,仅从这个输出中获取username:和repo:值,我正在尝试分配这个特定输出的值,再次感谢

消息:“github_audit:{“actor_ip:”192.168.1.1”,“from:“repositories#create”,“actor:”username/logstashrepo”,“user:”username”,“created_at:”1416299104782,“action:”repo.create”,“user_id:”1033,“repo_id:”44744,“actor_id:”1033,“data:{“actor_location:”{“actor_location:”{“location:{“location:{“lat:null”,“lon:null”}}}, @版本:“1”, @时间戳:“2014-11-18T08:25:05.427Z”, 主持人:“15-274-145-63”, 键入:“系统日志”, syslog5424_pri:“190”, 时间戳:“11月18日00:25:05”, 演员叶澍鹖:“10.239.37.185”, 来自:“存储库#创建”, 演员:“用户名”, repo:“用户名/logstashrepo”, 用户:“用户名”, 创建地址:1416299104782, 行动:“回购.创建”, 用户id:1033, 回购编号:44744, actor_id:1033,

使用a将JSON有效负载提取到单独的字段中,然后使用a从JSON对象提取字段。下面的示例可以工作,但仅从前缀为“github_audit:”的消息中提取JSON负载。我还猜测,时间戳后面的字段是一个主机名,它应该覆盖当前“主机”字段中的任何内容。别忘了添加一个函数,将“timestamp”字段中的字符串解析为“@timestamp”

filter {
  grok {
    match => [
      "message",
      "%{SYSLOG5424PRI}%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME:host} %{GREEDYDATA:message}"
    ]
    overwrite => ["host", "message"]
  }
  if [message] =~ /^github_audit: / {
    grok {
      match => ["message", "^github_audit: %{GREEDYDATA:json_payload}"]
    }
    json {
      source => "json_payload"
      remove_field => "json_payload"
    }
  }
}