灌篮少年 发表于 2024-5-22 15:44:53

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

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 ps4. 访问 Kibana

欣赏器访问 http://$(部署 Kibaba 的 IP 地址}:5601,输入账号密码登录 Kibana。
4.1 配置 Index Pattern

选择 Stack Managment:
https://pic3.zhimg.com/v2-f12631d327511930e8b6ac6c2de3625a_b.jpg
点击 Index Pattern Tab,在 Index Pattern 列表中看不到数据是正常的,日志服务的 Logstore 映射到 Kibana 中的 Index Patterns 必要手动创建。在提示框中单击 create an index pattern against hidden or system indices.
https://pic3.zhimg.com/v2-4657c08d34ff45fe0848d15811f28fb6_b.jpg
在 Create Index Pattern 页,Name 填写格式为 ${project}.${logstore},留意这里比必须完全填写,不支持*匹配。
https://pic1.zhimg.com/v2-d49d9dda8a7ee07e6357d68c8089ad98_b.jpg
点完成 Create Index Pattern 完成 Pattern 创建,然后进入 Discover 里就可以查询数据了。
https://pic4.zhimg.com/v2-e21bd5a78db295452a351979ad74de67_b.jpg
4.2 查询 Logstore

https://pic2.zhimg.com/v2-fa9c43b54d48589d58f13baf25fe451d_b.jpg
Kibana 的查询框中可以选择 KQL 和 Lucene 两种方式,SLS 的 ES 兼容接口都举行了支持。
简朴的 host 查询:
https://pic4.zhimg.com/v2-d4520f10c145bcf8bf881e8ce7532e03_b.jpg
复杂一些 query、filter 都可以查询。
https://pic4.zhimg.com/v2-825b36e4e54427c28557be1a005177a3_b.jpg
4.3 可视化图表

那么除了查询,可以用 Kibana 来做可视化吗?当然可以! 选择 Dashboard。
https://pic2.zhimg.com/v2-7a0f577920ae0c4cfb8a2d55485979ed_b.jpg
进入后点击 Create Dashboard 来创建一个图表。
https://pic2.zhimg.com/v2-15d76b83dee5e0ab7de9b21268901061_b.jpg
通过设置,横轴、纵轴的字段和统计方式,可以很方便地做出想要图。
好比最简朴的统计一个请求访问数的柱状图,时间为横轴,记载数为纵轴。
https://pic1.zhimg.com/v2-80ff9afeded9bc4150344e73124df83c_b.jpg
现在我想看到每个柱子中,status 的情况,可以选择 Break down by 的字段为 status。
https://pic3.zhimg.com/v2-8e3f1db3a5cab124792436b6ec89452a_b.jpg
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}需替换成真实值)后,会展示:
https://pic4.zhimg.com/v2-107770bdc8924c5bf3b95761c82b377b_b.jpg
3)Kibana 上创建 Index Pattern 的时候支持*通配吗?
不支持通配,必要完备填写 project.project.{project}.{logstore},好比 etl-dev.accesslog 这种方式来匹配。
https://pic3.zhimg.com/v2-ea8657355fe6dda73d961768b8148762_b.jpg
4)为什么 Kibana 上创建 Logstore 的 Index Pattern 时右侧没有提示出现?
https://pic4.zhimg.com/v2-343ae6df8b4f8f5b144b98019910fed7_b.jpg
 
有几种可能:
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 兼容接口
作者:荆磊
原文链接
本文为阿里云原创内容,未经允许不得转载。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 无需重新学习,使用 Kibana 查询/可视化 SLS 数据