我是ELK堆栈的新手。我通过更新相关配置(yml)文件配置了ELK堆栈Filebeat,Logstash,ElasticSearch,Kibana。它运行正常,但我尝试做什么我用变量更改了filebeat配置参数名称,如下所示我可以从命令行传递filebeat。
但是当我尝试将其作为
启动时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
答案 0 :(得分:0)
您正在以一种在该版本的Filebeat中不起作用的方式组合两个功能。您可以执行以下操作之一:
name: ${name}
中注释掉filebeat.yml
行并运行filebeat -c filebeat.yml -e -E name=myindex
。可以使用-E
指定任何Filebeat配置选项,而无需在配置中添加它。或
name: ${NAME}
中设置filebeat.yml
,然后设置NAME
环境变量。在这种情况下,您不再需要-E
标志。 ${NAME}
语法是一种使用环境变量的方法,但在变量的命名方面存在一些限制。在您的情况下,您遇到了循环引用的问题,应该在较新的版本中修复。