Elastic SQL 输入:数据库指标可观测性的通用解决方案

作者:Lalit Satapathy, Ishleen Kaur, Muthukumar Paramasivam

Elastic® SQL 输入(metricbeat 模块和输入包)允许用户以灵活的方式对许多支持的数据库执行 SQL 查询,并将结果指标提取到 Elasticsearch®。 本博客深入探讨了通用 SQL 的功能,并为高级用户提供了各种用例,以将自定义指标引入 Elastic®,以实现数据库可观察性。 该博客还介绍了 8.10 中发布的从所有数据库中获取新功能。

为什么是“通用 SQL”?

Elastic 已经拥有针对特定数据库的 metricbeat 和集成包。 一个例子是 MySQL 的 metricbeat — 以及相应的集成包。 这些 beats 模块和集成是针对特定数据库定制的,并且使用预定义的查询从特定数据库中提取指标。 这些集成中使用的查询和相应的指标不可修改。

而通用 SQL 输入(metricbeat 或输入包)可用于使用用户的 SQL 查询从任何支持的数据库中抓取指标。 用户根据要提取的特定指标来提供查询。 这为指标摄取提供了一种更强大的机制,用户可以选择特定的驱动程序并提供相关的 SQL 查询,然后使用结构化映射过程(稍后解释表/变量格式)将结果映射到一个或多个 Elasticsearch 文档。

通用 SQL 输入可以与已提取特定数据库指标的现有集成包结合使用,以动态提取其他自定义指标,从而使此输入非常强大。 在本博客中,通用 SQL 输入 (Generic SQL input) 和通用 SQL (Generic SQL) 可以互换使用。

通用 SQL 数据库指标收集

功能详情

本节介绍一些有助于指标提取的功能。 我们提供响应格式配置的简要说明。 然后我们深入研究 merge_results 功能,该功能用于将多个 SQL 查询的结果合并到单个文档中。

用户可能感兴趣的下一个关键功能是从所有自定义数据库收集指标,现在可以通过 fetch_from_all_databases 功能实现这一点。

现在让我们深入了解具体功能:

支持不同的驱动程序

通用 SQL 可以从不同的数据库获取指标。 当前版本能够从以下驱动程序获取指标:MySQL、PostgreSQL、Oracle 和 Microsoft SQL Server (MSSQL)。

响应格式

通用 SQL 中的响应格式用于操作表或变量格式的数据。 以下概述了创建和使用表和变量的格式和语法。

语法:response_format: table {{or}} variables

响应格式:表

此模式为每一行生成一个事件。 表格式对响应中的列数没有限制。 此格式可以有任意数量的列。

例子:

driver: "mssql"
sql_queries:- query: "SELECT counter_name, cntr_value FROM sys.dm_os_performance_counters WHERE counter_name= 'User Connections'"response_format: table

此查询返回类似于以下内容的响应:

"sql":{"metrics":{"counter_name":"User Connections ","cntr_value":7},"driver":"mssql"
}

上面生成的响应将 counter_name 添加为文档中的键。

响应格式:变量

变量格式支持键:值对。 此格式要求在查询中仅获取两列。

例子:

driver: "mssql"
sql_queries:- query: "SELECT counter_name, cntr_value FROM sys.dm_os_performance_counters WHERE counter_name= 'User Connections'"response_format: variables

变量格式以上面查询中的第一个变量作为键:

"sql":{"metrics":{"user connections ":7},"driver":"mssql"
}

在上面的响应中,你可以看到 counter_name 的值用于生成可变格式的密钥。

响应优化:merge_results

我们现在支持将多个查询响应合并到一个事件中。 通过启用 merge_results,用户可以显着优化摄取到 Elasticsearch 的指标的存储空间。 此模式可以有效压缩生成的文档,而不是生成多个文档,而是在适用的情况下生成单个合并文档。 从多个查询生成的类似类型的指标被组合到单个事件中。

合并结果的输出

语法:merge_results: true {{or}} false

在下面的示例中,你可以看到当 merge_results 被禁用时,数据如何加载到 Elasticsearch 中以进行以下查询。

例子:

在此示例中,我们使用两个不同的查询从性能 counter 获取指标。

merge_results: false
driver: "mssql"
sql_queries:- query: "SELECT cntr_value As 'user_connections' FROM sys.dm_os_performance_counters WHERE counter_name= 'User Connections'"response_format: table- query: "SELECT cntr_value As 'buffer_cache_hit_ratio' FROM sys.dm_os_performance_counters WHERE counter_name = 'Buffer cache hit ratio' AND object_name like '%Buffer Manager%'"response_format: table

正如你所看到的,上面示例的响应为每个查询生成一个文档。

第一个查询的结果文档:

"sql":{"metrics":{"user_connections":7},"driver":"mssql"
}

第二个查询生成的文档:

"sql":{"metrics":{"buffer_cache_hit_ratio":87},"driver":"mssql"
}

当我们在查询中启用 merge_results 标志时,上述两个指标将组合在一起,并将数据加载到单个文档中。

你可以在下面的示例中看到合并后的文档:

"sql":{"metrics":{"user connections ":7,“buffer_cache_hit_ratio”:87},"driver":"mssql"
}

然而,只有当表查询被合并并且每个查询生成一行时,这样的合并才是可能的。 对合并变量查询没有限制。

引入新功能:fetch_from_all_databases

这是一项新功能,通过启用 fetch_from_all_databases 标志,自动从 Microsoft SQL Server 的系统和用户数据库中获取所有数据库指标。

请密切关注 8.10 发行版本,你可以在其中开始使用获取所有数据库功能。 在 8.10 版本之前,用户必须手动提供数据库名称才能从自定义/用户数据库中获取指标。

语法: fetch_from_all_databases: true {{or}} false

以下是禁用 fetch_from_all_databases 标记的示例查询:

fetch_from_all_databases: false  
driver: "mssql"
sql_queries:- query: "SELECT @@servername AS server_name, @@servicename AS instance_name, name As 'database_name', database_id FROM sys.databases WHERE name='master';"

上述查询仅获取所提供的数据库名称的指标。 这里的输入数据库是 master,因此仅获取 master 的指标。

以下是启用了 fetch_from_all_databases 标志的示例查询:

fetch_from_all_databases: true
driver: "mssql"
sql_queries:- query: SELECT @@servername AS server_name, @@servicename AS instance_name, DB_NAME() AS 'database_name', DB_ID() AS database_id;response_format: table 

上述查询从所有可用数据库中获取指标。 当用户想要从所有数据库获取数据时,这非常有用。

请注意:目前仅 Microsoft SQL Server 支持此功能,并将由 MS SQL 集成在内部使用,以支持默认提取所有用户数据库的指标。

使用通用 SQL:Metricbeat

通用 SQL metricbeat 模块提供了针对不同数据库驱动程序执行查询的灵活性。 metricbeat 输入可作为任何生产用途的 GA。 在这里,你可以找到有关为不同驱动程序配置通用 SQL的更多信息以及各种示例。

使用通用 SQL:输入包

输入包为高级用户提供了灵活的解决方案,用于在 Elastic 中定制他们的摄取体验。 通用 SQL 现在也可作为 SQL 输入包使用。 输入包目前可作为测试版供早期用户使用。 让我们来看看用户如何通过输入包使用通用 SQL。

通用 SQL 输入包的配置:

通用 SQL 输入包的配置选项如下:

  • Driver:这是你要使用该包的 SQL 数据库。 本例中,我们以 mysql 为例。
  • Hosts:用户在此处输入连接字符串以连接到数据库。 它会根据所使用的数据库/驱动程序而有所不同。 请参阅此处的示例。
  • SQL Queries:用户在此处编写他们想要触发的 SQL 查询并指定 response_format。
  • Data set:用户指定响应字段映射到的数据集名称。
  • 合并结果:这是一项高级设置,用于将查询合并到单个事件中。
SQL 输入包的配置参数

指标映射到 “sql_first_dataset” 创建的索引

通过自定义 SQL 查询实现指标可扩展性

假设用户正在使用 MYSQL Integration,它提供了一组固定的指标。 他们的要求现在扩展到通过触发新的自定义 SQL 查询从 MYSQL 数据库检索更多指标。

这可以通过添加 SQL 输入包的实例、编写自定义查询并指定新的 data set 名称来实现,如下面的屏幕截图所示。

 这样用户就可以通过执行相应的查询来获取任何指标。 查询的结果指标将被索引到新数据集 sql_second_dataset。

摄取管道和映射的定制

当存在多个查询时,用户可以通过启用 “Merge Result” 开关将它们组合到单个事件中。

定制用户体验

用户可以通过编写自己的摄取管道并提供自定义映射来自定义数据。 用户还可以构建自己的定制仪表板。

摄取管道和映射的定制

正如我们在上面所看到的,SQL 输入包提供了通过运行新查询来获取新指标的灵活性,这在默认的 MYSQL 集成中是不支持的(用户从一组预定的查询中获取指标)。

SQL 输入包还支持多种驱动程序:mssql、postgresql 和 oracle。 因此,可以使用单个输入包来满足所有这些数据库的需求。

注意:SQL 输入包尚不支持 fetch_from_all_databases 功能。

试试看!

现在你已经了解了通用 SQL 的各种用例和功能,开始使用 Elastic Cloud 并尝试为你的 SQL 数据库使用 SQL 输入包并获得定制的体验和指标。 如果你正在为我们现有的一些基于 SQL 的集成(例如 Microsoft SQL Server、Oracle 等)寻找更新的指标,请继续尝试 SQL 输入包。

本文中描述的任何特性或功能的发布和时间安排均由 Elastic 自行决定。 当前不可用的任何特性或功能可能无法按时交付或根本无法交付。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

RFID技术引领汽车零部件加工新时代

RFID技术的兴起引领了汽车零部件加工领域的新时代,作为一种利用无线电频率进行自动识别的技术,RFID技术能够快速、准确地识别物体并获取相关数据,在汽车零部件加工中,RFID技术具有重要的应用价值,可以提高生产效率、降…

ElementUI基本介绍及登录注册案例演示

目录 前言 一.简介 二.优缺点 三.Element完成登录注册 1. 环境配置及前端演示 1.1 安装Element-UI模块 1.2 安装axios和qs(发送get请求和post请求) 1.3 导入依赖 2 页面布局 2.1组件与界面 3.方法实现功能数据交互 3.1 通过方法进行页面跳转 3.2 axios发送get请求 …

Ubuntu性能分析-ftrace 底层驱动

1、框架介绍 ftrace内核驱动可以分为几部分:ftrace framework,RingBuffer,debugfs,Tracepoint,各种Tracer。 ftrace框架是整个ftrace功能的纽带,包括对内和的修改,Tracer的注册,RingBuffer的控制等等。 RingBuffer是静态动态ftrace的载体。 debugfs则提供了用户空间…

深度解读F5:从企业级负载均衡到云原生应用服务

上世纪九十年代,Internet 的快速发展催生了大量在线网站,Web 访问量迅速提升。在互联网泡沫破灭以前,这个领域基本是围绕如何对 Web 网站进行负载均衡与优化。因而在早期,也会有“Web 交换机”的说法。从1997年 F5 发布了 BIG-IP …

对负采样(negative sampling)的一些理解

负采样(negative sampling)通常用于解决在训练神经网络模型时计算softmax的分母过大、难以计算的问题。但在LightGCN模型论文的BPR LOSS中,负采样的概念可能与传统的softmax分母问题不完全一样。 在LightGCN模型中,不同于传统的协…

主机安装elasticsearch后无法登陆

问题描述 2023年7月31日11点02分,主机安装elasticsearch后无法登陆,通过后台查看主机宕机状态,CPU达到100%,按业务侧要求执行重启操作后发现主机黑屏无法正常进入系统,系统卡死。 2.原因分析 2.1通过故障…

WebGL 渲染三维图形作为纹理贴到另一个三维物体表面

目录 渲染到纹理 帧缓冲区对象和渲染缓冲区对象 帧缓冲区对象 帧缓冲区对象的结构 如何实现渲染到纹理 示例程序(FramebufferObject.js) 创建帧缓冲区对象(gl.createFramebuffer()) gl.createFra…

机器学习——一元线性回归构造直线,并给出损失函数

目 录 Question 问题分析 1.概念补充 2.流程分析 3.注意 具体实现 最终成果 代码 思考: Question 在二维平面有n个点,如何画一条直线,使得所有点到该直线距离之和最短 如果能找到,请给出其损失函数 问题分析 1.概念…

C#,数值计算——Ranfib的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Implements Knuths subtractive generator using only floating operations. See /// text for cautions. /// </summary> public class Ranfib { p…

【运维日常】华为云专线实现idc通过nat出网

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

Android Jetpack Compose之确定重组范围并优化重组

目录 1.概述2.确定Composable重组的范围3.优化重组的性能3.1 Composable 位置索引3.2 通过Key添加索引信息3.3 使用注解Stable优化重组 1.概述 前面的文章提到Compose的重组是智能的&#xff0c;Composable函数在进行重组时会尽可能的跳过不必要的重组&#xff0c;只对需要变化…

外包干了2个月,技术有明显退步...

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

从1开始的Matlab(快速入门)

MATLAB软件版本&#xff1a;MATLAB R2016b 本文是博主从零开始学Matlab的记录&#xff0c;适合第一次接触Matlab的同学阅读。 一、基础介绍 1.1界面认识 1.2变量命名 注&#xff1a;Matlab中的注释 %% 独占一行的注释&#xff08;有上下横线分割&#xff09; % 普通注释 …

volatile修饰数组

结论&#xff1a;volatile修饰对象或数组时&#xff0c;只能保证他们的引用地址的可见性。 非volatile数组的可见性问题 public class Test {static int[] a new int[]{1};public static void main(String[] args) {new Thread(() -> { //线程Atry {Thread.sleep(1000);}…

Flink安装及简单使用

目录 转载处&#xff08;个人用最新1.17.1测试&#xff09; 依赖环境 安装包下载地址 Flink本地模式搭建 安装 启动集群 查看WebUI 停止集群 Flink Standalone搭建 安装 修改flink-conf.yaml配置文件 修改workers文件 复制Flink安装文件到其他服务器 启动集群 查…

4K视频一分钟大小是多少?如何转换为其他分辨率?

4K 分辨率是指大约 4,000像素的水平显示分辨率&#xff0c; 4K显示器、电视的分辨率为3840*2160&#xff1b;影院的4K分辨率为40962160。4K视频相较于常见的1080P分辨率更清晰、画面更流畅&#xff0c;然而与之对应的则是文件更大&#xff0c;更占用本地存储内存&#xff0c;在…

【计算机网络笔记十】计算机网络面试问题总结

1. 计算机网络的各层协议及作用&#xff1f; 计算机网络体系可以大致分为一下三种&#xff0c;OSI 七层模型、TCP/IP 四层模型和五层模型。 OSI 七层模型&#xff1a;大而全&#xff0c;但是比较复杂、而且是先有了理论模型&#xff0c;没有实际应用。TCP/IP 四层模型&#x…

web:[极客大挑战 2019]BabySQL

题目 点进页面显示如下 查看源代码 先尝试一下万能密码 没用&#xff0c;or被过滤了 试着双写看看 回显一串&#xff0c;也不是flag 先查询列数尝试一下&#xff0c;把union select过滤了&#xff0c;使用双写 构造payload /check.php?usernameadmin&password1 %27 ununi…

【小沐学Python】网络爬虫之urllib

文章目录 1、简介2、功能介绍2.1 urllib库和requests库2.2 urllib库的模块2.2.1 urllib.request2.2.2 urllib.error2.2.3 urllib.parse2.2.4 urllib.robotparser 2.3 入门示例 3、代码示例3.1 urlib 获取网页(1)3.2 urlib 获取网页(2) with header3.3 urllib post请求 4、urlli…

【独家工具】JMeterPerfReporter3.0正式版本,让你的JMeter更好用

Lemon-JMeterPerfReporter工具&#xff0c;是我们性能测试课程教研组根据JMeter性能测试报告的不足&#xff0c;定制开发的一个性能报告生成工具。有需要的同学&#xff0c;可以通过小编官方gitee账户下载&#xff0c;或咨询我免费获取哦&#xff01; 做过性能测试的人员都知道…