elasticsearch 如何在filebeat中定义多行,

mu0hgdu0  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(1)|浏览(176)

在我们的群集中,一些应用程序以多行形式发送日志,问题是日志结构因应用程序而异。
我们如何设置一个“if”条件来包含

multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
    multiline.negate: true
    multiline.match: after

在里面吗?
我们的代码:
文件beatConfig:filebeat.yml:|

filebeat.inputs:
      - type: container
        paths:
          - /var/log/containers/*.log
        processors:
        - add_kubernetes_metadata:
            host: ${NODE_NAME}
            matchers:
            - logs_path:
                logs_path: "/var/log/containers/"
        - drop_event:
            when:
              contains:
                container.image.name: "kibana"

      output.logstash:
        hosts: ["logstash-listener:5044"]
h7wcgrx3

h7wcgrx31#

您需要将auto-discovery(Docker或Kubernetes)与模板条件一起使用。
您可能至少有两个模板,一个用于捕获发出多行消息的容器,另一个用于捕获其他容器。

filebeat.autodiscover:
  providers:
    - type: kubernetes
      templates:
        - condition:               <--- your multiline condition goes here
            contains:
              kubernetes.namespace: xyz-namespace
          config:
            - type: container
              paths:
                - /var/lib/docker/containers/${data.docker.container.id}/*.log
              multiline:
                pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
                negate: true
                match: after
              processors:
                - add_kubernetes_metadata:
                  host: ${NODE_NAME}
                  matchers:
                  - logs_path:
                     logs_path: "/var/log/containers/"
                - drop_event:
                    when:
                      contains:
                        container.image.name: "kibana"

相关问题