EFK速通
ELK 是 Elasticsearch + Logstash + Kibana 的缩写,现在主流搭配是 Elasticsearch + Filebeat + Kibana(EFK),Filebeat 更轻量、资源占用更低。
一、3个组件干什么?
- Elasticsearch(ES):核心数据库+搜索引擎,存日志、快速查日志,端口 9200。
- Filebeat:轻量日志采集器,装在服务器上读日志文件、发给 ES,端口 5044。
- Kibana:可视化面板,网页看日志、做图表、搜数据,端口 5601。
极简流程:
Filebeat 采集日志 → Elasticsearch 存储 → Kibana 查看/分析
二、环境准备(Linux/CentOS 7)
1. 基础要求
- 系统:CentOS 7 / Ubuntu(新手推荐 CentOS 7)
- 内存:至少 2GB(ES 很吃内存)
- Java:Elasticsearch 8.x 自带 JDK,不用额外装 Java
2. 关闭防火墙/开放端口
1 2 3 4 5 6 7 8 9
| systemctl stop firewalld
systemctl disable firewalld
firewall-cmd --add-port=9200/tcp --permanent firewall-cmd --add-port=5601/tcp --permanent firewall-cmd --add-port=5044/tcp --permanent firewall-cmd --reload
|
3. 创建专用用户(ES 禁止 root 启动)
1 2 3 4
| useradd elk passwd elk
chown -R elk:elk /opt/
|
三、Docker 一键部署
用 Docker Compose 1 分钟起整套 EFK,免复杂配置、免踩坑。
1. 安装 Docker & Docker Compose
1 2 3 4 5 6 7 8
| curl -fsSL https://get.docker.com | bash systemctl start docker systemctl enable docker
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
|
2. 编写 docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| version: '3' services: elasticsearch: image: elasticsearch:8.11.3 container_name: es environment: - discovery.type=single-node - xpack.security.enabled=false - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ports: - "9200:9200" - "9300:9300" volumes: - es-data:/usr/share/elasticsearch/data networks: - elk-net
kibana: image: kibana:8.11.3 container_name: kibana ports: - "5601:5601" environment: - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 depends_on: - elasticsearch networks: - elk-net
filebeat: image: elastic/filebeat:8.11.3 container_name: filebeat volumes: - ./filebeat.yml:/usr/share/filebeat/filebeat.yml - /var/log:/var/log:ro depends_on: - elasticsearch networks: - elk-net
volumes: es-data:
networks: elk-net:
|
3. 编写 Filebeat 配置(filebeat.yml)
1 2 3 4 5 6 7 8 9 10 11 12 13
| filebeat.inputs: - type: log enabled: true paths: - /var/log/messages - /var/log/secure - /var/log/*.log
output.elasticsearch: hosts: ["http://es:9200"]
setup.kibana: host: "kibana:5601"
|
4. 启动 ELK
1 2 3 4 5 6 7 8
| docker-compose up -d
docker-compose ps
docker-compose logs -f
|
四、手动安装(理解原理)
1. 安装 Elasticsearch
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.11.3-linux-x86_64.tar.gz tar -zxvf elasticsearch-8.11.3-linux-x86_64.tar.gz mv elasticsearch-8.11.3 /opt/elasticsearch chown -R elk:elk /opt/elasticsearch
cluster.name: elk-cluster node.name: node-1 network.host: 0.0.0.0 http.port: 9200 discovery.type: single-node xpack.security.enabled: false
su - elk /opt/elasticsearch/bin/elasticsearch -d
curl http://localhost:9200
|
2. 安装 Kibana
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| wget https://artifacts.elastic.co/downloads/kibana/kibana-8.11.3-linux-x86_64.tar.gz tar -zxvf kibana-8.11.3-linux-x86_64.tar.gz mv kibana-8.11.3 /opt/kibana chown -R elk:elk /opt/kibana
server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["http://localhost:9200"]
su - elk /opt/kibana/bin/kibana -d
|
3. 安装 Filebeat
1 2 3 4 5 6 7 8
| wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.11.3-linux-x86_64.tar.gz tar -zxvf filebeat-8.11.3-linux-x86_64.tar.gz mv filebeat-8.11.3 /opt/filebeat
/opt/filebeat/filebeat -e -c /opt/filebeat/filebeat.yml
|
五、Kibana 使用(3步看日志)
- 打开 Kibana:http://IP:5601
- 创建索引模式
- 左侧菜单 → Stack Management → Index Patterns → Create index pattern
- 索引模式输入:
filebeat-* → 下一步
- 时间字段选:
@timestamp → 创建索引模式
- 查看日志
- 左侧菜单 → Discover
- 选择
filebeat-*,即可看到所有采集的日志
六、常用操作
1. 查日志(关键词搜索)
- 在 Discover 搜索框直接输:
error、timeout、404
- 时间范围:右上角选「最近15分钟/1小时/今天」
2. 重启组件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| docker-compose restart elasticsearch docker-compose restart kibana docker-compose restart filebeat
su - elk
ps -ef | grep elasticsearch kill -9 进程号 /opt/elasticsearch/bin/elasticsearch -d
ps -ef | grep kibana kill -9 进程号 /opt/kibana/bin/kibana -d
|
3. 常见问题
- ES 启动失败:内存不够(至少 2GB)、权限不对(必须用 elk 用户)
- Kibana 连不上 ES:ES 没启动、地址写错、防火墙没关
- Filebeat 没数据:日志路径不对、没权限读日志、ES 地址错
七、速通总结(新手必记)
- EFK 架构:Filebeat(采)→ Elasticsearch(存)→ Kibana(看)
- Docker 最快:1 个 yaml 文件,一键启动
- 核心端口:9200(ES)、5601(Kibana)、5044(Filebeat)
- Kibana 关键:创建
filebeat-* 索引模式,Discover 看日志