本文介绍如何使用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请求进行路由。
步骤一:部署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=-Xms6G -Xmx8G" \
-e ELASTIC_USERNAME=elastic \
-e ELASTIC_PASSWORD=passwd \
-e xpack.security.enabled=true \
-v /data:/usr/share/elasticsearch/data \
elasticsearch:7.17.3
参数 |
说明 |
|
登录Elasticsearch的用户名,固定为elastic。 |
|
登录Elasticsearch的密码。 |
|
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.8
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.8
多个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.8
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.8
-
示例1
对接2个Project(prjA和prjB),且使用相同的AccessKey,则示例如下:
sudo docker pull sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:1.8 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.8
-
示例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.8
重要参数说明如下表所示。
参数 |
说明 |
|
Elasticsearch的访问地址,格式为 |
|
数据访问地址,格式为 重要 必须使用HTTPS协议。 |
|
日志服务Project。 |
|
阿里云AccessKey ID。 建议使用RAM用户的AccessKey,该RAM用户需具备Logstore的数据查询权限。您可以通过权限助手,配置权限。具体操作,请参见配置权限助手。AccessKey的获取方法,请参见访问密钥。 |
|
阿里云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
参数 |
说明 |
|
Proxy的访问地址,格式为 |
|
登录Kibana的用户名。 需与您在部署Elasticsearch时设置的Elasticsearch用户名一致。 |
|
登录Kibana的密码。 需与您在部署Elasticsearch时设置的Elasticsearch密码一致。 |
步骤四:访问Kibana
-
登录Kibana控制台。
访问地址为
http://${部署Kibaba的IP地址}:5601
。登录账号和密钥为您在部署Kibana时设置的用户名和密码。 -
配置索引。
-
在左侧导航栏中,选择Management > Stack Management。
-
在左侧导航栏中,选择Kibana > Index Patterns。
-
首次使用时,请先在提示框中单击create an index pattern against hidden or system indices.
说明
在Index pattern列表中看不到数据是正常的,日志服务的logstore映射到Kibana中的Index patterns需要手动创建。
-
在Create index pattern窗口中,配置相关参数。
参数名称
说明
Name
索引名称,该名称的命名规则为
${日志服务Project名称}.${Logstore名称}
。重要
索引名称仅支持精准匹配,不支持使用通配符,即您需要输入完整的索引名称。
例如Project名称为etl-guangzhou ,Logstore名称为es_test22,那么此处名称为
etl-guangzhou.es_test22
。Timestamp field
时间戳字段,固定选择为
@timestamp
。 -
单击Create index pattern。
-
-
查询和分析数据。
重要
使用Kibana和Elasticsearch兼容接口分析日志服务数据时,目前只支持使用Discover和Dashboard这两个模块。
-
在左侧导航栏中,选择Analytics > Discover。
-
选择目标索引。
-
查询数据。
-
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/166055.html