ClickHouse Grafana插件4.0版 - 升级SQL可观测性

图片

本文字数:3396;估计阅读时间:9 分钟

作者:Clickhouse team

审校:庄晓东(魏庄)

本文在公众号【ClickHouseInc】首发

自2022年5月Grafana的ClickHouse插件首次发布以来,两种技术都有了长足的发展。在最近的一篇博文中,我们描述了实时OLAP存储的成熟度,与开源标准化如何使SQL应用于可观测性用例成为可能。使用户能够通过ClickHouse探索和可视化可观测性数据。我们深知使用SQL进行可观测性的挑战之一是:学习和使用SQL,因此我们继续投资于ClickHouse插件以协助解决这个问题。

版本4的发布看到了用户交互的新哲学,其中日志和跟踪成为新查询构建器体验中的重要组成部分。我们相信这将最小化SRE编写SQL查询的需求,并简化基于SQL的可观测性,推动这种新兴范式向前迈进。

在本博文中,我们将探讨版本4.0中用户体验的演变以及我们设计决策的思考过程。其中一部分是将Open Telemetry(OTel)置于插件的核心位置,因为我们相信:这将是未来几年基于SQL的可观测性和数据收集的基础。

将OpenTelemetry作为一等公民

早期版本的ClickHouse Grafana插件试图提供一个数据不可知的体验,允许用户在任何数据类型上构建可视化。虽然这种功能在版本4中得以保留,但用户会发现体验更加直观,并专注于为可观测性数据集(Grafana的主要用例)提供流畅的体验。

当插件首次安装,并且用户需要配置数据源时,这种变化将显而易见。除了能够配置默认数据库(现在还包括表),用户还可以为其日志和/或跟踪数据指定配置。简单地说,这意味着仅需指定日志和/或跟踪数据的默认数据库和表。但是,您还可以指定您的数据符合OTel规范(以及您使用的特定版本)。如果您对默认的OTel模式进行了更改,或者更喜欢使用自己的格式,则可以覆盖列名称。

图片

这里的日志配置非常简单 - 需要一个时间、日志级别和消息列,以便日志可以在后面的查询中得到良好的呈现,我们稍后会看到。

跟踪配置稍微复杂一些。这里需要的列是为了使后续的查询能够构建完整的跟踪概要。这些查询假定数据的结构与OTel类似,因此严重偏离标准模式的用户需要使用视图才能从此功能中受益。

简化的体验

早期版本的插件旨在帮助用户构建SQL查询,不考虑正在查询的数据类型。这要求用户指定他们是否想要构建选择行、执行聚合或执行时间序列分析的查询。通过“显示为”选项,控制查询构建器选项本身,以帮助用户避免为目标查询类型输入SQL,这个选择在初始版本中被称为“显示为”选项,混淆了使用。后来的迭代通过“格式”选项对此进行了分离。虽然这使用户可以构建查询类型,并根据需要呈现它,例如将时间序列呈现为表格,但这最终仍然令人困惑。用户最终会回到SQL编辑器,可以在那里手动输入查询。

图片

version 3

我们希望在版本4中优先解决这种混乱。此外,想要提供:更注重可观测性的体验,我们引入了专门用于日志和追踪的查询构建器。这些可以通过新的“查询类型”选择器获得,它简单地控制构建器的布局。鉴于用户仍然需要构建通用的时间序列查询和聚合,这包括了表格和时间序列选项。最后,对于那些有高级查询需求的用户,我们保留了通过经典的SQL编辑器编写自己查询的功能。

图片

version 4

查询追踪

Grafana提供了查询和呈现追踪的丰富功能。这需要目标存储根据其id重构整个追踪,以及其组成的跨度。在ClickHouse SQL中,这必然会导致复杂的查询,用户历来会通过参数化视图来隐藏这些查询。然而,整体体验仍然不尽如人意,用户需要通过SQL编辑器查询视图。

在4.0中,用户可以简单地使用过滤器搜索追踪,例如将结果限制为超过SLA持续时间的追踪。自动生成了用户识别顶级追踪所需的查询,并以表格格式返回结果,如所示。这要求用户指定映射到所需概念的列,例如TraceId。幸运的是,对于使用OTel模式的用户,这些映射会自动填充。

图片

请注意,以上内容包括了进入追踪并检索相关日志的能力。后者是提供统一可观测性体验的基础,用户可以轻松地在不同数据类型之间进行导航。

图片

“查看追踪”链接允许检索追踪的跨度,以Grafana所需的格式呈现,以便可以在分割视图的右侧以瀑布图形式呈现。

图片

如果用户希望检查特定追踪及其跨度,则现在也支持按id搜索。同样,无需SQL,只需输入id并搜索。这种特定的应用流程适用于从其他可观测性来源(例如日志)识别感兴趣的追踪的用户。

图片

这种无需编写查询即可搜索和呈现追踪的简单方式,使非SQL从业者有可能享受ClickHouse的高压缩率和闪电般的检索速度。

查询日志

日志查询构建器主要设计用于与Grafana的探索视图一起使用,用户可以列出日志事件并进行钻取。假设您正在使用OTel,现在查询日志数据不应需要更多操作,只需为您的查询类型选择日志,调整时间段,然后点击运行查询即可。

图片

正如您所见,我们现在还获得了显示日志级别随时间变化的直方图。由于我们现在在模式中具有有关级别和时间字段的所需信息,因此我们可以自动发出所需的GROUP BY查询,以支持此可视化。

用户可以选择对这些结果应用过滤器,修改排序顺序或限制结果数量,而无需编写SQL。对于那些希望深入了解的用户,SQL查询将通过经典编辑器呈现供编辑。

图片

与追踪类似,在调试问题时,日志并不是孤立消费的,用户还对生成日志行的请求相关的追踪感兴趣。现在,任何从日志中提取的追踪都作为可点击的链接显示出来。这将导致与先前搜索追踪并单击追踪id时演示的相同分割视图。

图片

或者,用户可以通过“查看追踪日志”按钮仅过滤到与特定追踪相关的其他日志行。

图片

其他数据类型

尽管以上明显简化了日志和追踪的查询,用户仍需要能够查询时间序列数据并构建仪表板!正如前面提到的,这是通过选择查询类型为TimeSeries或Table来支持的,这将呈现适当的构建器。

TimeSeries构建器提供了一个简单的构建器,用于随时间聚合数据。用户可以选择“简单”模式,该模式执行按时间顺序检索行以进行呈现的简单操作,或执行随时间的聚合,允许使用ClickHouse的任何分析函数计算指标。在两种情况下,都必须指定一个时间字段,默认为检测到的第一个时间字段。在任一模式下都可以指定一个系列列,这将自动呈现为多行。下面我们展示了2020年至2023年伦敦北部的英国房价平均值。

图片

Table构建器可以被视为第一个“紧急逃生通道”,如果您不查询时间序列、日志或追踪的话。通常这意味着您希望绘制柱状图、表格或单个指标。下面我们再次使用房价数据,将英国前10个邮政编码作为条形图显示。

图片

记住,如果以上任何方式都不起作用,您始终可以使用经典的SQL!最后,所有这些新功能都可以作为Grafana仪表板中的面板组装起来。

图片

展望未来

注意到上述内容忽略了用例的一个重要组成部分:指标。如我们的博客文章所述,指标是基于SQL的可观测性的三个支柱中最不成熟的一个。主要是因为ClickHouse缺乏Prometheus摄入接口和使用PromQL进行查询的手段,比如rate...。目前:),对于此支柱的任何构建器都感觉像是:提供了一个次优的解决方案来正确解决问题。敬请关注更新!

在接下来的几个月里,我们看到了提升插件的许多其他机会。实时日志跟踪是一个,我们知道许多用户需要实时诊断问题的功能。此外,我们对将AI服务整合到插件中的潜力感到兴奋。借鉴我们在Cloud控制台中使用AI驱动的SQL查询辅助所取得的成功,我们现在正在探索将相同功能整合到插件中的可能性,目的是允许用户使用自然语言查询其日志和追踪。

我们应该强调:当前插件处于Beta版。这主要是为了收集反馈,考虑到这个变化的重要性。作为我们的用户和社区,您的声音很重要,我们希望听到这些变化是否合理,以及您还希望看到什么其他内容。

结论

在本文中,我们探讨了新版ClickHouse Grafana插件如何将可观测性置于其新的设计理念的核心位置,并如何大大简化了日志和追踪的查询,同时保留了查询其他数据类型,如时间序列的灵活性。

征稿启示

面向社区长期正文,文章内容包括但不限于关于 ClickHouse 的技术研究、项目实践和创新做法等。建议行文风格干货输出&图文并茂。质量合格的文章将会发布在本公众号,优秀者也有机会推荐到 ClickHouse 官网。请将文章稿件的 WORD 版本发邮件至:Tracy.Wang@clickhouse.com

图片

​​联系我们

手机号:13910395701

邮箱:Tracy.Wang@clickhouse.com

满足您所有的在线分析列式数据库管理需求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/445119.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AOP的常见使用方法

面向切面编程(AOP,Aspect-Oriented Programming) 面向切面编程是一种软件设计和编程范式,它旨在解决在传统面向对象编程(OOP)中难以模块化处理的“横切关注点”问题。横切关注点是指那些跨越多个对象、类或…

每日OJ题_牛客HJ74 参数解析(IO型OJ)

目录 牛客HJ74 参数解析 解析代码1 解析代码2 牛客HJ74 参数解析 参数解析_牛客题霸_牛客网 解析代码1 #include <iostream> #include <string> #include <vector> using namespace std; int main() {string str "";getline(cin, str);vecto…

windows安装ElasticSearch踩坑记

ElasticSearch是一个开源的分布式搜索和分析引擎。它提供实时分布式搜索功能&#xff0c;可以索引和搜索大量的结构化和非结构化数据。Elasticsearch以其速度、可伸缩性和处理复杂查询的能力而闻名。它常用于日志分析、全文搜索、文档搜索和数据分析等领域。使用ElasticSearch的…

AHU 数据库 实验五

【实验名称】 实验5 数据库的数据更新与视图管理 【实验目的】 1. 熟悉数据更新操作的概念与操作类型&#xff1b; 2. 熟练掌握INSERT、UPDATE、DELETE语句的基本语法&#xff1b; 3. 熟练运用INSERT、UPDATE、DELETE语句实现数据的插入、修改与删除…

git学习(创建项目提交代码)

操作步骤如下 git init //初始化git remote add origin https://gitee.com/aydvvs.git //建立连接git remote -v //查看git add . //添加到暂存区git push 返送到暂存区git status // 查看提交代码git commit -m初次提交git push -u origin "master"//提交远程分支 …

获取bean的几种情况总结

1. 情景一 bean 对应的类没有实现任何接口 根据 bean 本身的类型获取 bean 测试&#xff1a;IOC容器中同类型的 bean 只有一个 正常获取到 IOC 容器中的那个 bean 对象 测试&#xff1a;IOC 容器中同类型的 bean 有多个 会抛出 NoUniqueBeanDefinitionException 异常&#xf…

STM32---ADC

ADC 概念 众所周知&#xff0c;GPIO只能读入高电平或者低电平&#xff0c;那如果现有一个模拟量&#xff0c;该如何读取呢&#xff0c;比如电压的范围是0~3.3v&#xff0c;如何获取电压的值。就需要ADC&#xff08;Analog-Digital Converter&#xff09;了。ADC可以将引脚上连…

自动从Android上拉取指定文件

需求场景 利用Mac中的脚本编辑器实现从连接的Android设备中获取指定的文件。 环境 macOS Monterey 版本 12.7.1脚本编辑器adb环境&#xff08;如果没有的话&#xff0c;可以网上搜下Mac配置adb&#xff09; 实现方案 1、打开脚本编辑器&#xff1b; 2、新建一个脚本文件&…

视频编解码技术介绍 - 基本概念篇

第一章 视频编解码技术介绍 - 基本概念篇 文章目录 前言1. 我的疑问1.1 什么是视频编解码技术1.2 为什么会有视频编解码技术1.3 视频编解码中有哪些核心技术1.4 作为开发者需要重点了解视频编解码中的哪些技术 2. 视频编解码的历史3. 基本概念3.1 像素3.2 分辨率3.3 ppi(像素密…

详细讲解Xilinx DDR3 的MIG IP生成步骤及参数含义

前几篇文章讲解了SDRAM到DDR3各自的变化&#xff0c;本文讲解如何使用DDR3&#xff0c;在Altera的Cyclone IV开发板上一般会使用SDRAM作为存储数据的芯片&#xff0c;而Xilinx的S6和7000系列一般使用DDR3作为存储数据的芯片。 从SDRAM芯片内部结构分析其原理&#xff0c;从内部…

腾讯云8核16g服务器性能好不好?亲测并发数支持人数

腾讯云8核16G轻量服务器CPU性能如何&#xff1f;18M带宽支持多少人在线&#xff1f;轻量应用服务器具有100%CPU性能&#xff0c;18M带宽下载速度2304KB/秒&#xff0c;折合2.25M/s&#xff0c;系统盘为270GB SSD盘&#xff0c;月流量3500GB&#xff0c;折合每天116.6GB流量&…

AHU 人工智能实验-CCA

神经网络覆盖算法——CCA&#xff08;基于Ling Zhang 和Bo Zhang论文) Abstract 在这篇文章中我将介绍基于张铃和张钹学者提出的CCA算法&#xff0c;并实现代码复现&#xff0c;给出使用的数据集&#xff0c;以及实验结果对比。 1. Introduction 1.1 Background 我们知道自…

外包干了6天后悔了,技术明显进步。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近3年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

[虚拟机保护逆向] [HGAME 2023 week4]vm

[虚拟机保护逆向] [HGAME 2023 week4]vm 虚拟机逆向的注意点&#xff1a;具体每个函数的功能&#xff0c;和其对应的硬件编码的*长度* 和 *含义*&#xff0c;都分析出来后就可以编写脚本将题目的opcode转化位vm实际执行的指令 &#xff1a;分析完成函数功能后就可以编写脚本输出…

跑马灯样式

这里的公告是要做成&#xff0c;跑马灯的样式&#xff0c;文字是会移动并且隐藏掉的。 HTML&#xff1a; <div class"notice"><div class"yrr"><img src"./img/ia_100000018.png" alt"" /></div><div …

循序渐进丨MogDB 数据库特性之动态数据脱敏机制

数据脱敏是行之有效的数据库隐私保护方案之一&#xff0c;可以在一定程度上限制非授权用户对隐私数据的窥探。动态数据脱敏机制是一种通过定制化脱敏策略来实现对隐私数据保护的技术&#xff0c;可以在保留原始数据的前提下有效地解决非授权用户对敏感信息访问的问题。当管理员…

Fastjson 1.2.24 反序列化导致任意命令执行漏洞复现(CVE-2017-18349)

写在前面 CVE-2017-18349 指的是 fastjson 1.2.24 及之前版本存在的反序列化漏洞&#xff0c;fastjson 于 1.2.24 版本后增加了反序列化白名单&#xff1b; 而在 2019 年&#xff0c;fastjson 又被爆出在 fastjson< 1.2.47 的版本中&#xff0c;攻击者可以利用特殊构造的 …

js【详解】async await

为什么要使用 async await async await 实现了使用同步的语法实现异步&#xff0c;不再需要借助回调函数&#xff0c;让代码更加易于理解和维护。 (async function () {// await 必须放在 async 函数中try {// 加载第一张图片const img1 await loadImg1()// 加载第二张图片co…

xss.haozi.me靶机 通关

0x00 没有任何过滤可以直接注入<img srcx οnerrοralert(1)> 0x01 使用了testarea标签将我们的输入内容以普通的字符串进行展示 但是我们可以将标签进行闭合 </textarea><img srcx οnerrοralert(1)> 0x02 我们依然可以先闭合之后添加属性a" οncl…

Arcgis小技巧【20】——属性表有东西,缩放至图层却看不到?

一、问题分析 这是一个看似正常的要素类数据&#xff0c;打开它的属性表&#xff0c;里面有一行要素&#xff1a; 说明这不是空数据。 回到地图界面&#xff0c;在图层列表中&#xff0c;右键单击&#xff0c;点击【缩放至图层】。 使用过这个功能的应该知道&#xff0c;点击…