ELK 日志分析平台搭建:Elasticsearch + Logstash + Kibana 实战

ELK Stack(Elasticsearch + Logstash + Kibana)是企业日志分析的黄金标准。

一、架构设计

日志源 → Filebeat → Logstash → Elasticsearch → Kibana
  |         |           |             |            |
  应用日志  轻量采集   过滤/转换     存储/索引   可视化

二、Docker Compose 部署

version: '3'
services:
  elasticsearch:
    image: elasticsearch:8.12.0
    environment:
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    ports:
      - "9200:9200"
    volumes:
      - es-data:/usr/share/elasticsearch/data

  logstash:
    image: logstash:8.12.0
    volumes:
      - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
    depends_on:
      - elasticsearch

  kibana:
    image: kibana:8.12.0
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
    depends_on:
      - elasticsearch

volumes:
  es-data:

三、Logstash 配置

input {
  beats {
    port => 5044
  }
}

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {
    match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
  }
}

output {
  elasticsearch {
    hosts => ["elasticsearch:9200"]
    index => "logs-%{+YYYY.MM.dd}"
  }
}

四、Filebeat 配置

filebeat.inputs:
- type: log
  paths:
    - /var/log/nginx/access.log
  fields:
    app: nginx
    env: production

output.logstash:
  hosts: ["logstash:5044"]

五、关键功能

功能 说明
全文搜索 快速定位日志
聚合分析 统计错误率、响应时间
可视化 仪表盘展示趋势
告警 基于查询的告警规则
权限 RBAC 多租户