Ubuntu Apache日志优化策略
一 基础路径与日志级别
二 减少日志量与采样
<Directory "/var/www/html/static">
SetEnvIf Request_URI "\.(jpg|jpeg|png|gif|css|js)$" skip
</Directory>
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!skip
按需扩展正则匹配更多后缀。LogFormat "%h %l %u %t \"%r\" %>s %b" common_sampled
CustomLog ${APACHE_LOG_DIR}/access.log common_sampled sample=0.1
LoadModule log_async_module modules/mod_log_async.so
LogAsyncBufferSize 65536
LogAsyncInterval 10
注:模块名与参数以实际发行版与模块版本为准。三 日志轮转与保留策略
/var/log/apache2/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
systemctl reload apache2.service >/dev/null 2>&1 || true
endscript
}
关键参数说明:
sudo logrotate -d /etc/logrotate.d/apache2 # 干跑,检查将要执行的操作
sudo logrotate -f /etc/logrotate.d/apache2 # 强制执行一次
ErrorLog "|/usr/bin/rotatelogs -l /var/log/apache2/error-%Y%m%d.log 86400"
CustomLog "|/usr/bin/rotatelogs -l /var/log/apache2/access-%Y%m%d.log 86400" combined
其中 -l 使用本地时区;86400 为秒(1 天)。也可按大小切分(如 10M)。四 结构化与集中化日志
LogFormat "{ \"@timestamp\":\"%{%Y-%m-%dT%H:%M:%S}t\", \"remote_ip\":\"%h\", \"request\":\"%r\", \"status\":%>s, \"size\":%b, \"referer\":\"%{Referer}i\", \"ua\":\"%{User-Agent}i\" }" json
CustomLog ${APACHE_LOG_DIR}/access.log json
五 落地检查清单
sudo apache2ctl configtest
sudo logrotate -d /etc/logrotate.d/apache2
sudo systemctl reload apache2