Elasticsearch对接Kibana
操作场景
Kibana提供了图形化操作界面,通过可视化界面对Elasticsearch进行索引构建、查询、分析等操作。
Elasticsearch使用Basic认证对接Kibana安全性较低,存在风险,建议使用客户端工具esClient.sh对密码进行加密。
前提条件
- 已安装Elasticsearch客户端。
- 使用curl命令,确认兼容type功能是否关闭。curl命令的使用方法请参考Linux下curl命令的使用。
执行如下命令查看参数“index.include.type.name”的值是否为false。
curl -XGET -s --tlsv1.2 --negotiate -k -u : "https://ip:httpport/_cluster/settings?pretty&include_defaults&flat_settings" |grep index.include.type.name
"index.include.type.name" : "false"
- “ip”:Elasticsearch集群中任意EsNode实例节点的IP。
- “httpport”:对应EsNode实例的HTTP端口,该端口值可以在FusionInsight Manager界面的Elasticsearch服务下,选择该实例的“配置 > 全部配置”,并选择“全部配置”右上角搜索参数“SERVER_PORT”获取。如果一个节点上存在多个HTTP端口(多个EsNode),则选择任意一个即可。
- 如果是普通模式,删除安全认证参数“--tlsv1.2 --negotiate -k -v -u :”,并将https修改为http。
- 安全模式下,如果执行curl命令遇到“curl: option --tlsv1.2: is unknown”错误,是由于当前的操作系统不支持TLSv1.2协议,可联系系统供应商升级TLSv协议到1.2版本。如果可以接受低版本加密协议存在的风险,也可以关闭“DISABLE_TLS_LOW_PROTOCOL”或“DISABLE_TLSV1_PROTOCOL”开关来开启低版本TLSv协议的使用。
- 修改配置开启低版本TLSv协议后需重启服务,并移除命令中的“--tlsv1.2”。
- 是,执行对接7.10.2版本Kibana。
- 否,执行对接6.7.1版本Kibana。
对接7.10.2版本Kibana
关闭type功能场景请参考该操作对接7.10.2版本Kibana。
- 下载并安装7.10.2版本Kibana。
- 下载Kibana安装包“kibana-oss-7.10.2-linux-x86_64.tar.gz”并上传至待安装节点,例如“/opt”目录下。确认当前系统为X86服务器还是TaiShan服务器,选择开源社区下载地址。
- X86服务器:https://artifacts.elastic.co/downloads/kibana/kibana-oss-7.10.2-linux-x86_64.tar.gz
- TaiShan服务器:https://artifacts.elastic.co/downloads/kibana/kibana-oss-7.10.2-linux-aarch64.tar.gz
- 解压安装包,并进入对应解压目录,以X86服务器安装过程为例。
tar -zxvf kibana-oss-7.10.2-linux-x86_64.tar.gz
cd kibana-7.10.2-linux-x86_64/
- 使用Dev Tools功能的用户,需要在elasticsearch组内并指定相应的操作权限,Elasticsearch用户权限设置请参考Elasticsearch鉴权模式。
- 使用其他功能的用户,需要在supergroup组内。
- 下载Kibana安装包“kibana-oss-7.10.2-linux-x86_64.tar.gz”并上传至待安装节点,例如“/opt”目录下。确认当前系统为X86服务器还是TaiShan服务器,选择开源社区下载地址。
- 修改“config/kibana.yml”配置,示例如下。
#Kibana在Elasticsearch中使用的索引名称。 #若需要启动多个Kibana,请确保不同用户的该配置项内容不重复。 kibana.index: ".kibana" #Kibana服务端口。 server.port: 5601 #当前节点ip,默认localhost。 server.host: "10.1.1.1" #需要访问的Elasticsearch节点IP及端口号,建议配置EsNode1实例的IP和端口号。普通模式下,请将https修改为http。 elasticsearch.hosts: ["https://10.1.1.1:24100"] #直接填写none即可。 elasticsearch.ssl.verificationMode: none #修改xxxxxx为“用户名:密码”的Base64转码结果,其中密码使用客户端加密后的密码;普通模式不需要此项配置。 elasticsearch.customHeaders: {"custom-proxy-username":"xxxxxx"} #Kibana日志目录,根据实际场景自定义即可,请提前手动创建该文件。 logging.dest: /opt/kibana-7.10.2-linux-x86_64/log/kibana.log #Kibana健康检查周期,请根据实际使用场景合理填写,单位ms。 elasticsearch.healthCheck.delay: 60000
- elasticsearch.hosts禁止配置EsMaster节点的IP和Port。EsMaster实例为重要的管理进程,为确保Elasticsearch集群稳定性,不允许配置EsMaster节点IP和Port。
- 因部分java库仍遵循RFC的Base64规定,在进行加密时会增加换行符,请保证elasticsearch.customHeaders配置项中的信息无换行符。
对密码的加密操作通过客户端工具esClient.sh encrypt -n <username>来实现,操作方式见使用Elasticsearch客户端章节6。
例如,当前用户名为test,密码为xxx,使用esClient.sh encrypt -n test,输入密码并确认后返回信息为“xxx加密后信息”,则配置项填写为:
elasticsearch.customHeaders: {"custom-proxy-username":"xxx加密后信息"}
- 启动Kibana。
./bin/kibana --allow-root
如需后台运行,可执行如下命令启动Kibana:
nohup ./bin/kibana --allow-root &
- 查看Kibana日志,确认启动成功后,登录Kibana界面。
在配置的Kibana日志文件中,找到如下类似日志,即表明Kibana已经启动成功,在浏览器输入日志中打印的链接即可,如http://10.1.1.1:5601,若使用IPv6环境,需将地址改为http://[ip]:port的格式,再输入浏览器。
{"type":"log","@timestamp":"2019-06-07T07:07:32Z","tags":["status","plugin:elasticsearch@7.10.2","info"],"pid":44252,"state":"green","message":"Status changed from yellow to green - Ready","prevState":"yellow","prevMsg":"Waiting for Elasticsearch"} {"type":"log","@timestamp":"2019-06-07T07:07:32Z","tags":["listening","info"],"pid":44252,"message":"Server running at http://10.1.1.1:5601"}
- create index pattern等操作,Kibana会创建相关索引,默认为".kibana"开头。
- Kibana会根据健康检查状态进行信息反馈,如果在healthCheck周期内,信息发生变化(例如切换登录用户),可能需要等到下一次healthCheck的反馈结果才会生效;同时,健康检查会发送多个http请求到Elasticsearch,为防止增加Elasticsearch集群的压力,请根据使用场景,合理配置kibana.yml中的健康检查周期,即参数elasticsearch.healthCheck.delay。
对接6.7.1版本Kibana
开启type功能场景请参考该操作对接6.7.1版本Kibana。
- 下载并安装6.7.1版本Kibana。
- 下载Kibana安装包“kibana-oss-6.7.1-linux-x86_64.tar.gz”并上传至待安装节点,例如“/opt”目录下。
开源社区下载地址:https://www.elastic.co/cn/downloads/past-releases/kibana-oss-6-7-1
- 解压安装包,并进入对应解压目录。
tar -zxvf kibana-oss-6.7.1-linux-x86_64.tar.gz
cd kibana-6.7.1-linux-x86_64/
- 使用Dev Tools功能的用户,需要在elasticsearch组内。
- 使用其他功能的用户,需要在supergroup组内。
- 下载Kibana安装包“kibana-oss-6.7.1-linux-x86_64.tar.gz”并上传至待安装节点,例如“/opt”目录下。
- 确认当前系统为X86服务器还是TaiShan服务器。
- 下载“node-v10.15.2-linux-arm64.tar.gz”,node下载地址:https://nodejs.org/dist/v10.15.2/
解压后替换“kibana-6.7.1-linux-x86_64”下的node。
tar -zxvf node-v10.15.2-linux-arm64.tar.gz -C /opt
rm -rf /opt/kibana-6.7.1-linux-x86_64/node/*
mv /opt/node-v10.15.2-linux-arm64/* /opt/kibana-6.7.1-linux-x86_64/node/
- 修改“config/kibana.yml”配置,示例如下。
#Kibana在Elasticsearch中使用的索引名称。 #若需要启动多个Kibana,请确保不同用户的该配置项内容不重复。 kibana.index: ".kibana" #Kibana服务端口。 server.port: 5601 #当前节点ip,默认localhost。 server.host: "10.1.1.1" #需要访问的Elasticsearch节点IP及端口号,建议配置EsNode1实例的IP和端口号。普通模式下,请将https修改为http。 elasticsearch.hosts: ["https://10.1.1.1:24100"] #直接填写none即可。 elasticsearch.ssl.verificationMode: none #修改xxxxxx为“用户名:密码”的base64转码结果;普通模式不需要此项配置。 elasticsearch.customHeaders: {"custom-proxy-username":"xxxxxx"} #Kibana日志目录,根据实际场景自定义即可,请提前手动创建该文件。 logging.dest: /opt/kibana-6.7.1-linux-x86_64/log/kibana.log #Kibana健康检查周期,请根据实际使用场景合理填写,单位ms。 elasticsearch.healthCheck.delay: 60000
- elasticsearch.hosts禁止配置EsMaster节点的IP和Port。EsMaster实例为重要的管理进程,为确保Elasticsearch集群稳定性,不允许配置EsMaster节点IP和Port。
- 因部分java库仍遵循RFC的Base64规定,在进行加密时会增加换行符,请保证elasticsearch.customHeaders配置项中的信息无换行符。
- 可下载Elasticsearch客户端,导入RestClient二次开发样例,使用com.*.fusioninsight.elasticsearch.example.util.Base64Utils工具类进行Base64加密。
- 请确保Base64转码结果在填写时,只替换“xxxxxx”部分。
例如,当前用户名为test,密码为xxx,“test:xxx”转base64后为“dGVzdDoxMjM=”,则配置项填写为:
elasticsearch.customHeaders: {"custom-proxy-username":"dGVzdDoxMjM="}
- 执行以下命令,启动Kibana。
./bin/kibana
如需后台运行,可执行如下命令启动Kibana:
nohup ./bin/kibana &
- 查看Kibana日志,确认启动成功后,登录Kibana界面。
在配置的Kibana日志文件中,找到如下类似日志,即表明Kibana已经启动成功,在浏览器输入日志中打印的链接即可,如http://10.1.1.1:5601。
{"type":"log","@timestamp":"2022-06-07T07:07:32Z","tags":["status","plugin:elasticsearch@6.7.1","info"],"pid":44252,"state":"green","message":"Status changed from yellow to green - Ready","prevState":"yellow","prevMsg":"Waiting for Elasticsearch"} {"type":"log","@timestamp":"2022-06-07T07:07:32Z","tags":["listening","info"],"pid":44252,"message":"Server running at http://10.1.1.1:5601"}
- create index pattern等操作,Kibana会创建相关索引,默认为".kibana"开头。
- Kibana会根据健康检查状态进行信息反馈,如果在healthCheck周期内,信息发生变化(例如切换登录用户),可能需要等到下一次healthCheck的反馈结果才会生效;同时,健康检查会发送多个http请求到Elasticsearch,为防止增加Elasticsearch集群的压力,请根据使用场景,合理配置kibana.yml中的健康检查周期,即参数elasticsearch.healthCheck.delay。