Logstash 处理多种格式日志2

2022-01-20 11:30:32 浏览数 (1)

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

Tip: 默认情况下,filebeat是全量读取日志内容,除非打开 tail_files: true,打开后只会读到新追加的内容

Note: CentOS 5 中 直接使用 /etc/init.d/filebeat start 会失败,报错如下

代码语言:javascript复制
[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 "^$"

原文地址

0 人点赞