首页 > 其他分享 >无需重新学习,使用 Kibana 查询/可视化 SLS 数据

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

时间:2024-05-22 15:43:30浏览次数:13  
标签:Index 重新学习 Kibana SLS project KEY ES

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 兼容接口

作者:荆磊

原文链接

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

标签:Index,重新学习,Kibana,SLS,project,KEY,ES
From: https://www.cnblogs.com/yunqishequ/p/18206386

相关文章

  • Flutter 学习笔记:再次重新学习Flutter
    目录前言相关链接环境安装常见问题环境编译成功分析项目程序入口Wiget动态更新按照教程初始化项目弱化Flutter编译检查添加第一个按钮快速嵌套组件化数据更新:ChangeNotifier和StatefulWidgetDart中的委托修改好的代码运行效果总结前言作为一个开发了一年多的Uniapp的.NET开发工......
  • docker搭建Elasticsearch、Kibana、Logstash 同步mysql数据到ES
    一、前言在数据量大的企业级实践中,Elasticsearch显得非常常见,特别是数据表超过千万级后,无论怎么优化,还是有点力不从心!使用中,最首先的问题就是怎么把千万级数据同步到Elasticsearch中,在一些开源框架中知道了,有专门进行同步的!那就是Logstash。在思考,同步完怎么查看呢,这时Kibana映入......
  • 安装 elasticsearch & kibana (docker )
    1.elasticsearchdockerrun-e"ES_JAVA_OPTS=-Xms256m-Xmx256m"\--nameelasticsearch-p9200:9200-p9300:9300\-e"discovery.type=single-node"\-v/usr/share/elasticsearch/config:/usr/share/elasticsearch/config\-delasticsea......
  • Kibana系列---【重新启动kibana后,访问一直显示:Kibana server is not ready yet,查看
    重新启动kibana后,访问一直显示:Kibanaserverisnotreadyyet,查看后台错误日志报master_not_discovered_exception1.问题描述我的kibana之前都是好的,我把es集群重启之后,再重启kibana,发现无法访问了,访问时一直报:Kibanaserverisnotreadyyet,查看服务器后台日志后发现报:m......
  • 更优性能与性价比,从自建 ELK 迁移到 SLS 开始
    背景ELK(Elasticsearch、Logstash、Kibana)是当下开源领域主流的日志解决方案,在可观测场景下有比较广泛的应用。随着数字化进程加速,机器数据日志增加,自建ELK在面临大规模数据、查询性能等方面有较多问题和挑战。如何解决可观测数据的低成本、高可用是一个新的话题。SLS是......
  • 搭建https的es+kibana(7.9.1)
    背景:elasticsearch7需要开启https才可以创建报警,因此就需要搭建https的elasticsearch参考官方网站:https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-deploy-elasticsearch.html 第一步,创建crdkubectlcreate-fhttps://download.elastic.co/downloads/eck/2.12.1......
  • 无需重新学习,使用 Kibana 查询/可视化 SLS 数据
    作者:荆磊场景现在通过SLS的ES兼容能力,可以很方便地实现用Kibana来查询和可视化SLS的数据。对于从ES迁移到SLS的用户可以继续保留原来的Kibana使用习惯。下面来演示如何通过Kibana来访问SLS。使用方法部署架构这里蓝色部分是需要客户端部署的组件。Kibana......
  • docker-compose 安装部署ElasticSearch 和 Kibana
    项目需要搭建es环境,踩了一些坑,记录下首选还是通过docker搭建,而通过docker最佳的部署方式就是dockercompose1.docker-compose.ymlversion:"3.1"#服务配置services:elasticsearch:container_name:es01image:elasticsearch:8.12.2restart:unless-stopp......
  • docker - [07] 部署ES+Kibana
    思考问题:以后在Tomcat部署项目,如果每次都要进入容器会十分麻烦,是否可以在容器外部提供一个映射路径,webapps,在外部放置项目,自动同步到容器内部? 一、启动esdockerrun-d--nameelasticsearch-p9200:9200-p9300:9300-e"discovery.type=single-node"elasticsearch:7.6.......
  • docker安装elasticsearch和kibana
    来源:https://www.cnblogs.com/baoshu/p/16128127.html安装目标使用docker安装elasticsearch和kibana,版本均为7.17.1安装es1.dockerpull#去dockerhub看具体版本,这里用7.17.1Copydockerpullelasticsearch:7.17.1dockerpullkibana:7.17.12.临时安装生成文件#Copy......