手摸手 Elastic Stack 使用教程 - 环境安装

手摸手 Elastic Stack 使用教程 - 环境安装

前言

在日常的开发中,会涉及到对一些中间件以及基础组件的使用,日志汇总分析、APM 监控、接口的健康检查、站内搜索,以及对于服务器、nginx、iis 等等的监控,最近的几个需求点,都和 Elastic Stack 有着很大的联系,有些需求可能使用 Elastic Stack 并不会是最优的方案,本着减少后期运维风险的原则,所以这里选择了统一

因此自己之前也没接触过,所以私底下就自己捯饬捯饬,看看如何使用,毕竟,技多不压身,当然,能够使用的前提是有环境支持,所以第一步需要在本地安装上 Elastic Stack

Step by Step

介绍&准备

Elastic Stack,主要包含了 Elasticsearch(数据存储)和 Kibana(可视化管理)以及一系列的插件,插件最终实现的也是将各种指标、日志、数据抽取到 elasticsearch 中,通过 kibana 进行可视化的展示、数据分析

作为整个技术栈的基础,所以首先需要安装的就是 elasticsearch 和 kibana

虽然也可以安装在 windows 上,但是本着不给自己找事的原则,以及出了问题好寻找解决方案,这里选择将 Elastic Stack 安装到 CentOS 7.6 上

因为我是使用的 RPM 进行安装的,由于某些原因,官网提供的组件包下载地址,如果没有特殊手段的话,可能会下载到地老天荒,因此这里可以使用国内的镜像地址进行下载,我是使用的清华的镜像进行下载的(链接直达),你可以依据自己的喜好来选择镜像地址

镜像地址

下载组件包

登录服务器,通过 wget 命令下载 elasticsearch 和 kibana or 直接在本地下载好然后再丢到服务器上,这里需要注意,确保 elasticsearch、kibana 以及后续使用的各个插件的版本一定要保持一致,不然的话可能会存在一些莫名其妙的问题

1
2
3
4
5
-- 下载 elasticsearch
wget https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-7.x/7.9.0/elasticsearch-7.9.0-x86_64.rpm

-- 下载 kibana
wget https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-7.x/7.9.0/kibana-7.9.0-x86_64.rpm

组件下载

安装与配置

配置 elasticsearch

当组件下载完成后,就可以开始程序的安装,因为我是使用的 RPM 包,所以这里可以直接通过 rpm 命令完成 elasticsearch 的安装

1
sudo rpm --install elasticsearch-7.9.0-x86_64.rpm

安装完成

当命令执行完成后,可以看到,控制台已经很清楚的提醒我们,通过 systemctl 指令就可以完成对于 elasticsearch 服务的管理

1
2
3
4
5
6
-- 设置开机自启
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service

-- 启动 elasticsearch 服务
sudo systemctl start elasticsearch.service

启动 elasticsearch

启动之后,可以在服务器上通过 curl 127.0.0.1:9200 来验证我们的 elasticsearch 是否已经安装成功,如果可以显示出服务的相关信息,则代表 elasticsearch 已经安装成功了

与 mysql、mongodb 相同,默认情况下,elasticsearch 是不允许远程访问服务的,但是,鉴于实际的使用情况,这里需要修改配置文件,从而允许远程访问服务器上的 elasticsearch 服务

首先,通过 whereis elasticsearch 命令查找程序的安装路径,这里会有两个路径,通过查阅官方文档可以得知,/etc/elasticsearch 是配置文件所在的路径,而 /usr/share/elasticsearch 则是 elasticsearch 的运行路径所在

切换到 /etc/elasticsearch 目录下,打开 elasticsearch.yml 文件,找到 Network 节点,调整如下的配置,从而允许远程访问服务。PS,因为配置文件是 yml 文件,所以这里的对于内容格式有着很严格的要求,一定不能忘记 : 后面的空格

1
network.host: 0.0.0.0

允许远程访问

当配置文件被修改后,需要重新启动 elasticsearch 服务,通过 systemctl 命令来重启服务,不出意外的话,你会发现服务启动不起来 :smirk:

1
2
-- 重启 elasticsearch 服务
systemctl restart elasticsearch.service

这里我们可以通过 systemctl status 来查看服务无法正常启动的原因

1
systemctl status elasticsearch.service -l

重启失败

在控制台打印的信息中,我们重点关注错误信息中的这句话,可以看到,我们需要针对 elasticsearch 进行节点的相关配置,因为这里采用的只是单机单节点,并不会搭建集群,因此,重新打开 elasticsearch.yml 文件,修改如下的配置项即可

the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

1
2
3
4
5
6
7
8
# 设置集群名称
cluster.name: elastic-cluster

# 设置节点名称
node.name: node-mater

# 默认初始化的节点名称
cluster.initial_master_nodes: ["node-mater"]

当然,你也可以直接修改配置文件,指明当前的 elasticsearch 服务以单节点的形式运行,不过,不推荐这种方式

1
discovery.type: single-node

保存对于配置文件的修改,重新执行启动服务的命令,可以看到服务已经启动以来了,当然,此时如果你想要通过远程访问该服务的话,还请确保服务器的防火墙有开放 9200 端口,此时再通过浏览器访问即可打开如下的页面

1
2
3
4
5
-- 永久开放 9200 端口
sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent

-- 重启防火墙
firewall-cmd --reload

远程访问 elasticsearch 服务

安装 kibana

与安装 elasticsearch 时相似,回到文件所在的路径,通过 rpm 命令,就可以完成 kibana 的安装,之后就可以通过 systemctl 来控制 kibana 的启动

1
2
3
4
5
6
7
8
9
10
11
12
-- 回到用户的根目录
cd ~

-- 安装 kibana
sudo rpm --install kibana-7.9.0-x86_64.rpm

-- 设置开机自启
sudo systemctl daemon-reload
sudo systemctl enable kibana.service

-- 启动 elasticsearch 服务
sudo systemctl start kibana.service

安装 kibana

因为 kibana 是对 elasticsearch 中的数据进行可视化管理的,所以这里需要修改 kibana 的配置文件来完成与 elasticsearch 的串接,与 elasticsearch 配置文件所在的路径相似,kibana 的配置文件位于 /etc/kibana 路径下,找到 kibana.yml 文件,需要调整的配置项如下

1
2
3
4
5
6
7
8
9
10
11
## 允许远程访问
server.host: "0.0.0.0"

## 设置服务的名称
server.name: "elastic-kibana"

## 设置需要连接的 elasticsearch 服务地址
elasticsearch.hosts: ["localhost:9200"]

## 设置页面通过中文显示
i18n.locale: "zh-CN"

当然,别忘了开放服务器的 5601 端口,从而允许远程访问

1
2
3
4
5
-- 永久开放 5601 端口
sudo firewall-cmd --zone=public --add-port=5601/tcp --permanent

-- 重启防火墙
firewall-cmd --reload

访问 kibana

在重新启动 kibana 之后,如果你立刻通过浏览器访问可能会提示下面的内容,嗯,请坐和放宽,等一会,多刷新几次就可以了,如果一直出现下面这个提示,可通过 systemctl status 命令来查看具体是 elasticsearch or kibana 出问题了,毕竟就这两个服务 :smile:

Kibana server is not ready yet

之前在我的云服务器上安装时,当 kibana 安装启动之后,一直报这个错误,最终发现是 elasticsearch 一直启动不起来,看了看错误信息,结果发现是 elasticsearch 所使用的 jvm 内存不够了,嗯,1 核 2G 内存的主机,如果你也遇到这样的问题,这个时候你可以修改 /etc/elasticsearch 路径下的 jvm.options 文件,来调整 elasticsearch 的 jvm 虚拟机配置,之后重启就可以了

至此,就完成了 elasticsearch 和 kibana 的安装,后续也就可以基于 elasticsearch 来实现一些功能。另,对于权限相关的管控以及如何基于实际的需求来实现一些功能,则在后面不定期的文章中进行体现

注意

公网直接开放 9200 端口、5601 端口很危险,请谨慎操作,谨慎操作!!!

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×