大数据-189 Nginx JSON 日志接入 ELK

1. 整体架构

Nginx → Filebeat → Kafka → Logstash → Elasticsearch → Kibana

本实战使用 ZK + Kafka 做缓冲解耦。

2. Nginx 配置

2.1 配置 JSON 格式日志

log_format json escape=json '{'
    '"@timestamp":"$time_iso8601",'
    '"request_time":"$request_time",'
    '"status": "$status",'
    '"request_uri": "$request_uri",'
    '"remote_addr": "$remote_addr",'
    '"ua": "$http_user_agent"'
'}';

access_log /var/log/nginx/access.log json;

2.2 监听端口

server {
    listen 8888;
    server_name _;
    location / {
        root /usr/share/nginx/html;
    }
}

3. Zookeeper 集群

在 h121/h122/h123 三个节点启动:

./bin/zookeeper-server-start.sh config/zookeeper.properties

4. Kafka 集群

启动 Kafka 服务:

./bin/kafka-server-start.sh config/server.properties

创建 Topic:

./bin/kafka-topics.sh --create --topic nginx-log --partitions 3 --replication-factor 1 --bootstrap-server localhost:9092

5. Elasticsearch 7.3.0

启动 ES 集群(h121/h122/h123):

./bin/elasticsearch -d

6. Kibana 7.3.0

./bin/kibana

访问 http://localhost:5601

7. 错误速查表

问题可能原因解决方案
Kafka 启动失败ZK 未启动先启动 ZK
ES 集群不健康节点网络不通检查网络配置
Kibana 无法访问ES 未启动检查 ES 状态
日志格式错误Nginx 配置错误检查 log_format

8. 总结

  • Nginx 配置 json 格式日志
  • ZK + Kafka 做缓冲解耦
  • ES 存储 + Kibana 可视化
  • 完整 ELK 链路实战