【问题标题】:logstash output elasticsearch - generate index name dynamicallylogstash 输出 elasticsearch - 动态生成索引名称
【发布时间】:2018-10-02 17:17:22
【问题描述】:

我正在使用 elastic 和 logstash 版本 6.2.4。

Logstash 输入配置为从 Azure EventHubs 读取数据

input
{
    azureeventhub
    {
        key => ""
        username => "ReadAccess"
        namespace => "myeventhubs"
        eventhub => "logstash"
        partitions => 2
        consumer_group => "logstash-cg"
    }
}

我的事件是 JSON 消息,像这样

{
    "log": {
      "event": "....."
    },
    "header": {
      "remoteName": "foobar"
    }
}

我需要在 elasticsearch 中为每个 remoteName 创建一个索引,所以我尝试将输出配置为这样的弹性:

output {
  elasticsearch {
    hosts => ["localhost:9200"]
     index => "log-%{header.remoteName}-%{+YYYY.MM.dd}"
  }
  stdout { codec => rubydebug }
}

我希望找到一个名为: log-foobar-2018-04-22。 但是没有用。

在 Elasticsearch 中,我发现了一个名为: log-%{header.remoteName}-2018-04-22

是否可以动态创建索引?我需要如何配置 logstash 输入?

【问题讨论】:

    标签: json azure elasticsearch logging logstash


    【解决方案1】:

    尝试以下操作:

    index => "log-%{[header][remoteName]}-%{+YYYY.MM.dd}"
    

    字段参考

    能够按名称引用字段通常很有用。为此,您可以使用 Logstash 字段引用语法。

    访问字段的语法是 [fieldname]。如果您指的是顶级字段,则可以省略 [] 并简单地使用字段名。要引用嵌套字段,请指定该字段的完整路径:[顶级字段][嵌套字段]。

    https://www.elastic.co/guide/en/logstash/5.2/event-dependent-configuration.html

    【讨论】:

    • 虽然此代码可以回答问题,但提供有关 如何为什么 解决问题的附加上下文将提高​​答案的长期价值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    相关资源
    最近更新 更多