关于elasticsearch:终结初学者对ElasticSearchKibanaLogstash安装的种种困难

85次阅读

共计 7702 个字符,预计需要花费 20 分钟才能阅读完成。

我的项目中筹备应用 ElasticSearch,之前只是对 ElasticSearch 有过简略的理解没有零碎的学习,本系列文章将从根底的学习再到深刻的应用。

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

本期文章会带给大家装置 ElasticSearch、Kibana、Logstash、配置 ElasticSearch 外网可拜访、配置守护过程启动 Kibana、ElasticSearch、应用 Logstash 导入演示数据到 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 端口即可

八、总结

跟着本期文章大家能够胜利的把 ElasticSearch、Kibana 胜利装置并启动,ElasticSearch 若要让外网能够拜访还须要增加几个配置,跟着本期文章走都能够实现的。

简略理解 Kibana 的界面,前期大多数的演练都在 Kibana 上。

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

死磕 MySQL 系列总目录

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

正文完
 0