使用ELK(Elasticsearch、Logstash和Kibana)堆栈来分析Nginx服务器日志是一种强大且灵活的方法,以下是详细步骤:
一、安装和配置Nginx
1、安装Nginx:
cd /usr/local/src/ wget http://nginx.org/download/nginx-1.13.5.tar.gz tar -zxf nginx-1.13.5.tar.gz cd nginx-1.13.5 ./configure --prefix=/usr/local/nginx make && make install
2、配置Nginx日志格式:
在nginx.conf
中添加或修改log_format,以JSON格式记录日志:
log_format main_json '{"domain":"$server_name",' '"http_x_forwarded_for":"$http_x_forwarded_for",' '"time_local":"$time_iso8601",' '"request":"$request",' '"request_body":"$request_body",' '"status":$status,' '"body_bytes_sent":"$body_bytes_sent",' '"http_referer":"$http_referer",' '"upstream_response_time":"$upstream_response_time",' '"request_time":"$request_time",' '"http_user_agent":"$http_user_agent",' '"upstream_addr":"$upstream_addr",' '"upstream_status":"$upstream_status"}'; access_log /var/log/nginx/access.log main_json; error_log /var/log/nginx/error.log;
二、安装和配置Filebeat
1、下载并安装Filebeat:
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.0-linux-x86_64.tar.gz tar xzf filebeat-7.10.0-linux-x86_64.tar.gz mv filebeat-7.10.0-linux-x86_64 /usr/local/filebeat
2、配置Filebeat:
编辑/usr/local/filebeat/filebeat.yml
,添加如下内容:
filebeat.inputs: type: log enabled: true paths: /var/log/nginx/access.log fields: type: nginx-access ignore_older: 24h output.logstash: hosts: ["localhost:5044"]
3、启动Filebeat:
/usr/local/filebeat/filebeat -e -c /usr/local/filebeat/filebeat.yml
三、安装和配置Logstash
1、下载并安装Logstash:
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.0.tar.gz tar xzf logstash-7.10.0.tar.gz mv logstash-7.10.0 /usr/local/logstash
2、配置Logstash:
创建配置文件/usr/local/logstash/config/nginx_access.conf
:
input { beats { port => 5044 } } filter { if [type] == "nginx-access" { grok { match => { "message" => "%{NGINXACCESS}" } } date { match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] } mutate { remove_field => [ "message", "timestamp" ] } } } output { elasticsearch { hosts => ["localhost:9200"] index => "nginx-access-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
3、启动Logstash:
/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/nginx_access.conf
四、安装和配置Elasticsearch
1、下载并安装Elasticsearch:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz tar xzf elasticsearch-7.10.0-linux-x86_64.tar.gz mv elasticsearch-7.10.0 /usr/local/elasticsearch
2、启动Elasticsearch:
/usr/local/elasticsearch/bin/elasticsearch -d
五、安装和配置Kibana
1、下载并安装Kibana:
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.10.0-linux-x86_64.tar.gz tar xzf kibana-7.10.0-linux-x86_64.tar.gz mv kibana-7.10.0-linux-x86_64 /usr/local/kibana
2、启动Kibana:
/usr/local/kibana/bin/kibana -d
3、访问Kibana:
打开浏览器,访问http://<你的服务器IP>:5601,即可进入Kibana管理界面。
六、可视化和分析数据
1、创建索引模式:
在Kibana的管理界面中,导航到“Management” -> “Index Patterns”,创建一个新的索引模式,匹配“nginx-access-*”。
2、创建可视化图表:
在Kibana的“Create” -> “Visualization”中,选择适合的数据可视化类型(如饼图、柱状图等),然后选择相应的字段进行图表绘制。
3、创建仪表盘:
在Kibana的“Create” -> “Dashboard”中,将多个可视化图表添加到同一个仪表盘中,以便全面监控和分析Nginx日志。
通过以上步骤,你可以使用ELK堆栈高效地收集、解析和可视化Nginx服务器日志,从而更好地了解系统运行状态和用户行为。