前言

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

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

Step by Step

2.1、介绍&准备

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

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

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

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

2.2、下载组件包

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

-- 下载 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

2.3、安装与配置

2.3.1、配置 elasticsearch

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

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

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

-- 设置开机自启
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service -- 启动 elasticsearch 服务
sudo systemctl start elasticsearch.service

启动之后,可以在服务器上通过 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 文件,所以这里的对于内容格式有着很严格的要求,一定不能忘记 : 后面的空格

network.host: 0.0.0.0

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

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

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

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

# 设置集群名称
cluster.name: elastic-cluster # 设置节点名称
node.name: node-mater # 默认初始化的节点名称
cluster.initial_master_nodes: ["node-mater"]

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

discovery.type: single-node

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

-- 永久开放 9200 端口
sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent -- 重启防火墙
firewall-cmd --reload

2.3.2、安装 kibana

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

-- 回到用户的根目录
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 是对 elasticsearch 中的数据进行可视化管理的,所以这里需要修改 kibana 的配置文件来完成与 elasticsearch 的串接,与 elasticsearch 配置文件所在的路径相似,kibana 的配置文件位于 /etc/kibana 路径下,找到 kibana.yml 文件,需要调整的配置项如下

## 允许远程访问
server.host: "0.0.0.0" ## 设置服务的名称
server.name: "elastic-kibana" ## 设置需要连接的 elasticsearch 服务地址
elasticsearch.hosts: ["localhost:9200"] ## 设置页面通过中文显示
i18n.locale: "zh-CN"

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

-- 永久开放 5601 端口
sudo firewall-cmd --zone=public --add-port=5601/tcp --permanent -- 重启防火墙
firewall-cmd --reload

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

Kibana server is not ready yet

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

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

2.4、注意

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

手摸手 Elastic Stack 使用教程 - 环境安装的更多相关文章

  1. 被一位读者赶超,手摸手 Docker 部署 ELK Stack

    被一位读者赶超,容器化部署 ELK Stack 你好,我是悟空. 被奇幻"催更" 最近有个读者,他叫"老王",外号"茴香豆泡酒",找我崔更 ...

  2. 原创 | 手摸手带您学会 Elasticsearch 单机、集群、插件安装(图文教程)

    欢迎关注笔者的公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注即免费无套路附送 100G 海量学习.面试资源哟!! 个人网站: https://www.exception.site/ ...

  3. YApi——手摸手,带你在Win10环境下安装YApi可视化接口管理平台

    手摸手,带你在Win10环境下安装YApi可视化接口管理平台 YApi YApi 是高效.易用.功能强大的 api 管理平台,旨在为开发.产品.测试人员提供更优雅的接口管理服务.可以帮助开发者轻松创建 ...

  4. 【转】手摸手,带你用vue撸后台 系列四(vueAdmin 一个极简的后台基础模板)

    前言 做这个 vueAdmin-template 的主要原因是: vue-element-admin 这个项目的初衷是一个vue的管理后台集成方案,把平时用到的一些组件或者经验分享给大家,同时它也在不 ...

  5. 【转】手摸手,带你用vue撸后台 系列一

    前言 说好的教程终于来了,第一篇文章主要来说一说在开始写业务代码前的一些准备工作吧,但这里不会教你webpack的基础配置,热更新怎么做,webpack速度优化等等,有需求的请自行google. 目录 ...

  6. 手摸手带你用Hexo撸博客(一)

    原文地址 手摸手带你用Hexo撸博客(一) 环境搭建 安装 node 狂点下一步 命令行输入此条命令 如果能看到版本号则安装成功 node -v 安装Git (同上) 实在不会的小伙伴百度一下,教程很 ...

  7. 【转】手摸手,带你用vue撸后台 系列二(登录权限篇)

    前言 拖更有点严重,过了半个月才写了第二篇教程.无奈自己是一个业务猿,每天被我司的产品虐的死去活来,之前又病了一下休息了几天,大家见谅. 进入正题,做后台项目区别于做其它的项目,权限验证与安全性是非常 ...

  8. 【转】手摸手,带你用vue撸后台 系列三(实战篇)

    前言 在前面两篇文章中已经把基础工作环境构建完成,也已经把后台核心的登录和权限完成了,现在手摸手,一起进入实操. Element 去年十月份开始用vue做管理后台的时候毫不犹豫的就选择了Elemen, ...

  9. 手摸手教你让Laravel开发Api更得心应手

    https://www.guaosi.com/2019/02/26/laravel-api-initialization-preparation/ 1. 起因 随着前后端完全分离,PHP也基本告别了v ...

随机推荐

  1. 2019 HL SC day2

    今天讲的是网络流 大部分题目都写过了 这里 就总结一番. bzoj 1066 裸的最大流 不过需要拆点细节方面有一点坑 剩下的 没什么了. //#include<bits/stdc++.h> ...

  2. windows:shellcode 远程线程hook/注入(一)

    https://www.cnblogs.com/theseventhson/p/13199381.html 上次分享了通过APC注入方式,让目标线程运行shellcode.这么做有个前提条件:目标线程 ...

  3. Javascript 创建对象的三种方式

    function createPerson(name, qq) //工厂方式 { //在工厂里创建个对象 var obj=new Object(); obj.name=name; obj.qq=qq; ...

  4. 33-关键字:interface

    interface:接口 1.使用说明: * 1.接口使用interface来定义 * 2.Java中,接口和类是并列的两个结构 * 3.如何定义接口:定义接口中的成员 * 3.1 JDK7及以前:只 ...

  5. 8月份Python招聘情况怎么样?Python爬取招聘数据,并进行分析

    前言 拉勾招聘是专业的互联网求职招聘平台.致力于提供真实可靠的互联网招聘求职找工作信息.今天我们一起使用 python 采集拉钩的 python 招聘信息,分析一下找到高薪工作需要掌握哪些技术 开发环 ...

  6. Spring 中的反射与反射的原理

    作者:DeppWang.原文地址 在造轮子:实现一个简易的 Spring IoC 容器一文中提到 Spring 在创建 Bean 实例和依赖注入时使用了反射,本文来具体分析一下 Spring 中的反射 ...

  7. 秦九韶算法 & 三分法

    前言 今天考试出了一个题 郭郭模拟退火骗了75分 于是再次把咕咕了好久的模退提上日程 如果进展顺利 明后天应该会开爬山算法和模退的博客笔记 今天先把今天考试的正解学习一下--三分法 引入 老规矩上板子 ...

  8. pageHelper使用时的注意点

    1 在pom.xml中导入相关的依赖(注意版本问题,报错十有八九是因为版本问题) <dependency> <groupId>com.github.pagehelper< ...

  9. 1、Java 开发环境配置

    Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境. Windows 上安装开发环境 Linux 上安装开发环境 安装 Eclipse 运行 Java window系统安装ja ...

  10. Idea + maven搭建SSM框架

    1.打开idea,新建项目,选择maven骨架,然后填写包名和项目名称,一直下一步. 接着下一步,配置项目的maven环境 创建完成之后,如下图:(上边的项目名字只是例子,具体的以自己搭建的项目名为准 ...