使用filebeat和logstash标记索引

使用filebeat和logstash标记索引,logstash,logstash-forwarder,filebeat,Logstash,Logstash Forwarder,Filebeat,我使用logstash转发器和logstash,并使用以下配置创建带有标记的动态索引: /etc/logstash/conf.d/10-output.conf output { elasticsearch { hosts => "localhost:9200" manage_template => false index => "logstash-%{tags}-%{+YYYY.MM.dd}" } } /etc/logstash-forward

我使用logstash转发器和logstash,并使用以下配置创建带有标记的动态索引:

/etc/logstash/conf.d/10-output.conf

output {
  elasticsearch {
    hosts => "localhost:9200"
    manage_template => false
    index => "logstash-%{tags}-%{+YYYY.MM.dd}"
  }
}
/etc/logstash-forwarder.conf

"files": [
    {
      "paths": [
        "/var/log/httpd/ssl_access_log",
        "/var/log/httpd/ssl_error_log"
       ],
      "fields": { "type": "apache", "tags": "mytag" }
    },
关联的filebeat配置为:

/etc/filebeat/filebeat.yml

filebeat:
  prospectors:
    -
     paths:
       - /var/log/httpd/access_log
     input_type: log
     document_type: apache
     fields:
       tags: mytag
在Kibana,我看到的不是
mytag
,而是
beats\u input\u codec\u plain\u在我的所有索引上应用了

[xxxx@yyyyinit.d]#cat/etc/filebeat/filebeat.yml

filebeat:
  prospectors:
    -
     paths:
       - /var/log/httpd/access_log
     input_type: log
     document_type: apache
     fields:
       tags: mytag
###Puppet管理的Filebeat配置(Ruby 1.8版本)### 档案节拍: 线轴尺寸:1024 发布异步:false 空闲超时:10秒 注册表文件:.filebeat 配置目录:/etc/filebeat/conf.d

输出: 日志存储: 主持人: -1.1.1.1:5033

托运人: 标签: -福贝塔


上面指定标记的方法是有效的,但是在logstash中,您仍然会看到默认的“beats\u input\u codec\u plain\u applicated”。不知道如何摆脱它。

默认情况下,在Filebeat中,您定义的那些字段被添加到名为
字段的键下的事件中。若要更改此行为并将字段添加到必须设置的事件根目录中

此外,在Filebeat 5.X中,是“浏览”下的一个配置选项。这个标签列表与全局标签配置合并。这包含几个使用Beats 5.X的
字段
、根下的
字段和
标记的示例

以下是您应该如何更改Filebeat 1.X的配置:

filebeat:
  prospectors:
    - paths:
        - /var/log/httpd/access_log
      input_type: log
      document_type: apache
      fields:
        tags: ["mytag"]
      fields_under_root: true

我已决定将过滤器插入日志存储:

filter {
    if "beats_input_codec_plain_applied" in [tags] {
        mutate {
            remove_tag => ["beats_input_codec_plain_applied"]
        }
    }
}

我可以看到本主题中提到的两个问题。让我总结一下,这对我自己有好处,也希望对其他正在努力解决这个问题的访问者有好处

  • 用于在filebeat“浏览”配置中添加标记的格式(根据a-j从5.0或1.2.3开始提供的“浏览”标记)
  • 坏的:

    好:

    然而,还有一个更重要的问题

  • 标签被连接起来了。我们希望标记是一个数组,但如果我们将新添加的标记发送到logstash,我们将看到它们是ES中的串联字符串 如果只添加一个标记,解决方法(根据hellb0y77)是删除filebeat在logstash(中央服务器端)中添加的自动标记:

    如果要在filebeat中添加多个标记,这将不起作用

    必须将logstash拆分为一个串联字符串,并将每个项添加到标记中。在这种情况下,最好是将filebeat端上的标记放入某个自定义字段,而不是“标记”字段,然后从logstash上的自定义字段中提取它们

    无论如何,似乎没有办法通过更改filebeat配置使其工作。唯一的方法是对接收的logstash过滤器链进行一些解析。另见


    如果您可以删除日志存储,那么这也可能是您的解决方案。当将日志从filebeat直接发送到elasticsearch时,标签会像预期的那样出现在ES中。

    谢谢,现在我的标签出现在索引名中,但通过这种方式
    logstash-mytagbeats\u input\u codec\u plain\u applicated-2016.05.27
    ,我也尝试使用
    {
    而不是
    [
    这很有效,但不使用“字段”。请参阅文档:
     fields:
           tags: ["mytag"]
    
    filter {
        if "beats_input_codec_plain_applied" in [tags] {
            mutate {
                remove_tag => ["beats_input_codec_plain_applied"]
            }
        }
    }