Nginx Proxy Manager (NPM) 是一个基于Nginx的图形化管理工具,虽然它本身不提供完整的日志分析功能,但我们可以通过配置和集成其他工具来实现访问日志的采集与分析。以下是详细方案:
启用NPM访问日志
/data/logs/proxy-host-*_access.log
自定义日志格式(可选) 在NPM的"Advanced"配置中添加自定义日志格式:
log_format custom '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
安装Filebeat
# Debian/Ubuntu
sudo apt-get install filebeat
# CentOS/RHEL
sudo yum install filebeat
配置Filebeat
filebeat.inputs:
- type: log
enabled: true
paths:
- /data/logs/proxy-host-*_access.log
fields:
log_type: nginx_access
fields_under_root: true
配置输出到ELK
output.elasticsearch:
hosts: ["your-elasticsearch-server:9200"]
indices:
- index: "nginx-access-%{+yyyy.MM.dd}"
安装Fluentd
curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-focal-td-agent4.sh | sh
配置Fluentd
<source>
@type tail
path /data/logs/proxy-host-*_access.log
pos_file /var/log/td-agent/nginx-access.log.pos
tag nginx.access
format /^(?<remote>[^ ]*) (?<host>[^ ]*) (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)" "(?<forwarder>[^\"]*)")?$/
time_format %d/%b/%Y:%H:%M:%S %z
</source>
<match nginx.access>
@type elasticsearch
host your-elasticsearch-server
port 9200
logstash_format true
logstash_prefix nginx-access
</match>
创建索引模式
nginx-access-*
索引模式常用分析仪表板
创建告警规则
配置Prometheus exporter
Grafana仪表板
实时监控
# 使用tail和grep进行实时监控
tail -f /data/logs/proxy-host-*_access.log | grep -E "500|404"
自动化报告
安全分析
日志轮转配置
# 在/etc/logrotate.d/nginx-proxy-manager中添加
/data/logs/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data www-data
sharedscripts
postrotate
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
endscript
}
日志采样(高流量场景)
# 在NPM高级配置中添加
map $request_uri $loggable {
default 1;
~*\.(js|css|jpg|png|gif|ico|woff2) 0;
}
access_log /var/log/nginx/access.log combined if=$loggable;
如果不想维护复杂的ELK Stack,可以考虑:
GoAccess
goaccess /data/logs/proxy-host-*_access.log --log-format=COMBINED -o report.html
AWStats
商业SaaS服务
通过以上方案,您可以全面掌握Nginx Proxy Manager的访问日志,实现从基础监控到深度分析的全套功能。