提问要多花一点心思哦

filebeat怎么配置日志文件路径,目前有重复数据

Beats | 作者 muou | 发布于2018年07月05日 | 阅读数:6394

我们用filebeat来监控我们项目的日志文件,日志文件根据大小会自动分割的。如下图这个:

1111111111111111.jpg


不知道自动分割的日志文件怎么配置路径。
 
我目前配置的路径是:  - /note/__logs/ess/ess.*
 
 
如果我配置:- /note/__logs/ess/ess.log   日志分割的时候就会丢数据。我才改成了 - /note/__logs/ess/ess.* 。但是发现这样配置的话,我发现会有重复数据推送(日志量少的时候没事,当每秒400条日志的时候就会有重复数据),不知道是不是这样配置的原因。大家对自动分割的日志文件是怎么配置的路径啊。有没有重复数据的问题。
 
现象是这样的:
 
我有两个filebeat节点。2个filebeat都这样配置了
output.logstash:hosts:[ “10.14.125.3:5044","10.14.125.4:5044","10.14.125.5:5044”]。
可以给三个logstash节点发送数据,当三个logstash节点,我只启动一个的时候,2个feilbeat都给这一个发。500条 / 秒的日志量,一条不丢也不重复。同样的日志产生量。我开启2个logstash节点的时候,2个fliebeat可以给两个logstash轮发的时候。数据不丢,但就会发现有重复数据了有时候。测试第一次:发了500万条日志,收到501万多,有1万条是重复的有时候。测试第二次:发了500万日志,收到600多万。通过查询数据发现,确实有重复数据。
 
这是为什么啊?filebeat配置使用的默认的,就是output.logstash:hosts:[“10.14.125.3:5044”,“10.14.125.4:5044”,“10.14.125.5:5044”]这里配置了多个logstash节点。只启动一个logstash接收没问题。启动两个logstash就会出现重复数据。
 
 
大家对自动分割的日志文件是怎么配置的路径啊。有没有重复数据的问题。
 
 
另外还有个小问题:drop_fields  不生效,不知道为啥
 
==========================filebeat的YML如下==================================

#=========================== Filebeat prospectors =============================

filebeat.prospectors:

# Each - is a prospector. Most options can be set at the prospector level, so
# you can use different prospectors for various configurations.
# Below are the prospector specific configurations.

#检查业务日志
- type: log
  # Change to true to enable this prospector configuration.
  enabled: true  
  paths:
    - /note/__logs/ess/ess.*
  # 探矿者在指定的路径中检查新文件的频率
  # 而不会导致Filebeat过于频繁地扫描。默认值:10s。
  scan_frequency: 10s
  # 定义每个采集器在获取文件时使用的缓冲区大小,默认16384
  harvester_buffer_size: 16384

  #单个日志事件可以拥有的最大字节数
  #max_bytes之后的所有字节被丢弃并且不发送默认值是10MB
  #这对于可能变大的多行日志消息特别有用
  max_bytes: 10485760

  fields :
    myhost : 10.14.125.12
    appname : cherry
    document_type: businesslog
    
  fields_under_root : true
  
  drop_fields:
    fields: ["beat", "offset"]

  # Include lines. A list of regular expressions to match. It exports the lines that are
  # matching any regular expression from the list.
  include_lines: ['^{']

#============================= Filebeat modules ===============================

filebeat.config.modules:
  # Glob pattern for configuration loading
  path: ${path.config}/modules.d/*.yml

  # Set to true to enable config reloading
  reload.enabled: false

  # Period on which files under path should be checked for changes
  #reload.period: 10s

#================================ Outputs =====================================
#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["10.14.125.3:5044","10.14.125.4:5044","10.14.125.5:5044"]
  # hosts: ["10.14.123.117:5044"]
已邀请:

muou

赞同来自:

我是题主:又进过测试发现。只启动一个logstash节点来接收数据,也会有重复的数据。哭了

UnigroupAi - 高级Elasticsearch工程师

赞同来自:

你这种情况是生产上日志结构的常见现象。你这种就不能使用ess.* 这种方式去采集日志。你正在采集的ess.log日志一段时间后生成ess.xxx.log,这是对于logstash或fielbeat来说就是发现了一个新的文件,回重新进行采集,这就重复了。
一般这种情况只要指定/path/log/ess.log,只采集ess.log文件,这样就不会重复。
或者,修改日志名:ess.json.log.20180708,然后指定采集/path/log/*.log,这样只会采集以log结尾的文件,文件拆分后也不会重复采集。

niumore

赞同来自:

ess.json.*.log,这样只采集分割后的文件,试过吗?
 
ess.* 肯定会重复的,分割前采集一次,分割后采集一次。

要回复问题请先登录注册