zoukankan      html  css  js  c++  java
  • nginx(tengine)访问日志分片

    说明

    nginx日志按天分片是运维的基本要求,不仅可以减小文件大小,方便检索关键数据,也可以定时删除过期的日志。可是nginx和tengine默认并不支持文件分片,因此需要额外处理。

    另外,日志分片需要借助 ngx_http_log_module 模块,默认通过yum安装的nginx并不携带此模块,需要额外编译。而tengine默认自带了ngx_http_log_module模块,因此建议使用者直接源码编译tengine即可。

    原理

    日志分片的原理是利用命名管道。linux下一切皆文件,因此创建命名管道作为linux的访问日志,由第三方程序连接命名管道,获取数据后按时间进行分片。这里的第三方程序既可以是由使用者自己编写的处理程序,也可使用开源的软件,如 cronolog。下文采用cronolog实现日志分片。

    步骤

    1. 创建命名管道:mkfifo /opt/logs/nginx/access.log
    2. 启动cronolog:
    cronolog /opt/logs/nginx/access.log.%Y-%m-%d <  /opt/logs/nginx/access.log &
    cronolog /opt/logs/nginx/error.log.%Y-%m-%d < /opt/logs/nginx/error.log &
    
    1. 修改nginx配置文件:
      http内
      log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
      
      access_log   /opt/logs/nginx/access.log main;
      
    2. 重启nginx:nginx -s reload
  • 相关阅读:
    eslint自动格式化
    焕肤功能
    Web Components
    Webpack 中的 sideEffects
    andriod 新建Activity_ Form
    那么唯美
    C# PDF添加水印
    停止触发器
    sp_sys_ERPTrigger_base
    sql语句返回主键SCOPE_IDENTITY()
  • 原文地址:https://www.cnblogs.com/accordion/p/11661965.html
Copyright © 2011-2022 走看看