前言

在日常的开发中,会涉及到对一些中间件以及基础组件的使用,日志汇总分析、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. PHP get_html_translation_table() 函数

    实例 输出 htmlspecialchars 函数使用的翻译表: <?php高佣联盟 www.cgewang.comprint_r (get_html_translation_table()); ...

  2. 4.3 省选模拟赛 序列游戏 dp

    可以发现 某一段被删除后状态难以表示 也难以链接起来. 考虑暴力 有40分的状压dp 暴力存状态 然后枚举转移即可.最后注意和f[0]这个状态取max 不然一分都没有. const int MAXN= ...

  3. Qt自定义控件之仪表盘2--QPaint绘制仪表盘

    0.前言 前面一篇文章写道了仪表盘的特点,实现了一个贴图的仪表盘,属于低配版本的仪表盘.    主要是有任何改动时候就需要重新设计图片,不能适配不同控件大小,即使让它自由拉伸,但仪表盘放大缩小时候显示 ...

  4. 动态生成HTML元素-模拟在线考试功能

    前言 我们在项目开发过程中,经常会遇到页面html元素无法提前预设,而是通过某一些条件动态生成的情况,这里我们需要考虑如下几个因素: 1.需要动态创建的元素类型,比如TextBox, Radio, C ...

  5. Python面向对象编程扑克牌发牌程序,另含大量Python代码!

    1. 题目 编写程序, 4名牌手打牌,计算机随机将52张牌(不含大小鬼)发给4名牌手,在屏幕上显示每位牌手的牌. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不 ...

  6. java_内部类、匿名内部类的使用

    内部类 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类. 内部类的分类 成员内部类,类定义在了成员位置 (类中方法外称为成员位置) 局部内部类,类定义在方法内 成员内部类 ...

  7. Kubernetes Pod OOM 排查日记

    一.发现问题 在一次系统上线后,我们发现某几个节点在长时间运行后会出现内存持续飙升的问题,导致的结果就是Kubernetes集群的这个节点会把所在的Pod进行驱逐OOM:如果调度到同样问题的节点上,也 ...

  8. 百度小程序中swan.setPageInfo的用法

    现在百度智能小程序是百度最新的流量入口,现在很多做SEO优化.小程序开发的企业为了获取更多的流量不得不开发了,很多的技术人员不了解百度小程序的标题和关键词.描述等信息不知道在哪里设置. 以下是小编给你 ...

  9. 【Mysql】SpringBoot_2.1.0+Druid_1.1.10 配置数据源监控服务Yml格式

    访问地址:localhost:8080/druid 按照这个方法和版本配置没问题 版本或高或低可能会出现不兼容 1.添加依赖 <dependency> <groupId>com ...

  10. Markdown基本语法及生成目录结构的方法

    Markdown是一种纯文本格式的标记语言.通过简单的标记语法,它可以使普通文本内容具有一定的格式. 一.标题 在想要设置为标题的文字前面加#来表示一个#是一级标题,二个#是二级标题,以此类推.支持六 ...