如何从logstash输出grep特定字段

时间:2014-11-18 05:13:55

标签: logstash logstash-grok

我正在尝试从logstash 1.repositories#create 2。\" repo \":\" username / reponame \" 。请分享您的想法,从这个outpput grep特定的信息,并将其分配给另一个变量

"消息" => "< 190> 11月01日20:35:15 10-254-128-66 github_audit:{\" actor_ip \":\" 192.168.1.1 \" ,\"从\":\"储存库#创建\" \"演员\":\" myuserid \" ,\"回购\":\"用户名/ reponame \" \"操作\":\" staff.repo_route \&# 34; \" created_at \":1516286634991,\" repo_id \":44743,\" actor_id \":1033,\"数据\":{\" actor_location \":{\"位置\":{\" LAT \":空,\& #34; LON \":空}}}}",

我正在使用此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 }
}

我无法为您的回复添加我的评论,非常感谢您的回复。

请您分享您的想法以获取用户名:和repo:仅从此输出中,我尝试从此特定输出中分配值,再次感谢

消息:" github_audit:{" actor_ip":" 192.168.1.1","来自":"存储库#create&# 34;,"演员":"用户名""回购":"用户名/ logstashrepo""使用者&#34 ;: "用户名"" created_at":1416299104782,"动作":" repo.create"" USER_ID":1033 " repo_id":44744" actor_id":1033,"数据" {" actor_location" {"位置&#34 ;:{" LAT":空," LON":空}}}}&#34 ;, @version:" 1", @timestamp:" 2014-11-18T08:25:05.427Z", 主持人:" 15-274-145-63", 键入:" syslog", syslog5424_pri:" 190", 时间戳:" 11月18日00:25:05", actor_ip:" 10.239.37.185", 来自:"存储库#create", 演员:"用户名", repo:" username / logstashrepo", 用户:"用户名", created_at:1416299104782, 行动:" repo.create", user_id:1033, repo_id:44744, actor_id:1033,

1 个答案:

答案 0 :(得分:1)

使用grok filter将JSON有效内容提取到单独的字段中,然后使用json filter从JSON对象中提取字段。以下示例有效,但仅从前缀为“github_audit:”的消息中提取JSON有效内容。我还猜测时间戳之后的字段是一个主机名,它应该覆盖当前“主机”字段中的任何内容。不要忘记添加date filter来将“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"
    }
  }
}
相关问题