nginx accesslog的filebeat配置
代码语言:javascript复制[root@nginx-accesslog filebeat]# cat /etc/filebeat/filebeat.yml | grep -v "#" | grep -v "^$"
filebeat:
prospectors:
-
paths:
- /usr/local/nginx/logs/nginxtest-access.log
input_type: log
fields:
testenv: sport
fields_under_root: true
registry_file: /var/lib/filebeat/registry
output:
logstash:
hosts: ["logstash-server:5077"]
shipper:
logging:
files:
[root@nginx-accesslog filebeat]#
这里指定了日志路径,类型,添加了一个域并赋值,然后输出到指定的logstash中
相关的配置基础可以参考 Filebeat Configuration Options
代码语言:javascript复制Tip: 默认情况下,filebeat是全量读取日志内容,除非打开 tail_files: true,打开后只会读到新追加的内容
Note: CentOS 5 中 直接使用 /etc/init.d/filebeat start 会失败,报错如下
[root@nginx-accesslog filebeat]# /etc/init.d/filebeat start
Starting filebeat: FATAL: kernel too old
/bin/bash: line 1: 7968 Segmentation fault filebeat-god -r / -n -p /var/run/filebeat.pid -- /usr/bin/filebeat -c /etc/filebeat/filebeat.yml
[FAILED]
[root@nginx-accesslog filebeat]#
原因是 filebeat-god 认为内核版本太老了,这是一个 go 语言写出来的工具,CentOS 5 的年代 go 语言还不能很好的对它进行支持
解决办法是直接使用 /usr/bin/filebeat -e -c /etc/filebeat/filebeat.yml
来运行程序, 如果有错误 -e
可以在终端看到错误输出,而不是syslog中
Tip: 如果要以服务的形式在后台一直运行,可以这样:
nohup /usr/bin/filebeat -c /etc/filebeat/filebeat.yml &
启动顺序(建议)
- 检查 logstash 配置(确保端口没有被占用,使用
-t
参数对语法进行检查) - 启动(重启) logstash
- 检查新打开的端口
- 分别检查filbeat配置
- 启动(重启) filebeat
- 在elasticsearch中检查确认index (关注新生成的index)
- 在kibana中进行检查确认 (关注新生成的记录中 _grokparsefailure 标记的比例)
- (如有异常,要重新调试确认,一般要在测试环境中充分调试好)
命令汇总
cat filebeat-logstash-es.conf
cat /etc/filebeat/filebeat.yml | grep -v "#" | grep -v "^$"
原文地址