Nginx日志分析工具(ELK)配置详细说明以及案例
2025-03-09
8
Nginx日志分析工具(ELK)配置详细说明
1. 环境准备
Elasticsearch: 用于存储和索引日志数据。
Logstash: 用于收集、解析和转发日志数据。
Kibana: 用于可视化和分析日志数据。
Nginx: 生成日志文件。
2. 安装ELK Stack
Elasticsearch:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-amd64.deb sudo dpkg -i elasticsearch-7.10.0-amd64.deb sudo systemctl enable elasticsearch sudo systemctl start elasticsearch
Logstash:
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.0.deb sudo dpkg -i logstash-7.10.0.deb sudo systemctl enable logstash sudo systemctl start logstash
Kibana:
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.10.0-amd64.deb sudo dpkg -i kibana-7.10.0-amd64.deb sudo systemctl enable kibana sudo systemctl start kibana
3. 配置Nginx日志格式
在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 /var/log/nginx/access.log main; }
4. 配置Logstash
创建Logstash配置文件/etc/logstash/conf.d/nginx.conf
:
input { file { path => "/var/log/nginx/access.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } date { match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] } } output { elasticsearch { hosts => ["localhost:9200"] index => "nginx-logs-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
5. 启动Logstash
sudo systemctl restart logstash
6. 配置Kibana
访问Kibana:
http://localhost:5601
创建索引模式:
nginx-logs-*
在Discover页面查看日志数据。
案例
假设Nginx日志中有以下条目:
192.168.1.1 - - [10/Oct/2023:14:55:36 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0"
通过ELK配置后,可以在Kibana中看到以下解析后的日志:
{ "remote_addr": "192.168.1.1", "timestamp": "10/Oct/2023:14:55:36 +0000", "request": "GET /index.html HTTP/1.1", "status": "200", "body_bytes_sent": "612", "http_user_agent": "Mozilla/5.0" }
通过Kibana的可视化工具,可以生成图表和仪表盘,分析Nginx日志中的访问量、响应时间、错误率等指标。
本篇文章内容来源于:Nginx日志分析工具(ELK)配置详细说明以及案例
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。