簡體   English   中英

獲取Logstash-forwarder機器的IP地址

[英]Getting IP address of Logstash-forwarder machine

我在我的系統上設置了Elasticsearch,Logstash,Kibana日志查看工具。 我的配置現在有2台機器(Amazon EC2實例):

  • 54.251.120.171 - 安裝了ELK的Logstash-server
  • 54.249.59.224 - Logstash-forwarder - 將“/ var / logs / messages”日志發送到Logstash-server

在logstash-server上,這是我的配置(在不同的文件中)的樣子: -

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




filter {
 if [type] == "syslog" {

    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}


output {
  elasticsearch { host => localhost }
  stdout { codec => rubydebug }
}

在logstash-forwarder上,這是我的配置文件的樣子,它將/ var / log / messages,/ var / log / secure日志轉發到logstash-server

{
    "network": {
        "servers": [ "54.251.120.171:5000" ],
        "timeout": 15,
        "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
    },

    "files": [
        {
        "paths": [
                "/var/log/messages",
                "/var/log/secure"
        ],
        "fields": { "type": "syslog" }
        }
    ]
}

這是我的Kibana界面從Elasticsearch獲取索引日志后的樣子。 在此輸入圖像描述

所以我的問題是,我需要一種方法來檢索logstash-forwarder的IP地址,即54.249.59.224,以防有日志事件。

我之所以這么說是在一個真實的場景中,我們可能會有許多logstash-forwarders(比如10),其中所有10個都將日志發送到我們的logstash-server。 所以我需要標記所有日志事件,以便我可以識別哪個logstash-server發送了哪個日志事件。

我需要使用IP地址(也許還有一些其他信息)來搜索Kibana界面中的日志事件。

有人可以幫我這樣做嗎? :)

或者如果有人更好地了解如何以不同的方式有效地做到這一點,那么你們非常歡迎!

您需要修改Lumberjack輸入過濾器和服務器才能執行此操作。 請參閱以下差異:

https://github.com/stanhu/logstash-input-lumberjack/commit/0861c9d95caa46370f17a82353710bc78ea2c82e

https://github.com/stanhu/logstash-forwarder/commit/b711d273a24ab3fe1b4a7b6005d2f26983cac859

在將這些更改合並到logstash-forwarder和logstash-input-lumberjack之前,現在最簡單的方法是直接修改已安裝的文件。 如果你使用的是當前的Debian軟件包,它們就在這里:

/opt/logstash/lib/logstash/inputs/lumberjack.rb
/opt/logstash/vendor/bundle/jruby/1.9/gems/jls-lumberjack-0.0.20/lib/lumberjack/server.rb

到輸入過濾器配置文件(例如/etc/logstash/conf.d/01-lumberjack-input.conf),添加:

client_address_field => "client_address"

您的logstash配置應如下所示:

input {
  lumberjack {
    host => "localhost"
    port => 5000
    type => "logs"
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
    client_address_field => "client_address"
  }
}

在計算機上重新啟動logstash,並檢查client_address字段現在是否已添加到每條消息中。

這就是“主機”字段(您也復制到'received_from')的用途。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM