在nginx.conf
中自定义日志格式(推荐JSON格式便于分析):
http {
log_format json_combined escape=json
'{"time_local":"$time_local",'
'"remote_addr":"$remote_addr",'
'"remote_user":"$remote_user",'
'"request":"$request",'
'"status":$status,'
'"body_bytes_sent":$body_bytes_sent,'
'"http_referer":"$http_referer",'
'"http_user_agent":"$http_user_agent",'
'"http_x_forwarded_for":"$http_x_forwarded_for",'
'"request_time":$request_time,'
'"upstream_response_time":"$upstream_response_time"}';
access_log /var/log/nginx/access.log json_combined;
}
在/etc/logrotate.d/nginx
中配置日志轮转:
/var/log/nginx/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
/etc/init.d/nginx reopen-logs >/dev/null 2>&1
endscript
}
安装GoAccess:
# Ubuntu/Debian
sudo apt-get install goaccess
# CentOS/RHEL
sudo yum install goaccess
实时监控命令:
goaccess /var/log/nginx/access.log -o /var/www/html/report.html --real-time-html --log-format=JSON
Logstash配置示例 (nginx.conf
):
input {
file {
path => "/var/log/nginx/access.log"
start_position => "beginning"
sincedb_path => "/dev/null"
codec => "json"
}
}
filter {
mutate {
remove_field => ["@version", "host"]
}
geoip {
source => "remote_addr"
target => "geoip"
}
useragent {
source => "http_user_agent"
target => "user_agent"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "nginx-access-%{+YYYY.MM.dd}"
}
}
Loki配置示例:
scrape_configs:
- job_name: nginx
static_configs:
- targets:
- localhost
labels:
job: nginx-access
__path__: /var/log/nginx/access.log
请求率监控:
响应状态监控:
性能监控:
流量监控:
安全监控:
groups:
- name: nginx-alerts
rules:
- alert: HighErrorRate
expr: sum(rate(nginx_http_requests_total{status=~"5.."}[5m])) by (host) / sum(rate(nginx_http_requests_total[5m])) by (host) > 0.05
for: 10m
labels:
severity: critical
annotations:
summary: "High error rate on {{ $labels.host }}"
description: "5xx error rate is {{ $value }}"
在Grafana面板中设置: - 当5xx错误率>5%持续5分钟时触发告警 - 当平均响应时间>1秒持续10分钟时触发告警
用户行为分析:
API性能分析:
地理分布分析:
设备分析:
对于高流量网站,考虑:
access_log buffer=32k
)日志分析服务器应与生产环境分离,避免影响性能
考虑使用CDN日志分析作为补充
通过以上配置和分析方案,您可以全面掌握网站的访问情况,及时发现并解决问题,优化用户体验和系统性能。