赞
踩
第一篇讲了怎么部署ElasticSearch,这一篇就讲怎么去可视化操作ElasticSearch,这里用的可视化工具就是官方的Kibana
虽然笔者在CentOS 7 上部署了 ElasticSearch,但是因为是在虚拟机上,实在是不方便,所以这次笔者尝试在宿主机上部署kibana
(差别应该不大)。根据官网,找到了Windows下对应的Kibana 8.2压缩包(读者直接点这个下就完事了,官网链接,中国人不骗中国人)。
然后解压,你会发现目录是这样的(目录作用我已经在下面备注好了):
drwxr-xr-x 1 Andrew 197121 0 4月 20 11:00 bin/ (可执行的bat文件)
drwxr-xr-x 1 Andrew 197121 0 4月 20 10:59 config/ (配置文件)
drwxr-xr-x 1 Andrew 197121 0 5月 17 16:22 data/ (数据文件)
-rw-r--r-- 1 Andrew 197121 3860 4月 20 10:59 LICENSE.txt (许可证相关信息)
drwxr-xr-x 1 Andrew 197121 0 4月 20 10:59 logs/ (日志文件)
drwxr-xr-x 1 Andrew 197121 0 4月 20 10:59 node/ (节点文件)
drwxr-xr-x 1 Andrew 197121 0 4月 20 10:59 node_modules/ (节点模块文件)
-rw-r--r-- 1 Andrew 197121 1126120 4月 20 10:59 NOTICE.txt
-rw-r--r-- 1 Andrew 197121 738 4月 20 10:59 package.json (应该是json化的包信息)
drwxr-xr-x 1 Andrew 197121 0 4月 20 10:59 plugins/ (插件)
-rw-r--r-- 1 Andrew 197121 3966 4月 20 10:59 README.txt (没什么用的README.txt,我看了,第一次配置的时候作用不太大)
drwxr-xr-x 1 Andrew 197121 0 4月 20 10:59 src/ (这个是js源文件)
drwxr-xr-x 1 Andrew 197121 0 4月 20 10:59 x-pack/ (猜测是名为 x-pack 某个特殊功能的lib目录)
打开 cmd,cd 到解压文件夹的目录,进入 bin 目录, 执行如下命令
E:\Server\kibana-8.2.0\bin>kibana.bat
(其实在 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.
千万不要手贱关掉cmd窗口
打开上面输出信息中的那个链接 - http://localhost:5601
他就会弹出这个界面
这个地方我其实是愣了下,虽然前文提到过有 Enrollment token,但我又翻了下官网文档,通过 Enrollment token 配置看起来有些复杂,所以我就点了 Configure manually(手动配置),然后就出现这个
这个时候,因为在 CentOS 7 中,防火墙默认开启, 9200端口是没有权限访问的。
如果遇到无法访问的情况下,你需要检查防火墙是否开放了这个端口,执行以下命令
firewall-cmd --list-all
然后可以看到以下信息
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:
如果 ports 没有9200,那么执行如下命令
firewall-cmd --permanent --add-port=9200/tcp && firewall-cmd --reload
连续输出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
想了下,这个账户应该是通过 ElasticsSearch 的工具生成的,之前没有生成过,所以是无法访问 ElasticSearch 的。
这个时候,我回去看了自己写的第一篇文章,找到安装完成后有个命令
Generate an enrollment token for Kibana instances with
(用以下命令生成 Kibana 的注册 token)
'/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana'.
此时我马上去执行这个命令,接着它生成了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(我改了)
直接输入 verification code,页面会自动配置
配置好之后,就会提示输入账号密码(忘记截图), 填入 elastic/<你的密码> 后,会提示
这个时候点击 Explore on my own,就可以进入主页
随便点点,摸索下功能就好了,不过可惜是英文,所以需要时间进行摸索,这里就不再展开了
在目录中的 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"
根据提示,把值修改为 zh-CN
,解开注释,重启服务,就能完成汉化了,如果还有英文,尝试重新刷新或清下缓存就好了,这里我就不截图了。
这篇文章完整展示了怎么安装以及启动 kibana,以及登录到 ElasticSearch,虽然中途踩了一下坑,不过还好到后面还是完成了
(由于文章是边操作边写的,我也是首次操作,所以把完整的心路历程也给写出来了)。
下篇文章我会简单试玩下kibana,或者下篇文章也有可能是这个系列的番外篇
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。