ELK(Elasticsearch / Logstash / Kibana)部署与日志分析
日志和数据分析系统
type
status
date
slug
summary
tags
category
icon
password
一、ELK 简介(作用 + 核心组件)
- 作用:统一日志搜集、解析、存储与可视化(集中管理运维与分析)。
- 核心组件:
- Beats(agent):部署在业务主机用于采集日志
filebeat:应用日志;topbeat/metricbeat:系统指标;winlogbeat:Windows 事件;packetbeat:网络包。- Logstash:日志过滤/解析/转发(支持
grok、mutate、date等 filter)。 - Elasticsearch(ES):分布式搜索引擎,负责索引存储与搜索。
- 含义:将 大数据集拆分成多个小块(Shards,分片),避免单机无法承载。
- 在 ES 中:
- 一个索引(Index)会被拆分成多个 主分片(Primary Shards)。
- 每个分片就像一个小数据库,独立存储部分数据。
- 好处:数据量大时,可以横向扩展,而不是依赖单机性能。
- 含义:把这些分片 分布在不同的机器(Node) 上,而不是集中在一台服务器。
- 在 ES 中:
- 一个 集群(Cluster) 有多台服务器,每台是一个 Node。
- ES 自动将分片均衡地布置到各个节点。
- 好处:
- 提升可靠性:某台机器挂了,数据仍在别的节点上。
- 提升并发性能:查询可以并行分发到不同节点执行。
- 含义:这些节点并不是“各自为政”,而是通过 协调机制 共同对外提供一个完整的服务。
- 在 ES 中:
- 有 主节点(Master Node) 负责管理元数据(索引分片分布情况)。
- 有 数据节点(Data Node) 存储和检索数据。
- 有 协调节点(Coordinating Node) 负责接收请求、拆分任务、合并结果。
- 好处:
- 对用户透明,外部看起来就像是一个统一的搜索引擎。
- 具备高可用性和伸缩性。
- 分:数据拆分(分片)。
- 布:存放到多台机器(节点)。
- 式:各节点协作,对外像一个整体。
- Kibana:可视化 Web UI,用于查看索引、创建 dashboard/图表。
分布式
1. 分 —— 拆分任务和数据
2. 布 —— 分布在多节点
3. 式 —— 协同工作形成整体
小结
分布式 = 分 + 布 + 式
所以,Elasticsearch 之所以能处理海量数据和高并发搜索请求,核心就在于它的 分布式架构。

二、部署前:环境规划与准备步骤(必做)
- 网络/主机规划(示例):
将上述写入
/etc/hosts(所有节点)。- 关闭 SELinux、确保时间同步(避免权限与时间相关索引问题)。
- 安装 JDK(示例):
- 调整系统资源限制(避免 ES 打开大量文件/进程失败):
在
/etc/security/limits.conf 添加:并在
/etc/sysctl.conf 添加/检查:解释:
nofile = 最大文件描述符;noproc = 最大进程数。三、部署 Elasticsearch(详细步骤与配置示例)
3.1 创建用户与解压安装包
(保留安装包路径与权限操作)
3.2 编辑 elasticsearch.yml(示例:主节点)
3.3 重要修正与建议(必须注意)
cluster.initial_master_nodes的值应是 节点名 列表,而不是host:port。例如:
http.cors.allow-origin不应为true,正确写法示例:
(
allow-origin 要求字符串或列表,true 不是合法来源值)。- 注意
node.name一致性:es-node01/es-node02的node.name位置可能有混淆(可能写反),部署时务必确认每台机器node.name与其 hosts/配置一致。
- 节点角色规划:生产环境通常不要让 master 节点同时做大量数据写入(可考虑主节点
node.master: true、node.data: false),但小规模测试/一机多节点可共存(取决于资源)。
3.4 启动 ES 并验证
示例返回会包含
"status":"green" 等字段,用于判断集群状态。四、配置并启动 Logstash(步骤与示例)
4.1 安装与拷贝示例配置
4.2 logstash.conf 示例
说明:%{COMBINEDAPACHELOG} 为 Logstash 自带模式,位于 vendor/.../patterns。
4.3 启动 Logstash(示例)
(文档默认使用 nohup &,建议生产使用 systemd 服务单元管理)。
五、安装并配置 Kibana(步骤)
- 解压并编辑
kibana.yml:
- 启动:
(Kibana web UI 默认监听 5601,用于创建可视化与索引管理)。
六、在业务主机部署 Filebeat(采集并转发日志)
6.1 在 web 服生成访问日志(测试)
6.2 安装 & 编辑 filebeat.yml(关键部分)
6.3 启动 filebeat
建议:同样建议为 filebeat 使用 systemd service,便于启动/停止和日志收集。
七、测试与可视化(验证 ELK 是否正常)
- 在 Kibana → Management → Index Patterns 中查看是否建立了
web-access-log-*索引。
- 在 Kibana → Visualize / Dashboard 创建图表(例如按天统计访问量),确认日志字段解析(
grok是否成功)。
八、常见错误、潜在误解与修正建议
- 建议优先使用 Elasticsearch 附带的 JDK或使用官方推荐的 LTS(例如 Java 11)以保证兼容性与稳定性;不同 ES 版本对 Java 要求不同,务必对照 ES 发布说明确认。
- 启动方式:文中多处使用
nohup ... &启动。建议为 ES / Logstash / Kibana / Filebeat 建立 systemd 单元(生产环境更稳健),并配置日志轮转与监控。
- 权限与文件所有权:解压后务必
chown -R elk:elk /app/elk/并且确认 data/logs 目录权限正确,避免启动失败。
- IPv6 vs IPv4 监听:
netstat示例显示tcp6监听(可能绑定在所有地址)。如果仅需 IPv4,可在elasticsearch.yml使用network.host: 0.0.0.0或指定 IPv4 地址并检查/etc/hosts与 DNS 配置。
Loading...