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 数据的更多相关文章

  1. ELK:ElasticSearch中有数据,Kibana查询不到数据

    ElasticSearch中有数据,Kibana查询不到数据 多数原因就是Linux的时区问题, 在linux输入date查看当前时间是否根本地相对应,不对应那么你就来对了, 解决方案一. 这个选择的 ...

  2. ElasticSearch 5学习(2)——Kibana+X-Pack介绍使用(全)

    Kibana是一个为 ElasticSearch 提供的数据分析的 Web 接口.可使用它对日志进行高效的搜索.可视化.分析等各种操作.Kibana目前最新的版本5.0.2,回顾一下Kibana 3和 ...

  3. MySql学习(三) —— 子查询(where、from、exists) 及 连接查询(left join、right join、inner join、union join)

    注:该MySql系列博客仅为个人学习笔记. 同样的,使用goods表来练习子查询,表结构如下: 所有数据(cat_id与category.cat_id关联): 类别表: mingoods(连接查询时作 ...

  4. 【转载】 使用Anemometer基于pt-query-digest将MySQL慢查询可视化

    原文地址:使用Anemometer基于pt-query-digest将MySQL慢查询可视化 作者:84223932 本文主要介绍使用Anemometer基于pt-query-digest将MySQL ...

  5. 学习SQL关联查询

    通过一个小问题来学习SQL关联查询 原话题: 是关于一个left join的,没有技术难度,但不想清楚不一定能回答出正确答案来: TabA表有三个字段Id,Col1,Col2 且里面有一条数据1,1, ...

  6. Elasticsearch Kibana查询语法

    Elasticsearch Kibana查询语法 2018年06月03日 23:52:30 wangpei1949 阅读数:3992   Elasticsearch Kibana Discover的搜 ...

  7. Java数据库学习之模糊查询(like )

    Java数据库学习之模糊查询(like ): 第一种方式:直接在SQL语句中进行拼接,此时需要注意的是parm在SQL语句中需要用单引号拼接起来,注意前后单引号之间不能空格 String sql = ...

  8. elk kibana查询语法

    elk日志系统中kibana查询语法 单项term查询 例: 搜 Dahlen, Malone 字段field查询 field:value 例:city:Keyport, age:26 通配符 ? 匹 ...

  9. 使用Anemometer基于pt-query-digest将MySQL慢查询可视化

    最近玩MySQL,发现了一个很不错的工具,可以把MySQL慢查询可视化,方便我们去找出和分析慢询语句,搭建的步骤不多,但网上详细教程比较少,说得也不够详细,一不小心,估计得蛋痛一会,哈哈 Percon ...

  10. 每日linux命令学习-历史指令查询(history、fc、alias)

    linux历史机制对命令行中输入的命令进行编号并依此保存,以维护命令历史.登录会话期间输入的命令保存在shell内存中,若终止命令则添加至历史文件. 1. 箭头符号方向键 使用键盘上的箭头方向键可以从 ...

随机推荐

  1. Go 项目依赖注入wire工具最佳实践介绍与使用

    目录 一.引入 二.控制反转与依赖注入 三.为什么需要依赖注入工具 3.1 示例 3.2 依赖注入写法与非依赖注入写法 四.wire 工具介绍与安装 4.1 wire 基本介绍 4.2 安装 五.Wi ...

  2. 帕鲁重大更新!macOS 竟然也能玩了

    近日,<幻兽帕鲁>迎来了 v0.2.1.0 大版本的更新. 本次更新的最大亮点是新实装的突袭头目系统.玩家可以在 "召唤祭坛" 献祭石板,从而召唤强大的突袭头目.其中, ...

  3. 详讲openGauss 5.0 单点企业版如何部署_Centos7_x86

    本文分享自华为云社区<openGauss 5.0 单点企业版部署_Centos7_x86>,本文作者:董小姐 本文档环境:CentOS7.9 x86_64 4G1C40G python2. ...

  4. HarmonyOS应用窗口管理(Stage模型)

      一.  窗口开发概述 窗口模块的定义 窗口模块用于在同一块物理屏幕上,提供多个应用界面显示.交互的机制. ● 对应用开发者而言,窗口模块提供了界面显示和交互能力. ● 对终端用户而言,窗口模块提供 ...

  5. 从ID3到LGB

    梳理一下树模型算法,从三种最基础的tree到lgb的全过程笔记 基于信息增益(Information Gain)的ID3算法 ID3算法的核心是在数据集上应用信息增益准则来进行特征选择,以此递归的构建 ...

  6. 抓包整理————tcp 传输数据的基础概念[十一]

    前言 简单介绍一下tcp 数据传输. 正文 tcp 数据传输是怎么样子的呢? 比如我们在代码中写好了,connection 去连接. 然后我们用 write 去读取数据,这个时候呢,到底我们的操作系统 ...

  7. docker 应用篇————docker原理[三]

    前文 前面就已经介绍了docker的安装,在https://www.cnblogs.com/aoximin/p/12906218.html,这里面,这里作为重新整理. 那么这里就不介绍了,这里直接是进 ...

  8. CentOS 7.9编译安装Python-3.10.13

    目录 查看CentOS版本.系统默认gcc版本.Python版本和pip版本 部署Python-3.10.13 测试 将yum中的Python版本修改为系统原来的2.7.5版本 查看CentOS版本. ...

  9. Mui 消息推送

    一.push通过H5+实现 简单实现方式:通过轮询服务器是否有新消息推送过来 mui.plusReady(function() {plus.navigator.closeSplashscreen(); ...

  10. 最最最简单使用Docker部署Wordpress

    普通Docker部署 这种方式我用过,但是总体来说是比较麻烦的.但是可以简单说一下流程,总体流程如下: 安装Docker环境 拉取Wordpress镜像,运行镜像 拉取MySql镜像,运行镜像 Wor ...