无需重新学习,使用 Kibana 查询/可视化 SLS 数据

无需重新学习,使用 Kibana 查询/可视化 SLS 数据作者:荆磊场景现在通过 SLS 的 ES 兼容能力,可以很方便地实现用 Kibana 来查询和可视化 SLS 的数据。对于从 ES 迁移到 SLS 的用户可以继续保留原来的 Kibana 使用习惯。下面来演示如何通过 Kibana 来访问

大家好,欢迎来到IT知识分享网。

作者:荆磊

场景

现在通过 SLS 的 ES 兼容能力,可以很方便地实现用 Kibana 来查询和可视化 SLS 的数据。对于从 ES 迁移到 SLS 的用户可以继续保留原来的 Kibana 使用习惯。下面来演示如何通过 Kibana 来访问 SLS。

使用方法

部署架构

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

这里蓝色部分是需要客户端部署的组件。

  • Kibana 就是用来可视化的
  • Proxy 用来区分 Kibana 的请求,将 SLS 相关的转发到 SLS 的 ES 兼容接口
  • Elasticsearch 用来存 Kibana 的 Meta

等等,为什么这里还需要一个 ES?

原因是 SLS 的 Logstore 不支持更新,很多 Meta 类的数据不适合存在 SLS。

而 Kibana 有很多元数据要存储,比如 Kibana 的图表配置、Index Pattern 配置等。

因此需要部署一个 ES 实例,这个 ES 实例只会存 Kibana 的元数据,所以它的资源占用非常小。

部署过程

使用 docker-compose 部署

相关准备

安装好 docker 和 docker compose,下面的操作步骤对于 podman compose 的方式一样适用。

创建相关目录

mkdir sls-kibaba # 创建一个新的目录 cd sls-kibaba # 进入 mkdir es_data # 创建一个目录用于放es的数据

配置

在 sls-kibana 目录下下创建 docker-compose.yml 文件。

内容如下:(下面标识为此处请修改的地方,请根据实际情况做一下修改)

version: '3' services: es: image: elasticsearch:7.17.3 environment: - "discovery.type=single-node" - "ES_JAVA_OPTS=-Xms2G -Xmx2G" - ELASTIC_USERNAME=elastic - ELASTIC_PASSWORD=ES密码 # 此处请修改 - xpack.security.enabled=true volumes: - ./data:/usr/share/elasticsearch/data networks: - es717net kproxy: image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:1.9d depends_on: - es environment: - ES_ENDPOINT=es:9200 - SLS_ENDPOINT=https://etl-dev.cn-huhehaote.log.aliyuncs.com/es/ # 此处请修改,规则为 https://${project名}.${slsEnpoint名}/es/ - SLS_PROJECT=etl-dev # 此处请修改 - SLS_ACCESS_KEY_ID=ALIYUN_ACCESS_KEY_ID # 此处请修改, 确保有读logstore的权限 - SLS_ACCESS_KEY_SECRET=ALIYUN_ACCESS_KEY_SECRET # 此处请修改为真实accessKeySecret networks: - es717net kibana: image: kibana:7.17.3 depends_on: - kproxy environment: - ELASTICSEARCH_HOSTS=http://kproxy:9201 - ELASTICSEARCH_USERNAME=elastic - ELASTICSEARCH_PASSWORD=ES密码 # 此处请修改(跟前面设置的ES密码相同) - XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED=true ports: - "5601:5601" networks: - es717net networks: es717net: ipam: driver: default 

启动本地 Kibana 服务:

docker compose up -d

检查 docker compose 启动状态:

docker compose ps

访问 Kibana

浏览器访问 http://$(部署 Kibaba 的 IP 地址}:5601,输入账号密码登录 Kibana。

配置 Index Pattern

选择 Stack Managment:

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

点击 Index Pattern Tab,在 Index Pattern 列表中看不到数据是正常的,日志服务的 Logstore 映射到 Kibana 中的 Index Patterns 需要手动创建。在提示框中单击 create an index pattern against hidden or system indices.

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

在 Create Index Pattern 页,Name 填写格式为 ${project}.${logstore},注意这里比必须完全填写,不支持*匹配。

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

点完成 Create Index Pattern 完成 Pattern 创建,然后进入 Discover 里就可以查询数据了。

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

查询 Logstore

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

Kibana 的查询框中可以选择 KQL 和 Lucene 两种方式,SLS 的 ES 兼容接口都进行了支持。

简单的 host 查询:

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

复杂一些 query、filter 都可以查询。

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

可视化图表

那么除了查询,可以用 Kibana 来做可视化吗?当然可以! 选择 Dashboard。

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

进入后点击 Create Dashboard 来创建一个图表。

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

通过设置,横轴、纵轴的字段和统计方式,可以很方便地做出想要图。

比如最简单的统计一个请求访问数的柱状图,时间为横轴,记录数为纵轴。

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

现在我想看到每个柱子中,status 的情况,可以选择 Break down by 的字段为 status。

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

FAQ

1)为什么在 Kibana 上看不到 SLS 上的 Logstore?

SLS 上的 Logstore 是通过 Kibana 的 Index Pattern 方式来查询的,而 SLS 上的 Logstore 需要通过手工创建 Index Pattern 的方式来创建。

2)Kibana 上创建 Index Pattern 的时候,不做输入的时候,为什么没有提示?

这个是正常的,在左侧输入正确的 ${project}.${logstore} (这里${project}、${logstore}需替换成真实值)后,会展示:

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

3)Kibana 上创建 Index Pattern 的时候支持*通配吗?

不支持通配,需要完整填写 ${project}.${logstore},比如 etl-dev.accesslog 这种方式来匹配。

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

4)为什么 Kibana 上创建 Logstore 的 Index Pattern 时右侧没有提示出现?

无需重新学习,使用 Kibana 查询/可视化 SLS 数据

有几种可能:

1. SLS 的 ES 兼容地址不对,在 kproxy 中配置时,规则为 https://${project名}.${slsEnpoint名}/es/,注意 /es/ 这个后缀。

2. 对应的 accessKeyId、accessKeySerect 没有访问 SLS Logstore 的权限(读权限)。

5)我有多个 SLS Project 想在 Kibana 上访问,可以做到吗?

可以的,关键在于 kproxy 的配置。SLS_PROJECT、SLS_ENDPOINT、SLS_ACCESS_KEY_ID、SLS_ACCESS_KEY_SECRET 为第一个 Project 相关的变量名称。从第二个 Project 开始,其相关变量名称需加数字后缀,例如 SLS_PROJECT2、SLS_ENDPOINT2、SLS_ACCESS_KEY_ID2、SLS_ACCESS_KEY_SECRET2。如果后面某 Project 的 AccessKey 与第一个 Project 相同,则该 Project 对应的 AccessKey 可省略配置。

举例,假设另外一个 Project 要被 Kibaba 查,那么作为第二个 kproxy:

- SLS_ENDPOINT2=https://etl-dev2.cn-huhehaote.log.aliyuncs.com/es/ - SLS_PROJECT2=etl-dev2 - SLS_ACCESS_KEY_ID2=etl-dev2对应的accessKeyId #如果和SLS_ACCESS_KEY_ID2一样可以不加 - SLS_ACCESS_KEY_SECRET2=etl-dev2对应的accessKeyKey #如果和SLS_ACCESS_KEY_ID2一样可以不加

小结

本文演示了使用 Kibana 连接 SLS ES 兼容接口进行查询和分析的方法,对于 Kibana 的 query 和可视化能力都能正常对接和使用。适合下面两种情况:

  • 如果您之前的使用习惯是 Kibana,而日志已经存在了阿里云 SLS 上,可以使用该方案对接。
  • 如果您现在使用的是标准的 ELK 方案,但厌倦了 ES 使用时维护工作或者调优,不妨试一试阿里云 SLS 的方案(c++ 底层、Serverless、低成本、ES 兼容)。

期待您的使用。

参考文档:

  • SLS 兼容 ES 介绍
  • https://help.aliyun.com/zh/sls/user-guide/compatibility-between-log-service-and-elasticsearch?spm=a2c4g..0.0.6df154e3SkR5Qi
  • 使用 Kibana 连接 ES 兼容接口
  • https://help.aliyun.com/zh/sls/user-guide/use-kibana-to-access-the-elasticsearch-compatible-api-of-log-service?spm=a2c4g..0.0.27bc54e3bgGvsa#cdb8c7a157t0v

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/86085.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信