文档文档

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_requestssys.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_sessionssys.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_sessionssys.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_requestssys.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 为空,则连接 QueryVersionAzureDB 字段。

如果给定连接的 attempted_queriessuccessful_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

此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2