当前位置:   article > 正文

【ElasticSearch 8 边学边教】02. ElasticSearch 8 的数据可视化-Kibana篇_elasticsearch可视化

elasticsearch可视化


前言

第一篇讲了怎么部署ElasticSearch,这一篇就讲怎么去可视化操作ElasticSearch,这里用的可视化工具就是官方的Kibana


一、安装 Kibana

虽然笔者在CentOS 7 上部署了 ElasticSearch,但是因为是在虚拟机上,实在是不方便,所以这次笔者尝试在宿主机上部署kibana
(差别应该不大)。根据官网,找到了Windows下对应的Kibana 8.2压缩包(读者直接点这个下就完事了,官网链接,中国人不骗中国人)。
然后解压,你会发现目录是这样的(目录作用我已经在下面备注好了):

drwxr-xr-x 1 Andrew 197121       0  420 11:00 bin/ (可执行的bat文件)
drwxr-xr-x 1 Andrew 197121       0  420 10:59 config/ (配置文件)
drwxr-xr-x 1 Andrew 197121       0  517 16:22 data/ (数据文件)
-rw-r--r-- 1 Andrew 197121    3860  420 10:59 LICENSE.txt (许可证相关信息)
drwxr-xr-x 1 Andrew 197121       0  420 10:59 logs/ (日志文件)
drwxr-xr-x 1 Andrew 197121       0  420 10:59 node/ (节点文件)
drwxr-xr-x 1 Andrew 197121       0  420 10:59 node_modules/ (节点模块文件)
-rw-r--r-- 1 Andrew 197121 1126120  420 10:59 NOTICE.txt 
-rw-r--r-- 1 Andrew 197121     738  420 10:59 package.json (应该是json化的包信息)
drwxr-xr-x 1 Andrew 197121       0  420 10:59 plugins/ (插件)
-rw-r--r-- 1 Andrew 197121    3966  420 10:59 README.txt (没什么用的README.txt,我看了,第一次配置的时候作用不太大)
drwxr-xr-x 1 Andrew 197121       0  420 10:59 src/ (这个是js源文件)
drwxr-xr-x 1 Andrew 197121       0  420 10:59 x-pack/ (猜测是名为 x-pack 某个特殊功能的lib目录)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

二、启动 Kibana

1. cmd 启动 Kibana

打开 cmd,cd 到解压文件夹的目录,进入 bin 目录, 执行如下命令

E:\Server\kibana-8.2.0\bin>kibana.bat
  • 1

(其实在 windows 下直接双击就好了)
输入之后得等一段时间,开始的时候我以为是假死,到最后还是会有输出的
输出内容如下:

[2022-05-17T16:22:18.697+08:00][INFO ][plugins-service] Plugin "cloudSecurityPosture" is disabled.
[2022-05-17T16:22:18.712+08:00][INFO ][plugins-service] Plugin "metricsEntities" is disabled.
[2022-05-17T16:22:18.774+08:00][INFO ][http.server.Preboot] http server running at http://localhost:5601
[2022-05-17T16:22:18.810+08:00][INFO ][plugins-system.preboot] Setting up [1] plugins: [interactiveSetup]
[2022-05-17T16:22:18.814+08:00][INFO ][preboot] "interactiveSetup" plugin is holding setup: Validating Elasticsearch connection configuration…
[2022-05-17T16:22:18.851+08:00][INFO ][root] Holding setup until preboot stage is completed.


i Kibana has not been configured.

Go to http://localhost:5601/?code=393240 to get started.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

千万不要手贱关掉cmd窗口

2. 校验是否运行

打开上面输出信息中的那个链接 - http://localhost:5601
他就会弹出这个界面
开始配置Elastic

3. 可视化配置 Kibana

这个地方我其实是愣了下,虽然前文提到过有 Enrollment token,但我又翻了下官网文档,通过 Enrollment token 配置看起来有些复杂,所以我就点了 Configure manually(手动配置),然后就出现这个在这里插入图片描述
这个时候,因为在 CentOS 7 中,防火墙默认开启, 9200端口是没有权限访问的。

如果遇到无法访问的情况下,你需要检查防火墙是否开放了这个端口,执行以下命令

firewall-cmd --list-all
  • 1

然后可以看到以下信息

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: dhcpv6-client ssh
  ports: 6379/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

如果 ports 没有9200,那么执行如下命令

firewall-cmd --permanent --add-port=9200/tcp && firewall-cmd --reload
  • 1

连续输出success后,那么就可以访问9200了。

填好上面的地址,点击 Check Address,如果 ElasticSearch 可以访问的话,那么就会出现如下界面
在这里插入图片描述
到这个地方我卡住了,开始以为这个地方是直接创建用户的,但是发现随便输入一个密码,发现报错了
(tail -20f /var/log/elasticsearch/elasticsearch.log)

closing connection Netty4HttpChannel{localAddress=/192.168.31.30:9200, remoteAddress=/192.168.31.10:9524}
io.netty.handler.codec.DecoderException: javax.net.ssl.SSLHandshakeException: Received fatal alert: unknown_ca
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:480) ~[netty-codec-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:279) ~[netty-codec-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [netty-transport-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [netty-transport-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) [netty-transport-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:722) [netty-transport-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:623) [netty-transport-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:586) [netty-transport-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) [netty-transport-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [netty-common-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.74.Final.jar:4.1.74.Final]
	at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: unknown_ca
	at sun.security.ssl.Alert.createSSLException(Alert.java:131) ~[?:?]
	at sun.security.ssl.Alert.createSSLException(Alert.java:117) ~[?:?]
	at sun.security.ssl.TransportContext.fatal(TransportContext.java:358) ~[?:?]
	at sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:293) ~[?:?]
	at sun.security.ssl.TransportContext.dispatch(TransportContext.java:204) ~[?:?]
	at sun.security.ssl.SSLTransport.decode(SSLTransport.java:172) ~[?:?]
	at sun.security.ssl.SSLEngineImpl.decode(SSLEngineImpl.java:736) ~[?:?]
	at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:691) ~[?:?]
	at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:506) ~[?:?]
	at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:482) ~[?:?]
	at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:679) ~[?:?]
	at io.netty.handler.ssl.SslHandler$SslEngineType$3.unwrap(SslHandler.java:295) ~[netty-handler-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1342) ~[netty-handler-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1235) ~[netty-handler-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1284) ~[netty-handler-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:510) ~[netty-codec-4.1.74.Final.jar:4.1.74.Final]
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:449) ~[netty-codec-4.1.74.Final.jar:4.1.74.Final]
	... 16 more
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

想了下,这个账户应该是通过 ElasticsSearch 的工具生成的,之前没有生成过,所以是无法访问 ElasticSearch 的。
这个时候,我回去看了自己写的第一篇文章,找到安装完成后有个命令

Generate an enrollment token for Kibana instances with
(用以下命令生成 Kibana 的注册 token)
'/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana'.
  • 1
  • 2
  • 3

此时我马上去执行这个命令,接着它生成了token字符串,接着回到 http://localhost:5601 的首页,填入生成好的token
在这里插入图片描述
点击 Configure Elastic 后,弹出
在这里插入图片描述
这个时候回到 kibana.bat 的命令窗口,发现输出

[2022-05-17T16:27:51.653+08:00][ERROR][plugins.interactiveSetup.elasticsearch] Unable to connect to host "https://localhost:9200": connect ECONNREFUSED 127.0.0.1:9200
[2022-05-17T16:30:18.332+08:00][ERROR][plugins.interactiveSetup.elasticsearch] Unable to connect to host "https://192.168.31.30:9200": connect ETIMEDOUT 192.168.31.30:9200
[2022-05-17T17:03:23.943+08:00][ERROR][plugins.interactiveSetup.elasticsearch] Failed to authenticate with host "https://192.168.31.30:9200": ""
[2022-05-17T17:20:51.152+08:00][ERROR][plugins.interactiveSetup.elasticsearch] Failed to authenticate with host "https://192.168.31.30:9200": ""


Your verification code is:  xxx xxx(我改了)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

直接输入 verification code,页面会自动配置
在这里插入图片描述
配置好之后,就会提示输入账号密码(忘记截图), 填入 elastic/<你的密码> 后,会提示
在这里插入图片描述
这个时候点击 Explore on my own,就可以进入主页

在这里插入图片描述随便点点,摸索下功能就好了,不过可惜是英文,所以需要时间进行摸索,这里就不再展开了

4. 汉化 Kibana

在目录中的 config/kibana.yml 中,我发现刚刚的配置都被写入了这个文件了,内容如下(敏感内容打了码):
在这里插入图片描述同时也发现了 kibana 是可以修改显示语言的,找到配置文件的 134 -136 行

# Specifies locale to be used for all localizable strings, dates and number formats.
# Supported languages are the following: English (default) "en", Chinese "zh-CN", Japanese "ja-JP", French "fr-FR".
# i18n.locale: "en"
  • 1
  • 2
  • 3

根据提示,把值修改为 zh-CN,解开注释,重启服务,就能完成汉化了,如果还有英文,尝试重新刷新或清下缓存就好了,这里我就不截图了。

总结

这篇文章完整展示了怎么安装以及启动 kibana,以及登录到 ElasticSearch,虽然中途踩了一下坑,不过还好到后面还是完成了
(由于文章是边操作边写的,我也是首次操作,所以把完整的心路历程也给写出来了)。

预告

下篇文章我会简单试玩下kibana,或者下篇文章也有可能是这个系列的番外篇

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/501595
推荐阅读
相关标签
  

闽ICP备14008679号