大数据-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 链路实战