文档

使用Kibana访问日志服务的Elasticsearch兼容接口

更新时间:

本文介绍如何使用Kibana访问日志服务的Elasticsearch兼容接口。

重要

本文档为阿里云原创文档,知识产权归阿里云所有,由于本文档旨在介绍阿里云与第三方产品交互的服务能力,因此可能会提及第三方公司或产品等名称。

前提条件

  • 已采集数据到日志服务标准型Logstore。具体操作,请参见数据采集

  • 已至少创建一个字段索引。具体操作,请参见创建索引

  • 已创建阿里云账号的AccessKey。具体操作,请参见访问密钥

    建议使用RAM用户的AccessKey,该RAM用户需具备Logstore的数据查询权限。您可以通过权限助手,配置权限。具体操作,请参见配置权限助手

背景信息

Kibana是一款基于Elasticsearch的数据可视化和探索工具。您可以通过Kibana对Elasticsearch中的数据进行查询、分析和可视化。对于已经习惯使用Kibana做日志查询和可视化报表的用户,为了让他们将数据迁移到日志服务后能够继续沿用Kibana,日志服务提供了兼容Elasticsearch的接口,实现在Kibana中查询和分析日志服务中的数据。

操作视频

本视频指导您使用Kibana访问日志服务的Elasticsearch兼容接口。

工作原理

您需要在客户端环境中部署Kibana、Proxy和Elasticsearch。

  • Kibana:用于查询、分析和可视化展示数据。

  • Elasticsearch:用于存储Kibana的Meta数据(主要为配置信息)。

    由于Kibana的Meta信息经常需要更新,而日志服务不支持更新操作。因此需要部署一个Elasticsearch专门用于存储Kibana的Meta数据。

    说明

    该Elasticsearch承载的数据量极小。

  • Proxy:用于区分Kibana对Meta数据和日志服务Elasticsearch兼容接口的API请求,需要部署一个Proxy对Kibana的API请求进行路由。

image

步骤一:部署Elasticsearch

参见如下示例,部署Elasticsearch。建议部署在阿里云ECS上,保证数据高可用持久化。

sudo docker pull elasticsearch:7.17.3

sudo mkdir /data  # Elasticsearch数据的存储目录, 请根据实际情况修改。
sudo chmod 777 /data # 配置权限。

sudo docker run -d --name es -p 9200:9200 \
           -e "discovery.type=single-node" \
           -e "ES_JAVA_OPTS=-Xms2G -Xmx2G" \
           -e ELASTIC_USERNAME=elastic \
           -e ELASTIC_PASSWORD=passwd \
           -e xpack.security.enabled=true \
           -v /data:/usr/share/elasticsearch/data \
           elasticsearch:7.17.3

参数

说明

ELASTIC_USERNAME

登录Elasticsearch的用户名,固定为elastic。

ELASTIC_PASSWORD

登录Elasticsearch的密码。

/data

Elasticsearch在物理机上的数据存储位置,请根据情况修改。

部署完成后,您可以执行如下命令验证是否部署成功。

curl http://${Elasticsearch所在机器的IP地址}:9200

如果返回结果中包含security_exception的JSON格式数据,表示已经部署成功Elasticsearch。

步骤二:部署Proxy

Kibana对接日志服务时,支持对接单个或多个Project,您需要在部署Proxy时,添加对应的Project信息。对应的部署示例如下所示。

单个Project

sudo docker pull sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:1.9d

sudo docker run  -d --name proxy \
            -e ES_ENDPOINT=${Elasticsearch所在机器的IP地址}:9200 \
            -e SLS_ENDPOINT=https://prjA.cn-guangzhou.log.aliyuncs.com/es/ \
            -e SLS_PROJECT=prjA \
            -e SLS_ACCESS_KEY_ID=${aliyunAccessId} \
            -e SLS_ACCESS_KEY_SECRET=${aliyunAccessKey} \
            -p 9201:9201 \
            -ti sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:1.9d

多个Project

    重要
    • 最多可添加32个Project。

    • SLS_PROJECT、SLS_ENDPOINT、SLS_ACCESS_KEY_ID、SLS_ACCESS_KEY_SECRET为第一个Project相关的变量名称。从第二个Project开始,其相关变量名称需加数字后缀,例如SLS_PROJECT2、SLS_ENDPOINT2。

    • 如果后面某Project的相关变量取值与第一个Project相同,则该Project对应的Endpoint、AccessKey可省略配置。

sudo docker pull sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:1.9d

sudo docker run  -d --name proxy \
            -e ES_ENDPOINT=${Elasticsearch所在机器的IP地址}:9200 \
            -e SLS_ENDPOINT=https://prjA.cn-guangzhou.log.aliyuncs.com/es/ \
            -e SLS_ENDPOINT2=https://prjB.cn-guangzhou.log.aliyuncs.com/es/ \ 
            -e SLS_PROJECT=prjA \
            -e SLS_PROJECT2=prjB \
            -e SLS_ACCESS_KEY_ID=${aliyunAccessId} \ 
            -e SLS_ACCESS_KEY_SECRET=${aliyunAccessKey} \ 
            -e SLS_ACCESS_KEY_ID2=${aliyunAccessId} \ #如果值和SLS_ACCESS_KEY_ID相同,无需配置。
            -e SLS_ACCESS_KEY_SECRET2=${aliyunAccessKey} \ #如果值和SLS_ACCESS_KEY_SECRET相同,无需配置。
            -p 9201:9201 \
            -ti sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:1.9d
  • 示例1

    对接2个Project(prjA和prjB),且使用相同的AccessKey,则示例如下:

    sudo docker pull sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:1.9d
    sudo docker run  -d --name proxy \
                -e ES_ENDPOINT=${Elasticsearch所在机器的IP地址}:9200 \
                -e SLS_ENDPOINT=https://prjA.cn-guangzhou.log.aliyuncs.com/es/ \
                -e SLS_ENDPOINT=https://prjB.cn-guangzhou.log.aliyuncs.com/es/ \
                -e SLS_PROJECT=prjA \
                -e SLS_PROJECT2=prjB \
                -e SLS_ACCESS_KEY_ID=${aliyunAccessId} \
                -e SLS_ACCESS_KEY_SECRET=${aliyunAccessKey} \
                -p 9201:9201 \
                -ti sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:1.9d
  • 示例2

    对接3个Project(prjA、prjB、prjC),其中prjA和prjC使用相同的AccessKey,则示例如下:

    sudo docker run  -d --name proxy \
                -e ES_ENDPOINT=${Elasticsearch所在机器的IP地址}:9200 \
                -e SLS_ENDPOINT=https://prjA.cn-guangzhou.log.aliyuncs.com/es/ \
                -e SLS_ENDPOINT2=https://prjB.cn-guangzhou.log.aliyuncs.com/es/ \
                -e SLS_ENDPOINT3=https://prjC.cn-guangzhou.log.aliyuncs.com/es/ \
                -e SLS_PROJECT=prjA \
                -e SLS_PROJECT2=prjB \
                -e SLS_PROJECT3=prjC \
                -e SLS_ACCESS_KEY_ID=${aliyunAccessId} \
                -e SLS_ACCESS_KEY_SECRET=${aliyunAccessKey} \
                -e SLS_ACCESS_KEY_ID2=${aliyunAccessId} \
                -e SLS_ACCESS_KEY_SECRET2=${aliyunAccessKey} \            
                -p 9201:9201 \
                -ti sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:1.9d

重要参数说明如下表所示。

参数

说明

ES_ENDPOINT

Elasticsearch的访问地址,格式为${Elasticsearch所在机器的IP地址}:9200

SLS_ENDPOINT

数据访问地址,格式为https://${project}.${sls-endpoint}/es/。其中${project}为Project名称,${sls-endpoint}为日志服务Project的访问域名。更多信息,请参见服务入口。例如:https://etl-guangzhou.cn-guangzhou.log.aliyuncs.com/es/

重要

必须使用HTTPS协议。

SLS_PROJECT

日志服务Project。

SLS_ACCESS_KEY_ID

阿里云AccessKey ID。

建议使用RAM用户的AccessKey,该RAM用户需具备Logstore的数据查询权限。您可以通过权限助手,配置权限。具体操作,请参见配置权限助手。AccessKey的获取方法,请参见访问密钥

SLS_ACCESS_KEY_SECRET

阿里云AccessKey Secret。

建议使用RAM用户的AccessKey,该RAM用户需具备Logstore的数据查询权限。您可以通过权限助手,配置权限。具体操作,请参见配置权限助手。AccessKey的获取方法,请参见访问密钥

部署完成后,您可以执行如下命令验证是否部署成功。

curl http://${Proxy所在机器IP地址}:9201

如果返回结果中包含security_exception的JSON格式数据,表示已经部署成功Proxy。

步骤三:部署Kibana

参见如下示例,部署Kibana。本文以Kibana 7.17.3版本为例。

sudo docker pull kibana:7.17.3

sudo docker run -d --name kibana \
            -e ELASTICSEARCH_HOSTS=http://${Proxy所在机器的IP地址}:9201 \
            -e ELASTICSEARCH_USERNAME=elastic \
            -e ELASTICSEARCH_PASSWORD=passwd \
            -e XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED=true \
            -p 5601:5601 \
            kibana:7.17.3

参数

说明

ELASTICSEARCH_HOSTS

Proxy的访问地址,格式为http://${proxy所在机器的IP地址}:9201

ELASTICSEARCH_USERNAME

登录Kibana的用户名。

需与您在部署Elasticsearch时设置的Elasticsearch用户名一致。

ELASTICSEARCH_PASSWORD

登录Kibana的密码。

需与您在部署Elasticsearch时设置的Elasticsearch密码一致。

步骤四:访问Kibana

  1. 登录Kibana控制台。

    访问地址为http://${部署Kibaba的IP地址}:5601。登录账号和密钥为您在部署Kibana时设置的用户名和密码。

  2. 配置索引。

    1. 在左侧导航栏中,选择Management > Stack Managementimage..png

    2. 在左侧导航栏中,选择Kibana > Index Patterns

    3. 首次使用时,请先在提示框中单击create an index pattern against hidden or system indices.image.png

      说明

      在Index pattern列表中看不到数据是正常的,日志服务的logstore映射到Kibana中的Index patterns需要手动创建。

    4. Create index pattern窗口中,配置相关参数。

      image.png

      参数名称

      说明

      Name

      索引名称,该名称的命名规则为${日志服务Project名称}.${Logstore名称}

      重要

      索引名称仅支持精准匹配,不支持使用通配符,即您需要输入完整的索引名称。

      例如Project名称为etl-guangzhou ,Logstore名称为es_test22,那么此处名称为etl-guangzhou.es_test22

      Timestamp field

      时间戳字段,固定选择为@timestamp

    5. 单击Create index pattern

  3. 查询和分析数据。

    重要

    使用Kibana和Elasticsearch兼容接口分析日志服务数据时,目前只支持使用Discover和Dashboard这两个模块。

    1. 在左侧导航栏中,选择Analytics > Discover

    2. 选择目标索引。

    3. 查询数据。image.png

  • 本页导读 (1)
文档反馈