Microsoft SQL Server 输入插件
此插件为您的 SQL Server 实例提供指标。记录的指标是轻量级的,并使用 SQL Server 提供的动态管理视图。
此插件支持 Microsoft 支持的 SQL Server 版本(请参阅 生命周期日期)、Azure SQL 数据库(单一)、Azure SQL 托管实例、Azure SQL 弹性池和 Azure Arc 启用的 SQL 托管实例。
引入于: Telegraf v0.10.1 标签: datastore 操作系统支持: all
全局配置选项
插件支持其他全局和插件配置设置,用于修改指标、标签和字段,创建别名以及配置插件顺序等任务。更多详情请参阅 CONFIGURATION.md。
Secret-store 支持
此插件支持来自 secret-stores 的 servers 选项的秘密。有关如何使用它们的更多详细信息,请参阅 secret-store 文档。
配置
# Read metrics from Microsoft SQL Server
[[inputs.sqlserver]]
## Specify instances to monitor with a list of connection strings.
## All connection parameters are optional.
## By default, the host is localhost, listening on default port, TCP 1433.
## for Windows, the user is the currently running AD user (SSO).
## See https://github.com/microsoft/go-mssqldb for detailed connection
## parameters, in particular, tls connections can be created like so:
## "encrypt=true;certificate=<cert>;hostNameInCertificate=<SqlServer host fqdn>"
servers = [
"Server=192.168.1.10;Port=1433;User Id=<user>;Password=<pw>;app name=telegraf;log=1;",
]
## Timeout for query execution operation
## Note that the timeout for queries is per query not per gather.
## 0 value means no timeout
# query_timeout = "0s"
## Authentication method
## valid methods: "connection_string", "AAD"
# auth_method = "connection_string"
## ClientID is the is the client ID of the user assigned identity of the VM
## that should be used to authenticate to the Azure SQL server.
# client_id = ""
## "database_type" enables a specific set of queries depending on the database type. If specified, it replaces azuredb = true/false and query_version = 2
## In the config file, the sql server plugin section should be repeated each with a set of servers for a specific database_type.
## Possible values for database_type are - "SQLServer" or "AzureSQLDB" or "AzureSQLManagedInstance" or "AzureSQLPool"
database_type = "SQLServer"
## A list of queries to include. If not specified, all the below listed queries are used.
include_query = []
## A list of queries to explicitly ignore.
exclude_query = ["SQLServerAvailabilityReplicaStates", "SQLServerDatabaseReplicaStates"]
## Force using the deprecated ADAL authentication method instead of the recommended
## MSAL method. Setting this option is not recommended and only exists for backward
## compatibility.
# use_deprecated_adal_authentication = false
## Queries enabled by default for database_type = "SQLServer" are -
## SQLServerPerformanceCounters, SQLServerWaitStatsCategorized, SQLServerDatabaseIO, SQLServerProperties, SQLServerMemoryClerks,
## SQLServerSchedulers, SQLServerRequests, SQLServerVolumeSpace, SQLServerCpu, SQLServerAvailabilityReplicaStates, SQLServerDatabaseReplicaStates,
## SQLServerRecentBackups
## Queries enabled by default for database_type = "AzureSQLDB" are -
## AzureSQLDBResourceStats, AzureSQLDBResourceGovernance, AzureSQLDBWaitStats, AzureSQLDBDatabaseIO, AzureSQLDBServerProperties,
## AzureSQLDBOsWaitstats, AzureSQLDBMemoryClerks, AzureSQLDBPerformanceCounters, AzureSQLDBRequests, AzureSQLDBSchedulers
## Queries enabled by default for database_type = "AzureSQLManagedInstance" are -
## AzureSQLMIResourceStats, AzureSQLMIResourceGovernance, AzureSQLMIDatabaseIO, AzureSQLMIServerProperties, AzureSQLMIOsWaitstats,
## AzureSQLMIMemoryClerks, AzureSQLMIPerformanceCounters, AzureSQLMIRequests, AzureSQLMISchedulers
## Queries enabled by default for database_type = "AzureSQLPool" are -
## AzureSQLPoolResourceStats, AzureSQLPoolResourceGovernance, AzureSQLPoolDatabaseIO, AzureSQLPoolWaitStats,
## AzureSQLPoolMemoryClerks, AzureSQLPoolPerformanceCounters, AzureSQLPoolSchedulers
## Queries enabled by default for database_type = "AzureArcSQLManagedInstance" are -
## AzureSQLMIDatabaseIO, AzureSQLMIServerProperties, AzureSQLMIOsWaitstats,
## AzureSQLMIMemoryClerks, AzureSQLMIPerformanceCounters, AzureSQLMIRequests, AzureSQLMISchedulers
## Following are old config settings
## You may use them only if you are using the earlier flavor of queries, however it is recommended to use
## the new mechanism of identifying the database_type there by use it's corresponding queries
## Optional parameter, setting this to 2 will use a new version
## of the collection queries that break compatibility with the original
## dashboards.
## Version 2 - is compatible from SQL Server 2012 and later versions and also for SQL Azure DB
# query_version = 2
## If you are using AzureDB, setting this to true will gather resource utilization metrics
# azuredb = false
## Toggling this to true will emit an additional metric called "sqlserver_telegraf_health".
## This metric tracks the count of attempted queries and successful queries for each SQL instance specified in "servers".
## The purpose of this metric is to assist with identifying and diagnosing any connectivity or query issues.
## This setting/metric is optional and is disabled by default.
# health_metric = false
## Possible queries across different versions of the collectors
## Queries enabled by default for specific Database Type
## database_type = AzureSQLDB by default collects the following queries
## - AzureSQLDBWaitStats
## - AzureSQLDBResourceStats
## - AzureSQLDBResourceGovernance
## - AzureSQLDBDatabaseIO
## - AzureSQLDBServerProperties
## - AzureSQLDBOsWaitstats
## - AzureSQLDBMemoryClerks
## - AzureSQLDBPerformanceCounters
## - AzureSQLDBRequests
## - AzureSQLDBSchedulers
## database_type = AzureSQLManagedInstance by default collects the following queries
## - AzureSQLMIResourceStats
## - AzureSQLMIResourceGovernance
## - AzureSQLMIDatabaseIO
## - AzureSQLMIServerProperties
## - AzureSQLMIOsWaitstats
## - AzureSQLMIMemoryClerks
## - AzureSQLMIPerformanceCounters
## - AzureSQLMIRequests
## - AzureSQLMISchedulers
## database_type = AzureSQLPool by default collects the following queries
## - AzureSQLPoolResourceStats
## - AzureSQLPoolResourceGovernance
## - AzureSQLPoolDatabaseIO
## - AzureSQLPoolOsWaitStats,
## - AzureSQLPoolMemoryClerks
## - AzureSQLPoolPerformanceCounters
## - AzureSQLPoolSchedulers
## database_type = SQLServer by default collects the following queries
## - SQLServerPerformanceCounters
## - SQLServerWaitStatsCategorized
## - SQLServerDatabaseIO
## - SQLServerProperties
## - SQLServerMemoryClerks
## - SQLServerSchedulers
## - SQLServerRequests
## - SQLServerVolumeSpace
## - SQLServerCpu
## - SQLServerRecentBackups
## and following as optional (if mentioned in the include_query list)
## - SQLServerAvailabilityReplicaStates
## - SQLServerDatabaseReplicaStates
## Maximum number of open connections to the database, 0 allows the driver to decide.
# max_open_connections = 0
## Maximum number of idle connections in the connection pool, 0 allows the driver to decide.
# max_idle_connections = 0有关 servers DSN 中可用的选项,请查看 驱动程序文档。
该插件支持 Windows AMD64 和 i386 上的命名管道和 LPC 协议进行连接。在其他平台上,这些协议不可用。有关如何指定协议,请参阅驱动程序文档中的 协议配置部分。
其他设置
您必须在要监控的每个 SQL Server 实例或 Azure SQL Managed 实例上使用以下脚本创建一个登录名
USE master;
GO
CREATE LOGIN [telegraf] WITH PASSWORD = N'mystrongpassword';
GO
GRANT VIEW SERVER STATE TO [telegraf];
GO
GRANT VIEW ANY DEFINITION TO [telegraf];
GO对于 Azure SQL Database,您需要 View Database State 权限,并可以直接在数据库中创建一个带密码的用户。
CREATE USER [telegraf] WITH PASSWORD = N'mystrongpassword';
GO
GRANT VIEW DATABASE STATE TO [telegraf];
GO对于 Azure SQL Elastic Pool,请遵循以下说明收集指标。在 master 逻辑数据库上,创建一个名为 'telegraf' 的 SQL 登录名,并将其分配给服务器级角色 ##MS_ServerStateReader##。
CREATE LOGIN [telegraf] WITH PASSWORD = N'mystrongpassword';
GO
ALTER SERVER ROLE ##MS_ServerStateReader##
ADD MEMBER [telegraf];
GO如果为 telegraf 登录名在池中的任何数据库中创建了用户,则可以从该数据库收集弹性池指标。为了使收集正常工作,该数据库必须保留在池中,且不得重命名。如果您计划将数据库添加到/从中删除,请为监控目的创建一个单独的数据库,该数据库将保留在池中。
为避免重复的监控数据,请勿从同一池中的多个数据库收集弹性池指标。
GO
CREATE USER [telegraf] FOR LOGIN telegraf;对于 SQL Server 的服务 SID 身份验证(仅限 Windows 服务安装),请查看 操作方法文档。在管理员命令提示符下,配置 telegraf 服务以使用服务 SID。
sc.exe sidtype "telegraf" unrestricted要创建 telegraf 服务的登录名,请运行以下脚本
USE master;
GO
CREATE LOGIN [NT SERVICE\telegraf] FROM WINDOWS;
GO
GRANT VIEW SERVER STATE TO [NT SERVICE\telegraf];
GO
GRANT VIEW ANY DEFINITION TO [NT SERVICE\telegraf];
GO从配置文件中的连接字符串中删除 User Id 和 Password 关键字,以使用 Windows 身份验证。
[[inputs.sqlserver]]
servers = ["Server=192.168.1.10;Port=1433;app name=telegraf;log=1;",]要设置可配置的超时,请在配置文件中的连接字符串中添加 timeout。
servers = [
"Server=192.168.1.10;Port=1433;User Id=<user>;Password=<pw>;app name=telegraf;log=1;dial timeout=30",
]使用托管标识的 Azure Active Directory (AAD) 身份验证
Azure SQL Database 实例支持两种主要的 身份验证 方法:SQL 身份验证和 AAD 身份验证。建议的做法是尽可能使用 AAD 身份验证,因为它是一种更现代的身份验证协议,可以更轻松地管理凭据和角色,并且可以消除在连接字符串中包含密码的需要。
如果 VM 分配了多个托管标识,您需要指定要用于向 SQL Server 进行身份验证的标识的 client_id。请查看 SQL Server 驱动程序文档以了解可用选项。
使用 MSI 的 Azure Active Directory (AAD) 身份验证
AAD 身份验证目前仅支持 Azure SQL Database 和 Azure SQL Managed Instance,不支持 SQL Server。要使用 MSI,请为监控 VM(连接到 SQL Server/数据库的 VM)上的“系统分配的托管标识”进行配置(使用 Azure 门户)。使用下面的脚本,在要监控的数据库上创建一个名为监控 VM 名称的用户作为主体。这可能需要允许从(运行以下 SQL 脚本的)客户端计算机 IP 地址在 SQL Server 资源上进行白名单设置。
如果 VM 上有多个分配的标识,您可以使用 user_assigned_id 参数指定 client_id。
EXECUTE ('IF EXISTS(SELECT * FROM sys.database_principals WHERE name = ''<Monitoring_VM_Name>'')
BEGIN
DROP USER [<Monitoring_VM_Name>]
END')
EXECUTE ('CREATE USER [<Monitoring_VM_Name>] FROM EXTERNAL PROVIDER')
EXECUTE ('GRANT VIEW DATABASE STATE TO [<Monitoring_VM_Name>]')在要监控的数据库的 SQL Server 资源上,转到“防火墙和虚拟网络”选项卡,并允许监控 VM 的 IP 地址。在监控 VM 上,使用以下格式更新 telegraf 配置文件中的数据库连接字符串。连接字符串仅提供服务器和数据库名称,但不提供密码(因为 VM 的系统分配的托管标识将用于身份验证)。身份验证方法必须设置为“AAD”。
servers = [
"Server=<Azure_SQL_Server_Name>.database.windows.net;Port=1433;Database=<Azure_SQL_Database_Name>;app name=telegraf;log=1;",
]
auth_method = "AAD"Metrics
为了向后兼容,此插件支持两个版本的指标查询。
版本 2 查询与旧查询不向后兼容。任何基于旧查询格式的仪表板或查询将无法在新格式下工作。版本 2 查询仅报告原始指标,未进行任何数学计算以计算增量。要图形化此数据,您必须在仪表板软件中计算增量。
查询版本 1
query_version 选项在 Telegraf v1.16 中被弃用。所有未来的开发都将在 database_type 配置选项下进行。
原始指标查询提供
- 性能计数器:来自
sys.dm_os_performance_counters的 1000+ 指标 - 性能指标:特殊的性能和比率指标
- 等待统计信息:来自
sys.dm_os_wait_stats的等待任务分类 - 内存管理器:来自
sys.dm_os_memory_clerks的内存细分 - 数据库大小:来自
sys.dm_io_virtual_file_stats的数据库大小趋势 - 数据库 IO:来自
sys.dm_io_virtual_file_stats的数据库 I/O - 数据库延迟:来自
sys.dm_io_virtual_file_stats的数据库延迟 - 数据库属性:来自
sys.databases的数据库属性、状态和恢复模型 - OS 卷:来自
sys.dm_os_volume_stats的可用、已用和总空间 - CPU:来自
sys.dm_os_ring_buffers的 CPU 使用率
如果您使用原始查询,所有统计信息都具有以下标签
servername:主机名:实例type:统计信息类型,便于过滤度量
查询版本 2
query_version 选项在 Telegraf v1.16 中被弃用。所有未来的开发都将在 database_type 配置选项下进行。
新的(版本 2)指标提供
数据库 IO:来自
sys.dm_io_virtual_file_stats的 IO 统计信息。内存管理器:来自
sys.dm_os_memory_clerks的内存管理器细分,大多数管理器都已赋予友好名称。性能计数器:来自
sys.dm_os_performance_counters的精选性能计数器列表。包含的一些重要指标- 活动:每秒事务数/数据库、每秒批处理请求数、阻塞进程等
- 可用性组:发送到副本的字节数、从副本接收的字节数、接收的日志字节数、日志发送队列、事务延迟等
- 日志活动:每秒刷新日志字节数、每秒刷新日志数、日志刷新等待时间
- 内存:PLE、每秒页面读取数、每秒页面写入数等
- TempDB:可用空间、版本存储使用情况、活动临时表、临时表创建速率等
- 资源调控器:CPU 使用率、每秒请求数、排队请求数、每个工作负载组的阻塞任务等
服务器属性:所有可能状态(在线、离线、可疑等)的数据库数量、CPU 计数、总物理内存、可用物理内存、SQL Server 服务正常运行时间、SQL Server SPID 和 SQL Server 版本。对于 Azure SQL,包括相关属性,如层、vCore 数量、内存等。
等待统计信息:等待时间(毫秒)、等待任务数、资源等待时间、信号等待时间、最大等待时间(毫秒)、等待类型和等待类别。等待项使用与查询存储相同的类别进行分类。
计划程序:此捕获
sys.dm_os_schedulers。SqlRequests:此捕获
sys.dm_exec_requests和sys.dm_exec_sessions的快照,为您提供正在运行的请求以及等待类型和阻塞会话。Telegraf 的监控请求将被忽略,除非它是主要阻塞者。还包括具有开放事务的睡眠会话。VolumeSpace:使用
sys.dm_os_volume_stats获取包含数据或日志文件的每个磁盘的总空间、已用空间和占用空间。(注意:即使启用,它也不会从 Azure SQL Database 或 SQL Managed Instance 获取任何数据)。以高频率(例如,每 10 秒)运行此操作没有意义,但也不会造成任何问题。Cpu:使用环形缓冲区(
sys.dm_os_ring_buffers)获取 CPU 数据,该表每分钟更新一次。(注意:即使启用,它也不会从 Azure SQL Database 或 SQL Managed Instance 获取任何数据)。为了允许按语句进行跟踪,此查询为每个查询生成一个唯一的标签。根据数据库工作负载,这可能会导致高基数序列。有关管理序列基数的方法,请参考 FAQ 。
Azure 托管实例
- 来自
sys.server_resource_stats的统计信息 - 来自
sys.dm_instance_resource_governance的资源调控统计信息
- 来自
Azure SQL Database 除其他统计信息外
- 来自
sys.dm_db_wait_stats的统计信息 - 来自
sys.dm_user_db_resource_governance的资源调控统计信息 - 来自
sys.dm_db_resource_stats的统计信息
- 来自
数据库类型“AzureSQLDB”
这些是 Azure SQL Database(单个数据库)的指标,与版本 2 非常相似,但为了维护原因、更好的测试能力和 DMV 的差异而分开。
- AzureSQLDBDatabaseIO:来自
sys.dm_io_virtual_file_stats的 IO 统计信息,包括资源调控时间、RBPEX、Hyperscale 的 IO。 - AzureSQLDBMemoryClerks:来自
sys.dm_os_memory_clerks的内存管理器细分。 - AzureSQLDBResourceGovernance:指示资源限制的相关属性,来自
sys.dm_user_db_resource_governance。 - AzureSQLDBPerformanceCounters:来自
sys.dm_os_performance_counters的精选性能计数器列表,包括 SQL Hyperscale 的云特定计数器。 - AzureSQLDBServerProperties:相关的 Azure SQL 相关属性,如层、vCore 数量、内存等,存储等。
- AzureSQLDBWaitstats:来自
sys.dm_db_wait_stats的等待时间(毫秒)、等待任务数、资源等待时间、信号等待时间、最大等待时间(毫秒)、等待类型和等待类别。等待项使用与查询存储相同的类别进行分类。这些等待项仅在语句结束时收集,且仅针对特定数据库。 - AzureSQLOsWaitstats:来自
sys.dm_os_wait_stats的等待时间(毫秒)、等待任务数、资源等待时间、信号等待时间、最大等待时间(毫秒)、等待类型和等待类别。等待项使用与查询存储相同的类别进行分类。这些等待项在发生时收集,并且是实例范围的。 - AzureSQLDBRequests:来自
sys.dm_exec_sessions和sys.dm_exec_requests的阻塞或有等待类型的请求。Telegraf 的监控请求将被忽略,除非它是主要阻塞者。 - AzureSQLDBSchedulers:此捕获
sys.dm_os_schedulers的快照。
数据库类型“AzureSQLManagedInstance”
这些是 Azure SQL Managed Instance 的指标,与版本 2 非常相似,但为了维护原因、更好的测试能力和 DMV 的差异而分开。
- AzureSQLMIDatabaseIO:来自
sys.dm_io_virtual_file_stats的 IO 统计信息,包括资源调控时间、RBPEX、Hyperscale 的 IO。 - AzureSQLMIMemoryClerks:来自
sys.dm_os_memory_clerks的内存管理器细分。 - AzureSQLMIResourceGovernance:指示资源限制的相关属性,来自
sys.dm_instance_resource_governance。 - AzureSQLMIPerformanceCounters:来自
sys.dm_os_performance_counters的精选性能计数器列表,包括 SQL Hyperscale 的云特定计数器。 - AzureSQLMIServerProperties:相关的 Azure SQL 相关属性,如层、vCore 数量、内存等,存储等。
- AzureSQLMIOsWaitstats:来自
sys.dm_os_wait_stats的等待时间(毫秒)、等待任务数、资源等待时间、信号等待时间、最大等待时间(毫秒)、等待类型和等待类别。等待项使用与查询存储相同的类别进行分类。这些等待项在发生时收集,并且是实例范围的。 - AzureSQLMIRequests:来自
sys.dm_exec_sessions和sys.dm_exec_requests的阻塞或有等待类型的请求。Telegraf 的监控请求将被忽略,除非它是主要阻塞者。 - AzureSQLMISchedulers:此捕获
sys.dm_os_schedulers的快照。
数据库类型“AzureSQLPool”
这些是 Azure SQL 的指标,用于监控弹性池级别的资源使用情况。这些指标需要额外的权限才能收集,请务必查看此文档中的附加设置部分。
- AzureSQLPoolResourceStats:返回 SQL Database 服务器中当前弹性池的资源使用情况统计信息。从
sys.dm_resource_governor_resource_pools_history_ex查询。 - AzureSQLPoolResourceGovernance:返回当前弹性池中资源调控机制使用的实际配置和容量设置。从
sys.dm_user_db_resource_governance查询。 - AzureSQLPoolDatabaseIO:返回池中每个数据库的数据和日志文件的 IO 统计信息。从
sys.dm_io_virtual_file_stats查询。 - AzureSQLPoolOsWaitStats:返回执行线程遇到的所有等待信息。从
sys.dm_os_wait_stats查询。 - AzureSQLPoolMemoryClerks:来自
sys.dm_os_memory_clerks的内存管理器细分。 - AzureSQLPoolPerformanceCounters:来自
sys.dm_os_performance_counters的精选性能计数器列表。注意:cntr_type 列值为 537003264 的性能计数器已以 0 到 100 之间的百分比格式返回。对于其他计数器,请查看 sys.dm_os_performance_counters 文档。 - AzureSQLPoolSchedulers:此捕获
sys.dm_os_schedulers的快照。
数据库类型“SQLServer”
- SQLServerDatabaseIO:来自
sys.dm_io_virtual_file_stats的 IO 统计信息 - SQLServerMemoryClerks:来自
sys.dm_os_memory_clerks的内存管理器细分,大多数管理器都已赋予友好名称。 - SQLServerPerformanceCounters:来自
sys.dm_os_performance_counters的精选性能计数器列表。包含的一些重要指标- 活动:每秒事务数/数据库、每秒批处理请求数、阻塞进程等
- 可用性组:发送到副本的字节数、从副本接收的字节数、接收的日志字节数、日志发送队列、事务延迟等
- 日志活动:每秒刷新日志字节数、每秒刷新日志数、日志刷新等待时间
- 内存:PLE、每秒页面读取数、每秒页面写入数等
- TempDB:可用空间、版本存储使用情况、活动临时表、临时表创建速率等
- 资源调控器:CPU 使用率、每秒请求数、排队请求数、每个工作负载组的阻塞任务等
- SQLServerProperties:所有可能状态(在线、离线、可疑等)的数据库数量、CPU 计数、总物理内存、可用物理内存、SQL Server 服务正常运行时间、SQL Server SPID 和 SQL Server 版本。对于 Azure SQL,包括相关属性,如层、vCore 数量、内存等。
- SQLServerWaitStatsCategorized:等待时间(毫秒)、等待任务数、资源等待时间、信号等待时间、最大等待时间(毫秒)、等待类型和等待类别。等待项使用与查询存储相同的类别进行分类。
- SQLServerSchedulers:此捕获
sys.dm_os_schedulers。 - SQLServerRequests:此捕获
sys.dm_exec_requests和sys.dm_exec_sessions的快照,为您提供正在运行的请求以及等待类型和阻塞会话。 - SQLServerVolumeSpace:使用
sys.dm_os_volume_stats获取包含数据或日志文件的每个磁盘的总空间、已用空间和占用空间。(注意:即使启用,它也不会从 Azure SQL Database 或 SQL Managed Instance 获取任何数据)。以高频率(例如,每 10 秒)运行此操作没有意义,但也不会造成任何问题。 - SQLServerCpu:使用环形缓冲区(
sys.dm_os_ring_buffers)获取 CPU 数据,该表每分钟更新一次。(注意:即使启用,它也不会从 Azure SQL Database 或 SQL Managed Instance 获取任何数据)。 - SQLServerAvailabilityReplicaStates:从
sys.dm_hadr_availability_replica_states收集高可用性/灾难恢复 (HADR) 设置的可用性副本状态信息。 - SQLServerDatabaseReplicaStates:从
sys.dm_hadr_database_replica_states收集高可用性/灾难恢复 (HADR) 设置的数据库副本状态信息。 - SQLServerRecentBackups:从
msdb.dbo.backupset收集最近的完整、差异和事务日志备份日期和大小。 - SQLServerPersistentVersionStore:从
sys.dm_tran_persistent_version_store_stats收集启用了加速数据库恢复的数据库的持久版本存储信息。
输出度量
核心原则是,从同一主 DMV 收集的所有数据都应放入同一个度量中,而不管 database_type。
sqlserver_database_io- 由 AzureSQLDBDatabaseIO、AzureSQLMIDatabaseIO、SQLServerDatabaseIO、DatabaseIO 使用,因为数据来自sys.dm_io_virtual_file_stats。sqlserver_waitstats- 由 WaitStatsCategorized、AzureSQLDBOsWaitstats、AzureSQLMIOsWaitstats 使用。sqlserver_server_properties- 由 SQLServerProperties、AzureSQLDBServerProperties、AzureSQLMIServerProperties、ServerProperties 使用。sqlserver_memory_clerks- 由 SQLServerMemoryClerks、AzureSQLDBMemoryClerks、AzureSQLMIMemoryClerks、MemoryClerk 使用。sqlserver_performance- 由 SQLServerPerformanceCounters、AzureSQLDBPerformanceCounters、AzureSQLMIPerformanceCounters、PerformanceCounters 使用。sys.dm_os_schedulers- 由 SQLServerSchedulers、AzureSQLDBServerSchedulers、AzureSQLMIServerSchedulers 使用。
以下性能计数器指标可以直接使用,无需进行增量计算
- SQLServer:Buffer Manager\Buffer cache hit ratio
- SQLServer:Buffer Manager\Page life expectancy
- SQLServer:Buffer Node\Page life expectancy
- SQLServer:Database Replica\Log Apply Pending Queue
- SQLServer:Database Replica\Log Apply Ready Queue
- SQLServer:Database Replica\Log Send Queue
- SQLServer:Database Replica\Recovery Queue
- SQLServer:Databases\Data File(s) Size (KB)
- SQLServer:Databases\Log File(s) Size (KB)
- SQLServer:Databases\Log File(s) Used Size (KB)
- SQLServer:Databases\XTP Memory Used (KB)
- SQLServer:General Statistics\Active Temp Tables
- SQLServer:General Statistics\Processes blocked
- SQLServer:General Statistics\Temp Tables For Destruction
- SQLServer:General Statistics\User Connections
- SQLServer:Memory Broker Clerks\Memory broker clerk size
- SQLServer:Memory Manager\Memory Grants Pending
- SQLServer:Memory Manager\Target Server Memory (KB)
- SQLServer:Memory Manager\Total Server Memory (KB)
- SQLServer:Resource Pool Stats\Active memory grant amount (KB)
- SQLServer:Resource Pool Stats\Disk Read Bytes/sec
- SQLServer:Resource Pool Stats\Disk Read IO Throttled/sec
- SQLServer:Resource Pool Stats\Disk Read IO/sec
- SQLServer:Resource Pool Stats\Disk Write Bytes/sec
- SQLServer:Resource Pool Stats\Disk Write IO Throttled/sec
- SQLServer:Resource Pool Stats\Disk Write IO/sec
- SQLServer:Resource Pool Stats\Used memory (KB)
- SQLServer:Transactions\Free Space in tempdb (KB)
- SQLServer:Transactions\Version Store Size (KB)
- SQLServer:User Settable\Query
- SQLServer:Workload Group Stats\Blocked tasks
- SQLServer:Workload Group Stats\CPU usage %
- SQLServer:Workload Group Stats\Queued requests
- SQLServer:Workload Group Stats\Requests completed/sec
版本 2 查询具有以下标签
sql_instance:物理主机和实例名称(主机名:实例)。database_name:对于 Azure SQLDB,database_name 表示 Azure SQL Database 的名称,因为服务器名称是逻辑结构。
运行状况指标
所有收集版本(版本 1、版本 2 和 database_type)都支持一个可选的插件运行状况指标,称为 sqlserver_telegraf_health。此指标跟踪与 SQL Server 的连接是否成功或失败。用户可以利用此指标来检测其 SQL Server 监控是否按预期工作。
在配置文件中,将 health_metric 切换为 true 将启用此指标的收集。默认情况下,此值为 false,并且不收集该指标。运行状况指标为配置文件中 servers 指定的每个连接发出一条记录。
运行状况指标发出以下标签
sql_instance- 连接字符串中指定的服务器名称。此值按原样从连接字符串中发出。如果无法从连接字符串解析服务器,则会发出一个固定的占位符值。database_name- 连接字符串中指定的数据库名称或(初始目录)。此值按原样从连接字符串中发出。如果无法从连接字符串解析数据库,则会发出一个固定的占位符值。
运行状况指标发出以下字段
attempted_queries- 为此连接尝试的查询数。successful_queries- 为此连接成功完成的查询数。database_type- 由database_type指定的数据库类型。如果database_type为空,则连接QueryVersion和AzureDB字段。
如果给定连接的 attempted_queries 和 successful_queries 不相等,则表示该连接未能成功收集某些指标。如果 successful_queries 为 0,则表示未成功收集任何指标。
示例输出
sqlserver_cpu_other_process_cpu{host="servername",measurement_db_type="SQLServer",sql_instance="SERVERNAME:INST"} 9
sqlserver_performance{counter="Log File(s) Size (KB)",counter_type="65792",host="servername",instance="instance_name",measurement_db_type="SQLServer",object="MSSQL$INSTANCE_NAME:Databases",sql_instance="SERVERNAME:INSTANCE_NAME"} 1.048568e+06此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 Telegraf 和本文档提出反馈和 bug 报告。要获取支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。