ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

EFK/ELK9.0.3 windows搭建

2026/8/17 4:58:29 拓冰建站 浏览量
EFK/ELK9.0.3 windows搭建

背景

最近某个功能要使用到ELK(ElasticSearch、Logstash、Kibana)采集日志,对数据进行分析,网上百度了一下,因为涉及到了对数据格式的处理,所以搭建了ELFK,本地是以默认ssl方式启动的,即https,但是filebeat和logstash里面配置的是http,所以记得改相关配置点,也可以设置关闭ssl方式。

下载链接

Elasticsearch
在这里插入图片描述
Kibana
在这里插入图片描述
Filebeat
在这里插入图片描述
Logstash
在这里插入图片描述
analysis-ik
在这里插入图片描述

安装前提

需安装java环境,在此不叙述,不会的自行百度安装。

下载示例

在这里插入图片描述

Elasticsearch安装

下载完成后解压对应的zip包,然后配置文件在config目录下,启动在bin目录下的elasticsearch.bat,不需要改动任何配置,直接点击bat命令启动即可。

账号密码和证书

启动bat过程中会出现账号(默认都是elastic)密码和Kibana的认证证书,记得保存下来后续登录需要用到,注意密码和证书的首位空格去掉,可以使用bin/elasticsearch-reset-password -u elastic命令更改密码。
在这里插入图片描述

配置说明

9.0.3版本默认以ssl方式登录的,启动成功后默认都是开启安全保护。
在这里插入图片描述

xpack.security.enabled: false:此设置表示你已禁用了 Elasticsearch 的安全功能。这意味着 Elasticsearch 不会执行用户身份验证和访问控制。请确保你在另外的方式下对 Elasticsearch 进行了安全保护。

xpack.security.enrollment.enabled: true:此设置启用了 Elasticsearch 的安全证书认证功能。通过此功能,你可以使用证书来进行节点之间的相互认证。

xpack.security.http.ssl.enabled: false:此设置表示你已禁用了通过 HTTPS 加密来保护 Kibana、Logstash 和 Agents 与 Elasticsearch 之间的连接。这意味着这些连接将以明文方式传输数据。

xpack.security.transport.ssl.enabled: true:此设置表示你已启用了节点之间的传输层加密和相互认证功能。这样可以保护 Elasticsearch 集群节点之间的通信安全。

cluster.initial_master_nodes: [“PC-20230824PCHD”]:此设置指定了初始主节点的名称。只有具有该名称的节点才能成为集群的初始主节点。

http.host: 0.0.0.0:此设置允许从任何地方的 HTTP API 连接。连接是加密的,需要用户身份验证。

解决跨域问题

http.cors.enabled: true
http.cors.allow-origin: "*"

启动成功

访问elasticsearch登录链接,https://localhost:9200,注意是https,输入上面获取的账号密码,启动成功。
在这里插入图片描述
在这里插入图片描述

配置分词器(9.0.3默认自带分词器,暂未解决引入报错问题,请勿参考)

ik版本号要和es版本号一致,下载的elasticsearch-analysis-ik-9.0.3.zip解压到目录复制到es的plugins目录下即完成ik插件的安装,注意解压完删除zip包,不然启动会报错起不来
在这里插入图片描述

在这里插入图片描述

重启es,启动日志看到loaded plugin [analysis-ik],说明加载了ik分词器。

KIBANA安装

下载完成后解压对应的zip包,然后配置文件在config目录下,修改配置文件,将i18n.locale注释放开,修改为zh-CN,为中文启动,启动在bin目录下的kibana.bat,不需要改动任何配置,直接点击bat命令启动即可。
在这里插入图片描述
在这里插入图片描述

启动成功

启动过程中会出现登录链接,点击跳转登录即可,在cmd窗口中按住ctrl键+鼠标点击即可跳转登录至浏览器,kibana登录链接,http://localhost:5601。
在这里插入图片描述

输入令牌

登录过程中需要输入令牌,将上面启动es获取到的令牌输入即可。
在这里插入图片描述

输入验证码

验证码就在kibana的启动窗口获取。

在这里插入图片描述
如果令牌忘记保存了,可以在es的bin目录输入下面命令重新获取令牌,elasticsearch-create-enrollment-token -s kibana
在这里插入图片描述
成功后出现登录界面,输入es的账号密码即可登录。
在这里插入图片描述
登陆成功后显示中文页面
在这里插入图片描述

启动报错

启动完成后,最后会出现一行错误(虽然不影响), Error: Unable to create alerts client because the Encrypted Saved Objects plugin is missing encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in the kibana.yml or use the bin/kibana-encryption-keys command.因为es没有encrypted-saved-objects插件导致,解决方法如下:在es的bin目录下执行命令elasticsearch-plugin list,查看当前的插件,未安装则使用命令elasticsearch-plugin install com.floragunn:encrypted-saved-objects:x.y.z进行安装,其中x.y.z 是插件的版本号,你需要替换为适合你 Elasticsearch 版本的正确版本。
在这里插入图片描述
输入elasticsearch-plugin list
在这里插入图片描述输入elasticsearch-plugin install com.floragunn:encrypted-saved-objects:9.0.3
在这里插入图片描述
但是使用该命令安装失败,deepseek回答说是9版本不支持插件方式,可回退至6或者7的版本,不影响使用,跳过。

配置说明

因为elasticsearch是以ssl方式启动的,所以kibana配置也是如此,启动成功后会出现下面配置。
在这里插入图片描述

FILEBATE安装

下载完成后解压对应的zip包,在当前文件夹下输入cmd跳转到命令台,分别输入filebeat.exe setupfilebeat.exe -e -c filebeat.yml即可,其实只输入第二个命令即可启动,第一个命令作用如下,首次时间较久:
在这里插入图片描述

特此说明

百思不得其解,在设置out为es时,执行filebeat.exe setup一直报错,按照网上方式各种配置,换版本8.11.4等皆没用,最后我感觉按照个人理解,该命令只能在输出到es时才能使用,会初始化看板和索引这些,如果输出到logstash执行该命令,会一直报错Exiting: index management requested but the Elasticsearch output is not configured/enabled,然后百度说什么配置

setup.ilm:enabled: falseoverwrite: true  # 强制覆盖任何默认 ILM 设置
setup.template.enabled: false
setup.dashboards.enabled: false  # 如果不需要 Kibana 仪表板

并没有任何作用,直接不执行该命令,执行filebeat.exe -e -c filebeat.yml
启动filebeat就行,个人理解,不知道是不是对的。

filebeat.exe setup作用解释

Index setup finished

在这个步骤中,它将创建一个 index template,并创建好相应的 index pattern。我们可以在 Kibana 中看到如下的一个新的 index pattern 被创建,所有的 filebeat 导入的文件将会自动被这个 index pattern 所访问。
在这里插入图片描述
在这里插入图片描述

配置管理

V9版本的filebeat.inputs.types属性应该有了变更,要用filestream不能用log,或许是我没弄明白,用log是启动不了的,会报错误文件找不到。
type: filestream,指定输入类型为 filestream,表示监控文件内容的变化(实时读取追加的内容,适合日志或持续更新的文件)
id,唯一标识符,用于区分多个输入配置。在日志或监控中可通过此 ID 追踪数据来源。
enabled,是否启用此输入配置。true 表示启用,false 表示禁用(如你最初的配置)。
paths,指定要监控的文件路径,支持通配符(如 *.csv)。注意:路径需用引号包裹(尤其含中文或空格时)。建议使用绝对路径。跨平台路径建议用 /(Windows 也支持)。