安装filebeat、抓取nginx访问日志和错误日志并写入ES,一天一个索引,索引名类似nginx_log_2023-01-30,并设置定时任务只保留最近2天的文件

安装filebeat、抓取nginx访问日志和错误日志并写入ES,一天一个索引,索引名类似nginx_log_2023-01-30,并设置定时任务只保留最近2天的文件

抓取nginx日志:

配置Filebeat的inputs节点,配置抓取的文件位置
在Filebeat的配置文件filebeat.yml中配置索引模板,使得每天的日志都被写入一个单独的索引
设置定时任务:

创建一个bash脚本,在脚本中写入删除2天前的索引的命令
使用crontab -e命令,配置定时任务,定时执行脚本。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: 轻量型日志采集器 Filebeat基本使用中的 5.3 基于Nginx module使用Filebeat收集Nginx运行日志并输出到es 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    ## 查看module集合
    ./filebeat modules list
    ## 启用module
    ./filebeat modules enable module名称
    ## 禁用module
    ./filebeat modules disable module名称
    

    启动nginx module

    ./filebeat modules enable nginx
    

    查看module列表

    ./filebeat modules list
    

    配置Nginx Module

    ${FILEBEAT_HOME}/modules.d/ nginx.yml

    - module: nginx
      access:
        enabled: true
        var.paths: ["/usr/local/nginx/logs/access.log"]
    
      error:
        enabled: true
        var.paths: ["/usr/local/nginx/logs/error.log"]
    

    配置filebeat:filebeat_nginx_module.yml

    filebeat.inputs:
    setup.template.settings:
      index.number_of_shards: 3
    output.elasticsearch:
      hosts: ["http://118.195.175.213:9200"]
      username: "elastic"
      password: "EtWvHc8lGh05YS7vS1mq"
    filebeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    

    启动filebeat

    ./filebeat -e -c filebeat_nginx_module.yml
    
    ./filebeat -e -c filebeat_nginx_module.yml -d 'publish'
    

    到此,可以查看数据索引

    参考地址:
    https://blog.csdn.net/zyxwvuuvwxyz/article/details/108831962


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^