项目中准备使用ElasticSearch,之前只是对ElasticSearch有过简单的了解没有系统的学习,本系列文章将从基础的学习再到深入的使用。

咔咔之前写了一份死磕MySQL文章,如今再入一个系列玩转ElasticSearch。

本期文章会带给大家安装ElasticSearch、Kibana、Logstash、配置ElasticSearch外网可访问、配置守护进程启动Kibana、ElasticSearch、使用Logstash导入演示数据到ElasticSearch中。


ElasticSearch安装

一、安装ElasticSearch

从0开始搭建一个ElasticSearch环境,接下来先安装。

ElasticSearch官网在一直改版,有很多小伙伴找不到下载位置。

进去之后点击圈起来的位置,不要点击左边直接下载了

进去之后可以看到发布的历史版本,根据自己的需求下载对应的版本即可,这里咔咔下载的是7.1.0版本

如果你是Linux,可以打开开发者模式,把地址复制出来,使用wget + 地址 直接下载即可。

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.0-linux-x86_64.tar.gz

可以看到此时已将ElasticSearch下载下来了,这是已经解压好的

到了这一步不要冲动直接就去启动,ElasticSearch从5.x版本开始为了安全起见,不能直接使用root用户启用。

添加用户

执行useradd es,添加es用户

在root用户下把ElasticSearch用户权限给es用户即可

chown -R es ElasticSearch

启动ElasticSearch

切到es用户后,执行执行./bin/elasticsearch即可启动ElasticSearch

启动出现初始化密钥库问题

Exception in thread "main" org.elasticsearch.bootstrap.BootstrapException: java.nio.file.AccessDeniedException: /usr/local/elasticsearch/elasticsearch-6.6.0/config/elasticsearch.keystore
Likely root cause: java.nio.file.AccessDeniedException: /usr/local/elasticsearch/elasticsearch-7.1.0/config/elasticsearch.keystore
 at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
 at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
 at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
 at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
 at java.nio.file.Files.newByteChannel(Files.java:361)
 at java.nio.file.Files.newByteChannel(Files.java:407)
 at org.apache.lucene.store.SimpleFSDirectory.openInput(SimpleFSDirectory.java:77)
 at org.elasticsearch.common.settings.KeyStoreWrapper.load(KeyStoreWrapper.java:206)
 at org.elasticsearch.bootstrap.Bootstrap.loadSecureSettings(Bootstrap.java:224)
 at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:289)
 at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)
 at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)
 at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
 at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
 at org.elasticsearch.cli.Command.main(Command.java:90)
 at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115)
 at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
Refer to the log for complete error details.

这个版本需要进行安全认证功能需要创建elasticsearch.keystore这个文件所以输入下面的命令

./bin/elasticsearch-keystore create

查看是否启动成功

在浏览器访问127.0.0.1::9200看到如下界面就说明已经安装成功了

这里咔咔是安装在centos虚拟机上的,那么如果用外网可以访问到ElasticSearch呢!

二、配置外网访问

配置外网访问的步骤也很简单,跟着步骤走三分钟搭建好

问题一

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

编辑 /etc/security/limits.conf,追加以下内容

es soft nofile 65536

es hard nofile 65536

问题二

max number of threads [3782] for user [es] is too low, increase to at least [4096]

意思是elasticsearch最大线程数目太低

修改 /etc/security/limits.conf

在文件末尾增加以下两行:

es soft nproc 4096

es hard nproc 4096

问题三

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

/etc/sysctl.conf文件最后添加一行

vm.max_map_count=262144

问题四

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

意思是配置以下三者,最少其一

#[discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes]

在elasticsearch的config目录下,修改elasticsearch.yml配置文件

node.name: node-1
cluster.initial_master_nodes: ["node-1"]
network.host: 0.0.0.0

问题五

以上操作都执行完了,但外网还访问不了,需要看一下防火墙是否关闭

# 关闭防火强
systemctl stop firewalld.service

# 设置永久关闭
systemctl disable firewalld.service

这里需要注意一点,问题一和二修改完成后需要重启机器,切记、切记、切记

外网访问ElasticSearch

可以看到虚拟机的ip是http://192.168.253.129/

接下来试着在宿主机上访问虚拟机ip+端口9200看是否可以访问

三、安装Kibana

下载方式跟ElasticSearch一样,学会怎么下载这些软件,这里需要注意一点下载的版本需要跟ElasticSearch版本一致。

https://artifacts.elastic.co/downloads/kibana/kibana-7.1.0-linux-x86_64.tar.gz

所以接下来需要安装Kibana7.1.0版本

配置Kibana参数

复制到文件最后即可

i18n.locale: "zh-CN"

server.host: "0.0.0.0"



elasticsearch.hosts: ["http://localhost:9200"]

启动Kibana

进到Kibana目录执行./bin/kibana即可

无法启动报错如下

[WARN ][o.e.c.c.ClusterFormationFailureHelper] [node-1] master not discovered or elected yet, an election requires a node with id [rEq_ExihQ927BnwBy3Iz7A], have discovered [] which is not a quorum; discovery will continue using [127.0.0.1:9300, 127.0.0.1:9301, 127.0.0.1:9302, 127.0.0.1:9303, 127.0.0.1:9304, [::1]:9300, [::1]:9301, [::1]:9302, [::1]:9303, [::1]:9304] from hosts providers and [{node-1}{DtZPMDK4S3qaSQF6mRhRqw}{lBAhaMvDTKmGkysihkwAqA}{192.168.122.130}{192.168.122.130:9300}{ml.machine_memory=1907744768, xpack.installed=true, ml.max_open_jobs=20}] from last-known cluster state; node term 412, last-accepted version 16 in term 1

解决方案:

查看ElasticSearch的data目录下有没有之前的节点数据

Kibana实例启动如何关闭

查看当前端口号执行netstat -anp | grep 5601,最后边就有进程ID,执行kill -9 进程ID即可

再重新启动即可。

如果把Kibana配置为中文

参数已经给到大家了,就是i18n.locale: "zh-CN"这个配置

进来后你会看到这个页面

点击工具手,就可以操作ElasticSearch数据了,还是非常nice的

四、Kibana界面快速浏览

进入软件后,可以看到加载数据集

进来之后可以看到三个样例数据,分别为日志、电商订单、航班数据

接着点击Dashboards就会看到刚添加的三组样本数据

接着看一个非常重要的工具dev Tools,这个工具再后期会大量的使用,用处就是帮助你在Kibana中可以很方便的执行一些ElasticSearch的命令

五、守护进程启动Kibana、ElasticSearch

在启动完ElasticSearch和Kibana后你会发现是直接在当前端口启动的,如果把这个终端关闭就会关闭。

接下来借助nohup来实现守护进程启动,注意不是nohup在网上很多的资料写的都是这个,不要被混淆了

安装nohup

当你执行nohup命令发现没有时,执行

yum install -y coreutils

一般情况下会安装在

/usr/bin/nohup

执行which nohup确认安装位置

将nohup命令配置为全局,使用最简单的方式,执行

#vi ~/.bash_profile 

# 添加这行代码
PATH=$PATH:$HOME/bin:/use/bin

export PATH

然后,保存,刷新生效

source ~/.bash_profile

最后,进行验证,出现版本信息则安装成功

nohup --version

启动Kibana

估计在网看了很多都是让直接执行nohup ./bin/kibana,虽然这样可以让Kibana启动起来,但会出现下图的错误,同时当你ctrl+c时Kibana也会关闭掉

需要把错误信息重定向到linux的空洞即可

nohup ./bin/kibana > /dev/null 2>&1 &

在这里插入图片描述

你会发现执行完后出来了一行数字,这个就是Kibana的进程ID,如果你忘记了可以执行

ps -ef | grep node

来查看,因为Kibana是node起的


在这里插入图片描述

启动ElasticSearch

跟启动Kibana同理,执行

nohup ./bin/elasticsearch > /dev/null 2>&1 &

在这里插入图片描述

六、安装Logstash并导入演示数据到ElasticSearch

下载地址

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.1.0.zip

演示数据是在movielens这个推荐系统中欧获取的,数据就不用大家下载了,需要演示数据的找咔咔即可

这类的数据分享不了,所以...

解压

unzip logstash-7.1.0.zip

启动logstash

./bin/logstash -f logstash.conf

直接执行肯定是不行的,你首先需要拿到演示数据,接着把logstash.conf、movies.csv文件放到logstash目录的第一层即可

下图圈起来的地方可以就是movies.csv的存放位置,把这个路径改成你的路径即可

然后当你再次执行启动logstash命令时,你会遇到第一个问题

logstash could not find java; set JAVA_HOME or ensure java is in PATH

首先你得确认你有没有安装java

# 验证是否安装
java -version

出现下图说明安装成功了,若未安装也不用着急,咔咔给你详细流程

安装java8

传送门

https://download.oracle.com/otn/java/jdk/8u311-b11/4d5417147a92418ea8b615e228bb6935/jdk-8u311-linux-x64.tar.gz

心急的你是不是直接wget就上手了,这是不行的,下载java8安装包需要点击一下确认,并且没有注册oracle的还下载不了,因此你先需要一个oracle账号。

先把压缩包下载到宿主机,然后使用神器scp命令传输文件,那是相当的快,这样就可以把下载的java包传输到服务器了。

scp jdk-8u311-linux-x64.tar.gz root:192.168.17.128:/

在/usr/local下创建java目录

cd /usr/local

mkdir java

移动java压缩包到/usr/local/java

mv jdk-8u311-linux-x64.tar.gz /usr/local/java/

解压

tar -zxf jdk-8u311-linux-x64.tar.gz jdk8

配置环境变量

vim /etc/profile

文件最后加上(如果你跟咔咔的目录一致,则可不用改动)

export JAVA_HOME=/usr/local/java/jdk8

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:/$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

刷新生效

source /etc/profile

最后验证即可

# 验证是否安装
java -version

再次执行./bin/logstash -f logstash.conf

依然会出现下图这个错误,但java环境属实已经加上了

来到vim /logstash-7.1.0/bin/logstash.lib.sh,你就会发现错误是从这里打出去的,原因是JAVACMD没有值

在这个文件里搜索了一下发现有很多,于是就直接在上边重新赋值即可,注意圈起来的地方

保存,退出,再次执行

./bin/logstash -f logstash.conf

终于大功告成,把数据导入到ElasticSearch中了

在Kibana中查看是否存在movies的索引

七、安装Cerebro

下载

wget https://github.com/lmenezes/cerebro/releases/download/v0.9.4/cerebro-0.9.4.tgz

解压

tar -zxf cerebro-0.9.4.tgz

修改配置文件,只需要打开host配置即可,ip地址写成自己的即可

hosts = [
  #{
  #  host = "http://192.168.17.128:9100"
  #  name = "Localhost cluster"
  #  headers-whitelist = [ "x-proxy-user", "x-proxy-roles", "X-Forwarded-For" ]
  #}
  # Example of host with authentication
  {
    host = "http://192.168.17.128:9200"
  #  name = "Secured Cluster"
    #auth = {
     # username = "admin"
     # password = "admin"
    #}
  }
]

启动

cd cerebro

./bin/cerebro

输入ip地址+9000端口即可


cerebro安装

八、总结

跟着本期文章大家可以成功的把ElasticSearch、Kibana成功安装并启动,ElasticSearch若要让外网可以访问还需要添加几个配置,跟着本期文章走都可以实现的。

简单了解Kibana的界面,后期大多数的演练都在Kibana上。

最后给大家聊了最感兴趣的守护进程启动ElasticSearch和Kibana,网上很多资料不全,执行起来还有问题,咔咔给你最全教程跟着操作即可。

死磕MySQL系列总目录

坚持学习、坚持写作、坚持分享是咔咔从业以来所秉持的信念。愿文章在偌大的互联网上能给你带来一点帮助,我是咔咔,下期见。

终结初学者对ElasticSearch、Kibana、Logstash安装的种种困难的更多相关文章

  1. Elasticsearch+Kibana+Logstash安装

    安装环境: [root@node- src]# cat /etc/redhat-release CentOS Linux release (Core) 安装之前关闭防火墙 firewalld 和 se ...

  2. elasticsearch+kibana+metricbeat安装部署方法

    elasticsearch+kibana+metricbeat安装部署方法 本文是elasticsearch + kibana + metricbeat,没有涉及到logstash部分.通过beat收 ...

  3. Docker安装部署ELK教程(Elasticsearch+Kibana+Logstash+Filebeat)

    Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash 是一个完全开 ...

  4. elasticsearch kibana logstash(ELK)的安装集成应用

    官网关于kibana的学习指导网址是:https://www.elastic.co/guide/en/kibana/current/index.html Kibana是一个开源的分析和可视化平台,设计 ...

  5. Elasticsearch,Kibana,Logstash,NLog实现ASP.NET Core 分布式日志系统

    Elasticsearch - 简介 Elasticsearch 作为核心的部分,是一个具有强大索引功能的文档存储库,并且可以通过 REST API 来搜索数据.它使用 Java 编写,基于 Apac ...

  6. 【ELK】【docker】【elasticsearch】2.使用elasticSearch+kibana+logstash+ik分词器+pinyin分词器+繁简体转化分词器 6.5.4 启动 ELK+logstash概念描述

    官网地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-cli-run-prod ...

  7. ELK(elasticsearch+kibana+logstash)搜索引擎(一): 环境搭建

    1.ELK简介 这里简单介绍一下elk架构中的各个组件,关于elk的详细介绍的请自行百度 Elasticsearch是个开源分布式搜索引擎,是整个ELK架构的核心 Logstash可以对数据进行收集. ...

  8. Elasticsearch + Kibana 简单安装使用

    1.资料来源官网,参考: https://www.elastic.co/cn/downloads/elasticsearch https://www.elastic.co/cn/downloads/k ...

  9. elasticsearch kibana的安装部署与简单使用(一)

    1.先说说es 我早两年使用过es5.x的版本,记得当时部署还是很麻烦,因为es是java写的,要先在机器上部署java环境jvm之类的一堆东西,然后才能安装es 但是现在我使用的是目前最新的7.6版 ...

随机推荐

  1. 【转载】Nginx简介及使用Nginx实现负载均衡的原理

    原文地址:http://blog.csdn.net/u014749862/article/details/50522276 是什么? Nginx 这个轻量级.高性能的 web server 主要可以干 ...

  2. 如何在 pyqt 中实现全局事件总线

    前言 在 Qt 中可以使用信号和槽机制很方便地实现部件之间的通信,考虑下面这样的场景: 我想要点击任意一个专辑卡并通知主界面跳转到专辑界面,那么一种实现方式如上图所示:点击任意一个蓝色方框所示的专辑卡 ...

  3. SQL代码规范

    1.  建表规约 1)   表中字段名称 a)    表达是否概念的字段,必须使用is_xxx的方式命名,数据类型是bit b)    小数类型为decimal,禁止使用float和double. 说 ...

  4. 3.k8s核心概念

    k8s的核心概念 一. Pod pod,中文翻译过来叫豆荚,如下图.我们都知道豆荚,一个豆荚里面有很多豆子.豆荚就可以理解为pod,一个个的豆子就可以理解为容器.pod和容器的关系是一个pod里面可以 ...

  5. Spring中的属性注入注解

    @Inject使用 JSR330规范实现的 默认按照类型注入 如果需要按照名称注入,@Inject需要和@Name一起使用 @Resource JSR250规范实现的,需要导入不同的包 @Resour ...

  6. 【摸鱼神器】基于SSM风格的Java源代码生成器 单表生成 一对一、一对多、多对多连接查询生成

    一.序言 UCode Cms 是一款Maven版的Java源代码生成器,是快速构建项目的利器.代码生成器模块属于可拆卸模块,即按需引入.代码生成器生成SSM(Spring.SpringBoot.Myb ...

  7. Nginx 配置apple-app-site-association

    ios突然给我发了如上链接和一个json,说他那边需要放一个 apple-app-site-association 文件用来支持他那边的功能,文件不需要后缀. 先说一下要求:线上官网的地址后面跟上他所 ...

  8. NSSCTF-[SWPU 2019]伟大的侦探

    下载附件得到一个压缩包,解压需要密码,但是得到一个"密码.txt"的文件,打开查看 根据菜狗的刷题经验,这是个EBCDIC的编码,打开010编辑器,打开"密码.txt&q ...

  9. Windows server 2012安装VM tools异常解决办法

    在VMWare虚拟机上安装Windows Server 2012之 后安装VMWare Tools时报如下错误信息: 问题:缺少KB2919355补丁 (先安装KB2919442,在安装KB29193 ...

  10. [题解]Codeforces Round #519 - B. Lost Array

    [题目] B. Lost Array [描述] Bajtek有一个数组x[0],x[1],...,x[k-1]但被搞丢了,但他知道另一个n+1长的数组a,有a[0]=0,对i=1,2,...,n.由此 ...