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)配置详细说明以及案例