1

OSSECを使用してログを収集し、logstash-forwarderを使用してJSONログをlogstashに転送しています。これは私のlogstash構成です。

input {   
  lumberjack {
    port => 10516
    type => "lumberjack"
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
    codec => json
    }
}

filter {
  json {
    source => "message"
  }
}
output {
  elasticsearch {
    host => localhost
  }
}

括弧内の「場所」フィールドに示されているホストを抽出し、専用のタグを作成したいと思います。これは、logstash がログを転送するため、ソース ホストとして OSSEC しか認識しないためです。以下は、logstash のサンプル出力です。

{
  "_index": "logstash-2015.09.23",
  "_type": "ossec-alerts",
  "_id": "AU_4Q1Hc5OjGfEBnRiWa",
  "_score": null,
  "_source": {
    "rule": {
      "level": 3,
      "comment": "Nginx error message.",
      "sidid": 31301
    },
    "srcip": "192.168.192.10",
    "location": "(logstash) 192.168.212.104->/var/log/nginx/error.log",
    "full_log": "2015/09/23 11:33:24 [error] 1057#0: *562 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.192.10, server: _, request: \"POST /elasticsearch/.kibana/__kibanaQueryValidator/_validate/query?explain=true&ignore_unavailable=true HTTP/1.1\", upstream: \"http://[::1]:5601/elasticsearch/.kibana/__kibanaQueryValidator/_validate/query?explain=true&ignore_unavailable=true\", host: \"192.168.212.104\", referrer: \"http://192.168.212.104/\"",
    "@version": "1",
    "@timestamp": "2015-09-23T03:33:25.588Z",
    "type": "ossec-alerts",
    "file": "/var/ossec/logs/alerts/alerts.json",
    "host": "ossec",
    "offset": "51048"
  },
  "fields": {
    "@timestamp": [
      1442979205588
    ]
  },
  "sort": [
    1442979205588
  ]
}
4

2 に答える 2

1

json{} フィルタを適用すると、一連のフィールドが残ります。より多くのフィールドを作成するための grok{} など、これらのフィールドにさらに多くのフィルタを適用できるようになりました。

于 2015-09-23T07:57:35.287 に答える