获取Logstash的IP地址

我在我的系统上安装了Elasticsearch,Logstash,Kibana日志查看工具。 现在我的配置中有两台机器(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转发器(比如10),其中所有10个都将日志发送到我们的logstash服务器。 所以我需要标记所有日志事件,以便我可以识别哪个logstash服务器发送了哪个日志事件。

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

    有人可以帮我做这个吗? :)

    或者让别人有一个更好的想法如何以不同的方式有效地做到这一点,你非常欢迎!


    您将需要修改伐木工人输入过滤器和服务器来执行此操作。 请参阅以下差异:

    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')的目的。

    链接地址: http://www.djcxy.com/p/23469.html

    上一篇: Getting IP address of Logstash

    下一篇: Hot vs cold mysql schema migrations and improving speed