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.rhkb.cn/news/145896.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java进阶02 Array、内存分析、this、面向对象、继承、override、super、实例化、多态、向下转型、Object

文章目录 一、数组(Array)二、数组的内存分析三、Array工具类四、面向对象的一些小知识五、进阶知识补充1. this关键字2.继承3.方法重写4.super关键字的使用5.子类对象实例化6.多态性的体现7.向下转型8.Object类 一、数组(Array) 数组:多个相同类型数据按照一定顺序…

Qt应用开发(基础篇)——视图基类 QAbstractItemView

一、前言 QAbstractItemView类继承于QWidget,为全部视图类提供了基本的功能。 QAbstractItemView类是一个抽象类,不能被实例化使用,它是QtWidget框架中树视图QTreeView、列表视图QListView、表格视图QTableView、单列视图QColumnView和标题头…

nginx 反向代理 负载均衡 动静分离

一样东西的诞生通常都是为了解决某些问题,对于 Nginx 而言,也是如此。 比如,你出于无聊写了一个小网站,部署到 tomcat 之后可以正常访问 但是后来,你的这个小网站因为内容很诱人逐步的火了,用户越来越多&a…

深度学习笔记_1、定义神经网络

1、使用了PyTorch的nn.Module类来定义神经网络模型;使用nn.Linear来创建全连接层。(CPU) import torch.nn as nn import torch.nn.functional as F from torchsummary import summary# 定义神经网络模型 class Net(nn.Module):def __init__(self):super(Net, self).__init__()…

赋能工业数字化转型|辽宁七彩赛通受邀出席辽宁省工业互联网+安全可控先进制造业数字服务产业峰会

2023年9月25日下午,由软通动力信息技术(集团)股份有限公司主办的“工业互联网安全可控先进制造业数字服务产业峰会”在辽宁沈阳顺利举办。省市区各级政府、科研院所领导、技术专家、企业高管以及生态合作伙伴代表等齐聚一堂,共同探…

【JVM】第五篇 垃圾收集器G1和ZGC详解

导航 一. G1垃圾收集算法详解1. 大对象Humongous说明2. G1收集器执行一次GC运行的过程步骤3. G1垃圾收集分类4. G1垃圾收集器参数设置5. G1垃圾收集器的优化建议6. 适合使用G1垃圾收集器的场景?二. ZGC垃圾收集器详解1. NUMA与UMA2. 颜色指针3. ZGC的运作过程4. ZGC垃圾收集器…

【ShaderLab罪恶装备卡通角色_二次元风格_“Sol Badguy“_角色渲染(第二篇)】

罪恶装备背德之炎卡通角色_二次元风格_Unity 角色渲染 角色初始效果:基础渲染SimpleBas 资源分析模型顶点颜色: 贴图资源SOL_base_基础色块效果:其中SOL_base_A通道的效果: SOL_ilm:如下SOL_ilm模型上区域分布- 左到右…

python-切换镜像源和使用PyCharm进行第三方开源包安装

文章目录 前言python-切换镜像源和使用PyCharm进行第三方开源包安装1. 切换镜像源2. 使用PyCharm进行第三方开源包安装 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每…

python爬取百度图片

1.查询数据 打开网页。 https://cn.bing.com/images/search?q%E7%99%BE%E5%BA%A6%E5%9B%BE%E7%89%87&formHDRSC2&first1&cw1585&ch924 我们右键查看网页源代码,发现能找到我们需要的img衔接,但是这是一个动态网页。我们每次向下滑动网页,会发现图…

RHEL8.0安装+基础命令练习+discuz(lamp)论坛搭建

上课练习环境: RHEL8.0系统镜像下载: 链接1:https://pan.baidu.com/s/1wX2j-aTO1VRcHQYpCDYnEg 提取码:6buv 链接2:https://ws28.cn/f/32i4oq8p5r1 (下载完2个文件后只需要解压001,推荐压缩…

Ubuntu服务器安全性提升:修改SSH默认端口号

在Ubuntu服务器上,SSH(Secure Shell)是一种至关重要的远程连接工具。它提供了一种安全的方式来远程连接和管理计算机系统,通过加密通信来确保数据的保密性和完整性。SSH协议广泛用于计算机网络中,用于远程管理、文件传…

打包python模块代码到pypi

python中,我们会在自己业务中,重复性的使用某些功能。我们可以把这些公用的模块,打包上传,然后给需要的人使用,pypi给我们提供了这个机会 本期目录 一、准备工作 二、编写文件 三、上传下载 一、准备工作 1、需要git…

妙不可言的Python之旅----(一)

初识Python python的起源 1989年,为了打发圣诞节假期,Gudio van Rossum吉多 范罗苏姆(龟叔)决心开发一个新的解释程序(Python雏形) 1991年,第一个Python解释器诞生 Python这个名字&#xff…

ubuntu 18.04 LTS安装opencv 3.4.16 + opencv_contrib 3.4.16

1.下载 opencv 3.4.16 opencv_contrib 3.4.16 其中,opencv_contrib解压后的多个文件夹复制到opencv内、合并 2.安装 参考博文: https://zhuanlan.zhihu.com/p/650792342 https://zhuanlan.zhihu.com/p/87197806 其中 (1)cmake前…

Redis与分布式-哨兵模式

接上文 Redis与分布式-主从复制 1.哨兵模式 启动一个哨兵,只需要修改配置文件即可, sentinel monitor lbwnb 1247.0.0.1 6001 1先将所有服务关闭,然后修改配置文件,redis Master,redis Slave,redis Slave…

基于大语言模型扬长避短架构服务

秘诀: 扬泛化之长, 避时延之短

最新AI智能创作系统ChatGPT商业源码+详细图文搭建部署教程+AI绘画系统

一、AI系统介绍 SparkAi创作系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧&am…

Python学习之索引与切片

Python学习之索引与切片 s “0abcdefghijklmnopqrstuvwxyz”,第一个元素‘0’,索引号为0,最后一个元素‘z’,索引号为26 1. s[0]获取索引号为0的元素 2. s[1:3]获取索引号为1的元素,直到但不包括索引号为3的元素。即…

西门子S7-1200使用LRCF通信库与安川机器人进行EthernetIP通信的具体方法示例

西门子S7-1200使用LRCF通信库与安川机器人进行EthernetIP通信的具体方法示例 准备条件: PLC:S7-1200 1214C DC/DC/DC 系统版本4.5及以上。 机器人控制柜:安川YRC1000。 软件:TIA V17 PLC做主站,机器人做从站。 具体方法可参考以下内容: 使用的库文件为西门子 1200系列…

源码编译安装systemtap

目录 编译环境 编译步骤 编译环境 阿里云ubuntu20.04 编译步骤 1 先安装elfutils,参见我的前一篇博客 源码编译elfutils_金色熊族的博客-CSDN博客 2 下载systemtap源码 3 解压 解压后的文件夹与elfutils的文件夹应该是平行的,如下图&#xff1a…