如何只收集 filebeat 中的错误级别日志并发送到 elasticsearch

how to only collect error level log in filebeat and send to elasticsearch

我正在使用 filebeat 7.x 收集日志数据,但我遇到了一个问题,即日志大小太大(每天 100GB)。

现在我在考虑如何从源文件中收集错误级别日志。执行此操作的最佳方法是什么?

我正在使用 filebeat 将日志发送到 Kubernetes 集群中的 elasticsearch,我担心的是我是否必须使用 kafka 和 logstash 来定义规则?

请在下面找到正在使用的 filebeat 配置文件:

{
    "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/\"

        output.elasticsearch:
          host: '${NODE_NAME}'
          hosts: '${ELASTICSEARCH_HOSTS:elasticsearch-master:9200}'
        "
}

我建议您将流程配置为:

Filebeat → Kafka → Logstash → ElasticSearch → Kibana

  1. Filebeat 根据配置从您的 server/s 读取日志并将其推送到 Kafka topic/s。

  2. 然后,Logstash将从kafka主题订阅这些日志并执行parsing/filtering/formatting/exclude并根据要求包含字段并将处理后的日志数据发送到Elasticsearch Index。

  3. 通过仪表板可视化您的数据

Kafka 不是 "must" 如果你问的是这个问题。如果您受到弹性集群中可以捕获的数据量的限制,那么可以在您的 logstash 配置中应用解析逻辑来解析和过滤您需要的日志。 Filebeat会将数据发送给logstash,logstash解析过滤后发送给elastic