构建集中式日志分析平台需依次完成:一、安装匹配jdk版本并配置环境变量;二、启用es安全功能、生成证书及设置用户密码;三、配置kibana通过https与es可信通信;四、部署同版本filebeat采集日志并加载仪表盘;五、创建索引模式并验证discover数据可见性。

如果您计划构建一个集中式日志分析平台,但尚未将 Elasticsearch 与 Kibana 成功联调并投入实际日志分析使用,则很可能是由于组件间通信失败、版本不兼容或基础服务未就绪所致。以下是完成该平台搭建并确保其稳定运行的实践步骤:
一、验证并安装匹配版本的 JDK
JDK 是 Elasticsearch 运行的强制依赖,版本不匹配将直接导致启动失败或 Kibana 无法连接 ES。Elasticsearch 7.x 要求 JDK 11,8.x 要求 JDK 17,且 Kibana 必须与 Elasticsearch 主版本号严格一致(如 8.12.0 配 8.12.0),否则会出现 API 不兼容错误。
1、执行 java -version 检查当前 JDK 版本是否满足目标 Elasticsearch 版本要求。
2、若版本不符,卸载旧 JDK 并下载对应 OpenJDK 官方发行版(例如 elasticsearch-8.12.0 要求 jdk-17.0.10)。
3、解压后设置 JAVA_HOME 环境变量,并将其 bin 目录加入 PATH。
4、执行 source /etc/profile(Linux)或重启终端(Windows WSL),再次验证 java -version 输出结果。
二、配置 Elasticsearch 基础服务与安全访问
Elasticsearch 默认绑定 localhost,且 8.0+ 版本启用内置安全功能(TLS/HTTPS 和基于角色的访问控制),若未正确配置,Kibana 将因连接拒绝或证书校验失败而无法初始化。
1、编辑 config/elasticsearch.yml,取消注释并设置:
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
2、运行 bin/elasticsearch-certutil ca 生成 CA,再运行 bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 生成节点证书,存入 config/certs/ 目录。
3、为内置用户设置密码:bin/elasticsearch-setup-passwords auto,记录下 elastic 用户密码。
4、启动 Elasticsearch:./bin/elasticsearch -d,等待日志中出现 "started" 字样。
三、配置 Kibana 并建立可信连接
Kibana 必须通过 HTTPS 协议、携带有效凭据与启用了安全特性的 Elasticsearch 通信;若仅修改 server.host 而忽略 TLS 配置,Kibana 将持续报错“Unable to retrieve version information from Elasticsearch nodes”。
1、编辑 config/kibana.yml,确保包含:
server.host: "0.0.0.0"
server.port: 5601
elasticsearch.hosts: ["https://localhost:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "已生成的kibana_system密码"
elasticsearch.ssl.certificateAuthorities: ["/path/to/config/certs/ca.crt"]
elasticsearch.ssl.verificationMode: "certificate"
2、若未预先创建 kibana_system 用户密码,需先在 Elasticsearch 中执行:POST /_security/user/kibana_system/_password 并传入新密码 JSON。
3、启动 Kibana:./bin/kibana --allow-root(生产环境应使用专用用户而非 root)。
4、访问 http://:5601,输入 elastic 用户凭证登录。
四、部署 Filebeat 替代 Logstash 实现轻量日志采集
Logstash 资源开销大且配置复杂,对单机或中小规模日志场景易成瓶颈;Filebeat 作为官方轻量级采集器,直连 Elasticsearch 或经由 Elastic Agent 中转,更适配现代 ELK 实践。
1、下载与 Elasticsearch、Kibana 同主版本的 Filebeat(如 8.12.0),解压后进入目录。
2、编辑 filebeat.yml,启用系统日志模块:
filebeat.modules:
- module: system
log:
enabled: true
var.paths: ["/var/log/messages", "/var/log/secure"]
3、配置输出至 Elasticsearch:
output.elasticsearch:
hosts: ["https://localhost:9200"]
username: "elastic"
password: "elastic用户密码"
ssl.certificate_authorities: ["/path/to/config/certs/ca.crt"]
4、加载 Kibana 仪表盘模板:./filebeat setup --dashboards,确保 Kibana 已启动且可访问。
5、启动 Filebeat:sudo ./filebeat -e,观察日志中是否出现 "Successfully registered metric" and "PublishEvents: sent"。
五、验证日志索引与 Discover 可视化就绪
Kibana 的 Discover 页面无法加载日志,通常源于索引模式未创建、时间字段未识别或 Elasticsearch 中无符合时间范围的文档,需逐层确认数据链路完整性。
1、访问 http://:9200/_cat/indices?v&s=creation.date:desc,确认存在类似 filebeat-8.12.0-2026.05.12 的索引。
2、登录 Kibana,进入 Stack Management → Index Patterns,点击 Create index pattern,输入 filebeat-*,选择 @timestamp 为时间字段。
3、进入 Discover 页面,确认右上角时间范围已设为最近 15 分钟,并观察左侧字段列表中是否显示 host.name、message、@timestamp 等字段。
4、在搜索栏输入 message : "error"(KQL 语法),确认返回非零数量的日志条目。










