我有一个app服务器,我已经配置了filebeat(通过Chef)来提取日志并将其发布到logstash(一个单独的ELK服务器),然后发布到ES和Kibana。
我已经将filebeat配置为仅从/opt/app_logs/*.log处理日志,但它似乎也在从其他位置读取日志,因为在/ etc / filebeat配置目录中,我有filebeat.full.yml和其他yml文件自动生成,并且它们似乎具有所有其他文件位置,因此由于如此大量的日志,logstash服务在几分钟内使用logstash.log就会内存不足。我怎么能不自动生成其他yml文件? 我试图删除这个文件,并试图注释掉探矿者的所有/ var / log路径,但是filebeat本身没有启动。
filebeat.yml文件:
filebeat:
prospectors: []
registry_file: "/var/lib/filebeat/registry"
config_dir: "/etc/filebeat"
output:
logstash:
hosts:
- elk_host:5044
index: logstash-filebeat
shipper:
name: serverA
tags:
- A
logging:
to_files: 'true'
files:
path: "/var/log/filebeat"
name: filebeat_log
rotateeverybytes: '10485760'
level: info
prospectors:
- paths:
- "/opt/app_logs/*.log"
encoding: plain
input_type: log
ignore_older: 24h
答案 0 :(得分:2)
您的配置的主要问题是,对于Filebeat 1.2.3,您将mydict['description_long'] = (another_dict['key1']
[0]
['a_really_long_key']
[etc.])
列表定义两次,而第二个列表不在正确的位置。
第二个问题是您已将prospectors
定义为config_dir
。 /etc/filebeat
用于指定查找配置文件的其他目录。它永远不应该设置为config_dir
,因为这是主配置文件应该位于的位置。有关使用信息,请参阅https://stackoverflow.com/a/39987501/503798。
第三个问题是您在/etc/filebeat
和to_files
中使用了字符串类型。它们应分别是布尔和整数类型。
以下是配置应该如何查找Filebeat 1.x。
rotateeverybytes
我强烈建议您升级到Filebeat 5.x,因为它使用filebeat:
registry_file: "/var/lib/filebeat/registry"
config_dir: "/etc/filebeat/conf.d"
prospectors:
- paths:
- "/opt/app_logs/*.log"
encoding: plain
input_type: log
ignore_older: 24h
output:
logstash:
hosts:
- elk_host:5044
index: logstash-filebeat
shipper:
name: serverA
tags:
- A
logging:
to_files: true
files:
path: "/var/log/filebeat"
name: filebeat_log
rotateeverybytes: 10485760
level: info
进行了更好的配置验证。