步骤/详情
一:下载
注意的是下载版本为免安装版。下载地址:
https://www.elastic.co/cn/downloads/elasticsearch
笔者由于当前用的是JDK8选择的是 7.0.0-alpha2 版本。
为最后一个不内嵌JDK的版本(包大小为140M+), 后面的版本内嵌JDK11+了
- 推荐高版本直接上JDK17+
二: 安装ES服务
Window版的ElasticSearch的安装很简单,类似Window版的Tomcat,解压开即安装完毕,解压后的ElasticSearch的目录结构如下:
修改elasticsearch配置文件,config/elasticsearch.yml文件,增加文件内容如下:
# 开启跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
# 关闭安全校验 (生产外网环境建议设置账号密码并且开启该选项)
xpack.security.enabled: false
添加配置是为了允许elasticsearch跨域访问,如果不配置,后面有可能elasticsearch-head是可以不修改,直接启动;
2.1 elasticsearch 7.0.0 系列版本以上添加配置
在elasticsearch7.x之后的版本, 已经集成了自带的jdk, 在根目录下的jdk文件夹中 这里需要修改elasticsearch-env.bat启动文件的配置内容, 设置系统使用elasticsearch自带的jdk版本 在bin/elasticsearch-env.bat文件中找到关于JAVA_HOME的配置, 注释掉if…else判断的东西,
把下面的代码
if defined ES_JAVA_HOME (
set JAVA="%ES_JAVA_HOME%\bin\java.exe"
set JAVA_TYPE=ES_JAVA_HOME
) else if defined JAVA_HOME (
rem fallback to JAVA_HOME
echo "warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME" >&2
set JAVA="%JAVA_HOME%\bin\java.exe"
set "ES_JAVA_HOME=%JAVA_HOME%"
set JAVA_TYPE=JAVA_HOME
) else (
rem use the bundled JDK (default)
set JAVA="%ES_HOME%\jdk\bin\java.exe"
set "ES_JAVA_HOME=%ES_HOME%\jdk"
set JAVA_TYPE=bundled JDK
)
改为:
set JAVA="%ES_HOME%\jdk\bin\java.exe"
set JAVA_HOME="%ES_HOME%\jdk"
set JAVA_TYPE=bundled jdk
2.2 修改yml文件 外网可以访问
conf/elasticsearch.yml 修改network.host为:
# 设置节点名称
node.name: node-1
#设置ip地址,使任意网络均可访问
network.host: 0.0.0.0
#放开端口号
http.port: 9200
# 启动时初始化的参与选主的节点
cluster.initial_master_nodes: ["node-1"]
# 开启跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
三:IK 中文分词器
下载解压之后放到elasticsearch/pluging目录下
3.1 IK 配置文件
- main.dic : IK 中内置的词典。 main dictionary。记录 了 IK 统计的所有中文单词。一行一词。文件中未记录的单词,IK 无法实现有效分词。
如:雨女无瓜。不建议修改当前文件中的单词。这个是最核心的中文单词库。就好像,很多的网络词不会收集到辞海中一样。
- quantifier.dic : IK 内置的数据单位词典suffix.dic :IK 内置的后缀词典surname.dic :IK 内置的姓氏词典stopword.dic :IK 内置的英文停用词
- preposition.dic :IK 内置的中文停用词(介词)
- IKAnalyzer.cfg.xml :
用于配置自定义词库的自定义词库是用户手工提供的特殊词典,类似网络热词,特定业务用词等。
- ext_dict:
自定义词库,配置方式为相对于IKAnalyzer.cfg.xml文件所在位置的相对路径寻址方式。相当于是用户自定义的一个main.dic文件。是对main.dic文件的扩展。
- ext_stopwords:
自定义停用词,配置方式为相对于IKAnalyzer.cfg.xml文件所在位置的相对路径寻址方式。相当于是preposition.dic的扩展。
注意:IK的所有的 dic词库文件,必须使用 UTF-8字符集。不建议使用 windows自带的文本编辑器编辑。Windows中自带的文本编辑器是使用 GBK字符集 。IK不识别,是乱码。
备注 IK分词器 查看方式
ik_max_word 和 ik_smart 方式的区别大致就是前者会进行更细粒度的拆分,后者更多的是尽可能的组成词汇短语
GET _analyze
{
"analyzer":"ik_max_word",
"text": "中华人名共和国"
}
GET _analyze
{
"analyzer":"ik_smart",
"text": "中华人名共和国"
}
四 : 启动ES服务
点击elasticsearch下的bin目录下的elasticsearch.bat启动:
注意:9300是tcp通讯端口,集群间和TCPClient都执行该端口,9200是http协议的RESTful接口;
通过浏览器访问elasticsearch服务器,启动成功后的内容如下:
- 注意事项:
1, elasticsearch是使用java开发的,且本版本的ES需要的jdk版本要是1.8以上 一定要严格注意JDK版本对应 7.0.1以及以上版本推荐使用JDK17;
2, 启动elasticsearch.bat时,如果一闪而过,修改配置如下:
Elasticsearch默认会配置2G的JVM堆的初始值和最大值,该jvm参数被配置在/config/jvm.options里,可以将JVM参数改小:
-Xms512M
-Xmx512M
五:安装Kibana
1、到官网下载Kibana:Download Kibana Free | Get Started Now | Elastic 。
2、解压并修改配置文件。
修改“elasticsearch.hosts”属性并保存文件:
# 外网可以访问
server.host: "0.0.0.0"
# 如果ES没有kibana索引则创建索引
kibana.index: ".kibana"
elasticsearch.hosts: ['http://远程服务器ip:9200']
# 设置kibana为中文
i18n.locale: "zh-CN"
3、运行 kibana.bat。
Ready状态即为成功。
4、打开 http://localhost:5601/app/kibana#/ ,页面成功加载。
- 注意: 关于Kibana 设置中文不生效问题
修改i18n.locale: "zh-CN"参数的人都忽略了一个事实
中文版本仅限于包含x-pack的版本,因为kibana的中文包就放在
/home/kibana-7.1.1-linux-x86_64/node_modules/x-pack/plugins/translations/translations这个路径下
六:安装Logstash
解压并设置默认配置
- 设置外网访问
在 logstash-7.0.0\config\logstash.yml文集添加以下配置
# 开启外网访问
http.host: 0.0.0.0
- 进入bin目录,新建文件logstash_default.conf
input {
# Filebeat 默认端口号5044 如果使用Filebeat 可以放开这段注释
beats {
port => "5044"
}
stdin{}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "logstash-console-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
stdout{}
}
- 在bin目录,新文件文件run_default.bat
logstash -f logstash_default.conf
- 运行启动logstash
点击run_default.bat,启动logstash,浏览器访问 http://localhost:9600/,表示启动成功。
- kibana可以看到logstash创建的索引了
- 记得使用新生命周期策略(关闭滚动更新)
kibana 创建索引查看可以获取到相关信息了
七:🧩安装Filebeat
官方资源地址 下载并且解压
# 查看filebeat支持哪些模块
./filebeat modules list
# 开启支持模块(nginx/ mysql)
./filebeat modules enable system nginx mysql
7.1 相关配置
- 放开logstash 的关于filebeat 5044端口
- 相关配置打开主目录下面 filebeat.yml文件
filebeat.inputs:
##类型,默认的log即可
- type: log
##默认是false,不启用设置,这里设置好的一定要改成true,否则不生效
enabled: true
paths:
##日志路径,绝对路径,可以使用*来做通配,但是我并没有这么做,日志索引的信息我是定期删除的,这个也要考虑一下你的日志滚动设置
- /var/log/nginx/access.log
##这个是为我们采集的每条日志信息增加一个标签一样的东西,来进行标识,为啥是这个,我不知道,反正大家都这么写的,哈哈
- fields:
index: nginx-access
- type: log
enabled: true
paths:
- /var/log/nginx/error.log
fields:
index: nginx-error
# ---------------------------- Elasticsearch Output ----------------------------
##这个是默认开启的,我们要把采集的日志送到logstash中,所以要关闭这个,当前配置只允许开启一个output设置,不能双开
#output.elasticsearch:
##这个也注释上
#hosts: ["localhost:9200"]
# ------------------------------ Logstash Output -------------------------------
##默认关闭的,我们使用logstash进行配置,所以去掉注释打开
output.logstash:
##地址要填写logstash得到主机IP地址,端口号默认是5044,但其实它是在logstash主机下的 /etc/logstash/conf.d/logstash.conf 中设置的
hosts: ["127.0.0.1:5044"]
之后将output 的输出索引名称进行更新
output {
elasticsearch {
hosts => ["http://localhost:9200"]
##格式这里,[fields] 和 [index] 分别对应 filebeat 中对日志文件设置的“标签”
index => "%{[fields][index]}-%{[@metadata][beat]}-%{+YYYY.MM.dd}"
user => "elastic"
password => "elastic"
}
}
- 在主目录启动 filebeat
./filebeat -e -c filebeat.yml
然后可以手动修改error.log 文件 去kibana的索引管理以及 Analytics --> Discover 中查看日志数据:
发现索引已经创建成功,然后可以创建该索引的索引默认进行面板查看了
八:🧩安装 Metricbeat
ES的性能监控指标,可以在kibana面板查看ES节点的资源使用情况, ES资源不足时候性能回下降比较严重。
8.1 下载并安装 Metricbeat
- 从下载页面下载Metricbeat Windows zip 文件。
- 将该 zip 文件的内容解压缩到 C:\Program Files
- .将 metricbeat-7.17.5-windows 目录重命名为 Metricbeat。
- 以管理员身份打开 PowerShell 提示符(右键单击 PowerShell 图标,然后选择以管理员身份运行)。如果运行的是 Windows XP,则可能需要下载并安装 PowerShell。
- 从 PowerShell 提示符处,运行以下命令以将 Metricbeat 安装为 Windows 服务。
如果系统上禁用了脚本执行,则需要为当前会话设置执行策略,以允许脚本运行,例如: PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-metricbeat.ps1
cd "C:\Program Files\Metricbeat"
.\install-service-metricbeat.ps1
8.2 编辑配置
修改 C:\Program Files\Metricbeat\metricbeat.yml 以设置连接信息:
# ES 地址
output.elasticsearch:
hosts: ["<es_url>"]
username: "elastic"
password: "<password>"
# kibana 地址
setup.kibana:
host: "<kibana_url>"
# 加载默认模板
setup.dashboards.enabled: true
8.3 启用和配置 elasticsearch 模块
.\metricbeat.exe modules enable elasticsearch
# system 这个模块
.\metricbeat.exe modules enable system
在 modules.d/elasticsearch.yml 文件中修改设置。
8.4 启动 Metricbeat
setup 命令加载 Kibana 仪表板。如果仪表板已设置,请省略此命令。\
.\metricbeat.exe setup
Start-Service metricbeat
# 开启面板命令
.\metricbeat.exe setup --dashboards
执行完成后,可以在计算机-管理-服务中看到metricbeat服务是启动状态,在kibana可视化中可以看到Windows主机信息了。
8.5 模块状态
确认从 Metricbeat elasticsearch 模块收到索引数据
8.6 堆栈检测添加监控
恭喜完成安装!!!
参考资料 & 致谢
[1] warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME
[2] kibana中文支持不生效
[3] ELK7.11.2版本安装部署及ElastAlert告警相关配置