更新时间:2024-11-29 GMT+08:00

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

关闭type功能场景请参考该操作对接7.10.2版本Kibana。

  1. 下载并安装7.10.2版本Kibana。

    1. 下载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
    2. 解压安装包,并进入对应解压目录,以X86服务器安装过程为例。

      cd /opt

      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组内。

  2. 修改“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加密后信息"}

  3. 启动Kibana。

    ./bin/kibana --allow-root

    如需后台运行,可执行如下命令启动Kibana:

    nohup ./bin/kibana --allow-root &

  4. 查看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。

  1. 下载并安装6.7.1版本Kibana。

    1. 下载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

    2. 解压安装包,并进入对应解压目录。

      cd /opt

      tar -zxvf kibana-oss-6.7.1-linux-x86_64.tar.gz

      cd kibana-6.7.1-linux-x86_64/

      • 使用Dev Tools功能的用户,需要在elasticsearch组内。
      • 使用其他功能的用户,需要在supergroup组内。

  2. 确认当前系统为X86服务器还是TaiShan服务器。

    • TaiShan,执行3
    • X86,执行4

  3. 下载“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/

  4. 修改“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="}

  5. 执行以下命令,启动Kibana。

    ./bin/kibana

    如需后台运行,可执行如下命令启动Kibana:

    nohup ./bin/kibana &

  6. 查看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。