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

标签 elasticsearch logstash elastic-stack filebeat kibana-5

我是ELK Stack的新手。我通过更新相关的配置文件(yml)配置了ELK堆栈Filebeat,Logstash,ElasticSearch,Kibana。它工作正常,但是我想做的事情如下更改了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

最佳答案

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

  • 注释掉name: ${name}中的filebeat.yml行并运行filebeat -c filebeat.yml -e -E name=myindex。可以使用-E指定任何Filebeat配置选项,而无需在配置中添加它。

  • 要么
  • name: ${NAME}中设置filebeat.yml,然后设置NAME环境变量。在这种情况下,您不再需要-E标志。 ${NAME}语法是使用环境变量的一种方法,但是变量的命名存在一些限制。在您的情况下,您遇到了循环引用的问题,该循环引用应在较新的版本中修复。
  • 关于elasticsearch - 如何将动态变量值传递给Filebeat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44816555/

    相关文章:

    elasticsearch - 从 Elasticsearch 文档中删除字段

    amazon-web-services - Logstash 输出到 AWS EC2 上的 Elasticsearch

    elasticsearch - 如何在Kibana中为条形图应用阈值?

    sql - 查找记录数的比率

    elasticsearch - 如何使用logstash从弹性中获取匹配条件的嵌套对象

    elasticsearch - 为什么这些字段属于我的索引模板中未定义的elasticsearch?

    c# - 弹性嵌套将动态值传递给排序

    elasticsearch - 如何在 Elasticsearch 中获取文档大小(以字节为单位)

    rest - 什么是在Logstash中提取Rest API的正确方法

    regex - 多行的正则表达式模式是什么(logstash)