引言
当数据存储到Elasticsearch后,我们希望能方便的通过界面进行查询,有两个工具能够满足我们的需要,一个是Elasticsearch-head插件,另一个是Kibana,笔者认为两个工具各有千秋,大家可以自行体会,不过就安装步骤来说,Elasticsearch-head真心麻烦,本文主要介绍如何部署Kibana,并使用Kibana来查看Elasticsearch中的索引数据。
部署Kibana
-
下载Kibana
在找到,找到和Elasticsearch适配的版本,我之前Elasticsearch安装的是6.4.2版本,所以我下载的是6.4.2的Linux 64位版本。
-
解压压缩文件
运行如下命令解压
tar zxvf kibana-6.4.2-linux-x86_64.tar.gz
-
修改配置
运行如下命令修改Kibana配置文件【kibana.yml】
vi kibana-6.4.2-linux-x86_64/config/kibana.yml
这个配置文件里面包含了Kibana和访问Elasticsearch的一些配置
- server.port: Kibana服务的访问端口
- server.host: Kibana服务绑定的地址(Kibana部署所在的服务器),可以是IP也可以是机器名,如果设置成localhost,则只能在本机访问
- server.basePath: 如果Kibana服务是通过代理访问的,需要设置成代理的路径,Kibana会根据此项判断是否需要从收到的请求中删除basePath,结尾不要添加斜杠【/】
- server.rewriteBasePath: 定义Kibana是否需要重写以server.basePath为前缀的请求路径,或者要求它们由反向代理重写。在Kibana 6.3之前始终为false,从Kibana 7.0开始将默认为true
- server.maxPayloadBytes: 请求的最大字节数
- server.name: Kibana服务的名称,用于标识Kibana服务使用的目的
- elasticsearch.url: Elasticsearch服务的URL
- elasticsearch.preserveHost: 设置为true时,Kibana使用server.host设置中指定的主机名;设置为false时,Kibana使用连接到此Kibana实例的主机的主机名,即Elastic
- kibana.index: Kibana在Elasticsearch中创建的索引,用于存储保存的搜索、可视化和仪表板数据。
- kibana.defaultAppId: 默认加载的应用程序
- elasticsearch.username: 访问Elasticsearch的用户名,Elasticsearch启用基本的身份认证时使用
- elasticsearch.password: 访问Elasticsearch的密码,Elasticsearch启用基本的身份认证时使用
- server.ssl.enabled: Kibana服务是否启用SSL
- server.ssl.certificate: Kibana服务SSL证书文件路径
- server.ssl.key: Kibana服务SSL秘钥文件路径
- elasticsearch.ssl.certificate: Elasticsearch PEM格式的SSL证书文件路径
- elasticsearch.ssl.key: Elasticsearch PEM格式的SSL秘钥文件路径
- elasticsearch.ssl.certificateAuthorities: 为Elasticsearch实例指定证书颁发机构的PEM文件的路径
- elasticsearch.ssl.verificationMode: Elasticsearch提供的证书验证,默认值为full,如果要忽略,可设置为none
- elasticsearch.pingTimeout: Elasticsearch响应PING的超时时间,单位是毫秒
- elasticsearch.requestTimeout: Elasticsearch后端响应请求的超时时间,单位是毫秒
- elasticsearch.requestHeadersWhitelist: 通过Kibana客户端请求Elasticsearch时需要发送的请求头列表
- elasticsearch.customHeaders: 要发送到Elasticsearch的请求头名称和值,无论elasticsearch.requestHeadersWhitelist配置如何,客户端请求头都不能覆盖任何自定义请求头
- elasticsearch.shardTimeout: Elasticsearch等待分片响应的超时时间,单位是毫秒,设置为0可以禁用
- elasticsearch.startupTimeout: 在重试之前Kibana启动时等待Elasticsearch的超时时间,单位是毫秒
- elasticsearch.logQueries: 记录发送到Elasticsearch的查询,如果要启用还需要将logging.verbose设置为true
- pid.file: Kibana的进程ID文件路径
- logging.dest: 指定Kibana保存日志输出文件的位置
- logging.silent: 设置是否输出日志,设置为true时禁止所有日志输出
- logging.quiet: 设置为true时禁止除错误消息之外的所有日志输出
- logging.verbose: 设置为true以记录所有事件,包括系统使用信息和所有请求
- ops.interval: 设置获取系统和进程性能指标的时间间隔,单位是毫秒,最小值是100,默认为5000
- i18n.defaultLocale: 默认区域设置,可用于国际化,国际化文件存储位置kibana-6.4.2-linux-x86_64/src/core_plugins/kibana/translations/
我修改了【server.host】,将这个从localhost修改为Kibana部署服务器的IP地址
同时还修改了【elasticsearch url】,因为Elasticsearch服务部署在另外的服务器,将其修改为Elasticsearch服务部署的地址
-
启动Kibana
运行如下命令后台启动
nohup kibana-6.4.2-linux-x86_64/bin/kibana &
启动后可以看到进程ID
使用Kibana查看Elasticsearch索引数据
安装成功之后使用浏览器通过访问【http://{IP}:5601】打开Kibana界面,找到Management菜单
这里能够查看Elasticsearch的索引,不得不说这是Kibana的一个改进,曾记得在5.6.3版本的时候是无法在Kibana中看到Elasticsearch的索引列表的,对于低版本的Kibana,我们可以在浏览器中输入如下地址来查看Elasticsearch的索引列表。
http://{Elasticsearch IP}:9200/_cat/indices?v
然后点击Kibana的【Management】菜单,创建Index Patterns
添加完成后就可以点击【Discover】菜单进行查看了,还可以添加各种查询条件进行过滤
避坑指南
-
UnhandledPromiseRejectionWarning: Error: listen EADDRNOTAVAIL xxx.xx.xx.xx:5601
如果你用的是云主机,并且碰到了启动Kibana出现了上面的错误
这是因为云主机一般有双IP,即内外网,切记:这个时候server.host一定要设置为内网IP
BTW,简书能不能支持一下标准的markdown变字体颜色的语法啊,要设置个红色,只能用`xxx`,但是这样字体又变小了