如何将动态变量值传递给Filebeat?

时间:2017-06-29 04:48:50

标签: elasticsearch logstash elastic-stack filebeat kibana-5

我是ELK堆栈的新手。我通过更新相关配置(yml)文件配置了ELK堆栈Filebeat,Logstash,ElasticSearch,Kibana。它运行正常,但我尝试做什么我用变量更改了filebeat配置参数名称,如下所示我可以从命令行传递filebeat。enter image description here

但是当我尝试将其作为

启动时
filebeat -c filebeat.yml -e -E name=myindex

它开始显示如下错误:

rkumar@ROHIT2K8R2 C:\Users\rkumar\Desktop\ELK\filebeat-5.4.3-windows-x86
$ filebeat -c filebeat.yml -e -E name=myindex
runtime: goroutine stack exceeds 1000000000-byte limit
fatal error: stack overflow

runtime stack:
runtime.throw(0xa0012e, 0xe)
        /usr/local/go/src/runtime/panic.go:566 +0x9c
runtime.newstack()
        /usr/local/go/src/runtime/stack.go:1061 +0x424
runtime.morestack()
        /usr/local/go/src/runtime/asm_amd64.s:366 +0x87

goroutine 1 [running]:
runtime.mapaccess2_faststr(0x9680e0, 0xc042196210, 0xc0421960f0, 0x25, 0x0, 0x0)
        /usr/local/go/src/runtime/hashmap_fast.go:297 fp=0xc0621892c0 sp=0xc0621892b8
github.com/elastic/beats/vendor/github.com/elastic/go-ucfg.valueCache.cachedValue(0xc042196210, 0xc0421960f0, 0x25, 0xc062189390, 0x0, 0x0, 0x0, 0x0)
        /go/src/github.com/elastic/beats/vendor/github.com/elastic/go-ucfg/opts.go:125 +0x6d fp=0xc062189350 sp=0xc0621892c0
github.com/elastic/beats/vendor/github.com/elastic/go-ucfg.(*cfgDynamic).getValue(0xc042100410, 0xc042166580, 0xc0421960f0, 0x25, 0xc04203ea48, 0x1)
        /go/src/github.com/elastic/beats/vendor/github.com/elastic/go-ucfg/types.go:473 +0x7a fp=0xc0621893b8 sp=0xc062189350
...additional frames elided...

goroutine 20 [syscall]:
os/signal.signal_recv(0x0)
        /usr/local/go/src/runtime/sigqueue.go:116 +0x15e
os/signal.loop()
        /usr/local/go/src/os/signal/signal_unix.go:22 +0x29
created by os/signal.init.1
        /usr/local/go/src/os/signal/signal_unix.go:28 +0x48

1 个答案:

答案 0 :(得分:0)

您正在以一种在该版本的Filebeat中不起作用的方式组合两个功能。您可以执行以下操作之一:

  1. name: ${name}中注释掉filebeat.yml行并运行filebeat -c filebeat.yml -e -E name=myindex。可以使用-E指定任何Filebeat配置选项,而无需在配置中添加它。
    1. name: ${NAME}中设置filebeat.yml,然后设置NAME环境变量。在这种情况下,您不再需要-E标志。 ${NAME}语法是一种使用环境变量的方法,但在变量的命名方面存在一些限制。在您的情况下,您遇到了循环引用的问题,应该在较新的版本中修复。