通过API动态更改Elasticsearch日志记录appender

时间:2015-03-11 18:59:56

标签: logging elasticsearch logstash

TL; DR

在Elasticsearch中,您可以通过API更改log4j日志记录附加程序的端口和remoteHost吗?

长版:

我们目前正在构建用于记录的ELK堆栈(Elasticsearch / Logstash / Kibana)。 Elasticsearch通过Log4J协议将其日志发送到Logstash。

我们有一个包含3个Elasticsearch节点和3个Logstash实例的集群。我们使用ConsulConsul Template进行服务发现以生成配置文件,并在其更改时重新启动Elasticsearch。这是我的logging.yml:

Des.logger.level=DEBUG
es.logger.level: INFO
rootLogger: ${es.logger.level}, console, socketappender
logger:
  action: DEBUG
  com.amazonaws: WARN

appender:
  socketappender:
   type: org.apache.log4j.net.SocketAppender
   {{ with service "logstash-9500" }}{{ with index . 0 }}port: {{.Port}}
   remoteHost: {{.Address}}{{end}}{{end}}
   layout:
      type: pattern
      conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"

现在我正在尝试通过API更改remoteHost和端口,而不必重新启动节点。文档提供了一个更改loglevel的示例:

PUT /_cluster/settings
{
    "transient" : {
        "logger.discovery" : "DEBUG"
    }
 }

但在浏览了文档和代码之后,我无法找到它是否是您可以做的唯一事情,或者是否可以更新任何内容。

如果可以,我找不到合适的路径让它发挥作用。

编辑:目前,我已将地址和端口更改为localhost:9500,并将Balance作为代理/负载均衡器添加到不同的Logstash实例。如果一个Logstash关闭,则平衡故障转移到下一个,以便Elasticsearch和Consul使用新的主机列表重新启动Balance。

0 个答案:

没有答案