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

kibana,sls · 浏览次数 : 0

小编点评

**步骤 1:部署 Kibana** * 使用 `docker-compose` 创建一个容器实例,运行 Kibana 和 kproxy 服务。 * 修改 `docker-compose.yml` 文件中的参数,设置 Elasticsearch 集群的 endpoint、project name、access key 等信息。 * 在 Kibana 上访问浏览器,输入账号密码登录。 **步骤 2:创建 Index Pattern** * 在 Kibana 上点击 `Index Pattern` tab。 * 创建一个新 Index Pattern,并设置 Name、Pattern Name、Index Pattern Type 等信息。 * 选择 KQL 或 Lucene 方式进行数据查询。 * 完成创建后,可以在 Discover 中查看数据。 **步骤 3:查询 Logstore** * 在 Kibana 上访问 `LogstoreKibana` 页面。 * 选择 KQL 或 Lucene 方式进行数据查询。 * 可以创建图表和可视化图进行数据分析。 **步骤 4:可视化图表** * 选择 Dashboard 页面,创建图表。 * 选择横轴、纵轴的字段和统计方式。 * 创建图表,例如柱状图或 line chart。 * 可根据需要调整图表的设置。 **FAQ** * **为什么在 Kibana 上看不到 SLS 上的 Logstore?** 由于 SLS 上的 Logstore 需要通过手工创建 Index Pattern 的方式来创建,而 Kibana 使用的是 Index Pattern 方式。 * **如何设置 KQL 和 Lucene 方式?** 可以通过设置 `kql.query.kql.query` 和 `kql.query.kql.selector` 参数来设置。 * **是否支持*通配?** 不支持通配,需要完整填写 project.project.{project}.{logstore}。 * **为什么 Kibana 上创建 Logstore 的 Index Pattern 时右侧没有提示出现?** 可能是由于 kproxy 的配置错误或 AccessKey 没有访问 SLS Logstore 的权限。 * **如何设置多个 Project 的 AccessKey?** 使用 `SLS_PROJECT2`、`SLS_ENDPOINT2`、`SLS_ACCESS_KEY_ID2`、`SLS_ACCESS_KEY_SECRET2` 等变量名设置多个 Project 的 AccessKey。

正文

1. 场景

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

2. 使用方法

部署架构

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

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

等等,为什么这里还需要一个 ES? 原因是 SLS 的 Logstore 不支持更新,很多 Meta 类的数据不适合存在 SLS。

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

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

3. 部署过程

使用 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

4. 访问 Kibana

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

4.1 配置 Index Pattern

选择 Stack Managment:

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

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

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

4.2 查询 Logstore

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

简单的 host 查询:

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

4.3 可视化图表

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

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

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

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

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

4.4 FAQ

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

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

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

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

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

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

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

 

有几种可能:

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一样可以不加

5. 小结

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

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

期待您的使用。

参考文档:

SLS 兼容 ES 介绍

使用 Kibana 连接 ES 兼容接口

作者:荆磊

原文链接

本文为阿里云原创内容,未经允许不得转载。

与无需重新学习,使用 Kibana 查询/可视化 SLS 数据相似的内容:

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

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

Web通用漏洞--文件包含

# Web通用漏洞--文件包含 ## 文件包含原理 在项目开发过程中,开发人员通常会将重复使用的函数写入单个文件中,在使用该类函数时,直接调用文件即可,无需重新编写,这种调用文件的过程成为文件包含。在文件包含过程中,如果用户可以控制所包含的文件,则为文件包含漏洞。 ## 文件包含函数 PHP:inc

【ESP32】制作 Wi-fi 音箱(HTTP + I2S 协议)

用 Wifi 来传输音频数据,会比蓝牙更好。使用蓝牙方式,不管你用什么协议,都会对数据重新编码,说人话就是有损音质,虽然不至于全损。而使用 Wifi 就可以将 PCM 数据直接传输,无需再编码和压缩。在 ESP32 开发板上可以通过 I2S(IIS)向功放芯片发出音频数据。 关于 i2s 的时序,老

【玩转鲲鹏 DevKit系列】如何快速迁移无源码应用?

为了帮助广大用户和开发者快速将无源码应用从 x86 迁移到鲲鹏,鲲鹏 DevKit提供了动态二进制翻译工具ExaGear,它能在运行时将x86二进制指令翻译成鲲鹏二进制指令,使得大部分x86应用无需重新编译即可运行在 ARM64服务器上,性能损耗最低10%。

[转帖]NFS导致df -h无法使用解决

https://www.cnblogs.com/zhengchunyuan/p/11937198.html NFS服务意外断开,导致挂载的客户端“df -Th”命令无法使用,及挂载目录无法“cd”“ls”解决思路:1、强制取消客户端挂载2、重启NFS服务,客户端和服务端都需要重启3、重新挂载NFS处

[转帖]vs调试运行程序出现:“由于找不到MSVCP140D.dll,无法继续执行代码 ”的解决方法

碎碎念 最近在使用Visual studio调试程序的时候,突然冒出了“由于找不到MSVCP140D.dll,无法继续执行代码。重新安装程序可能会解决次问题。”的错误。如下图所示。在网上尝试了很多别人的解决方案,都没有效果。 最后在不懈努力下终于可以正常运行了。 以下我尝试过的无效方案: 很多人说是

重新定义性价比!人工智能AI聊天ChatGPT新接口模型gpt-3.5-turbo闪电更新,成本降90%,Python3.10接入

北国春迟,春寒料峭略带阴霾,但ChatGPT新接口模型gpt-3.5-turbo的更新为我们带来了一丝暖意,使用成本更加亲民,比高端产品ChatGPT Plus更实惠也更方便,毕竟ChatGPT Plus依然是通过网页端来输出,Api接口是以token的数量来计算价格的,0.002刀每1000个token,token可以理解为字数,说白了就是每1000个字合0.01381人民币,以ChatGPT无

贴纸拼词问题

贴纸拼词问题 作者:Grey 原文地址: 博客园:贴纸拼词问题 CSDN:贴纸拼词问题 题目描述 有 n 种不同的贴纸。每个贴纸上都有一个小写的英文单词。 要拼写出给定的字符串 target ,方法是从收集的贴纸中切割单个字母并重新排列它们。以多次使用每个贴纸,每个贴纸的数量是无限的。 返回你需要拼

[转帖]VMware Workstation PRO 17.0.2正式版+激活密钥

https://www.isharepc.com/36181.html VMware Workstation PRO 17是一个简化的桌面虚拟化应用程序。 它在同一台计算机上运行一个或多个操作系统而无需重新启动。 VMware Workstation PRO具有简单的用户界面,提供无与伦比的操作系统

【.NET 8】ASP.NET Core计划 - 支持更完善的AOT发布

.NET7.0刚发布不久,.NET社区开始了.NET8.0的开发,重心重新回到了新功能的迭代。 我们知道在.NET7.0中一个令人激动的特新就是支持了NativeAOT,我们可以通过NativeAOT生成本机程序,由于无需JIT编译,所以无需安装.NET Runtime,也进一步的提升了.程序的启动