Nightingale 集成 SQL Server 监控实战:Categraf 采集配置、DMV 权限与告警体系全解析

发布时间:2026/9/15 15:30:26
Nightingale 集成 SQL Server 监控实战:Categraf 采集配置、DMV 权限与告警体系全解析 Nightingale 集成 SQL Server 监控实战Categraf 采集配置、DMV 权限与告警体系全解析【免费下载链接】nightingaleNightingale is to monitoring and alerting what Grafana is to visualization.项目地址: https://gitcode.com/GitHub_Trending/ni/nightingaleNightingale 通过 Categraf 的 sqlserver 输入插件读取 SQL Server 的 DMVDynamic Management Views与性能计数器将实例健康度、性能指标、数据库状态等纳入统一监控。本文以仓库中 integrations/SQLServer/markdown/README.en_US.md 为核心脉络完整讲解监控账号的最小权限授权、采集器配置与验证方法并结合仓库内置的采集模板、告警规则与监控面板给出可直接落地的 SQL Server 监控方案。读完本文你将能独立完成一套基于 Nightingale 的 SQL Server 生产监控部署。SQL Server 采集原理DMV 与性能计数器Categraf 的 SQL Server 输入插件基于 Telegraf 的 SQL Server input 插件实现采集数据源来自两类系统对象DMV动态管理视图如sys.dm_os_performance_counters、sys.dm_io_virtual_file_stats等反映数据库文件 IO、等待统计、调度器状态等内部信息性能计数器如 Page life expectancy、Number of Deadlocks/sec、Batch Requests/sec 等 Windows/实例级计数器。仓库内的 SQL Server 采集模板 对采集机制做了详细说明插件通过database_type决定启用哪一组查询SQLServer类型默认采集以下查询集SQLServerPerformanceCounters实例级性能计数器SQLServerWaitStatsCategorized分类等待统计SQLServerDatabaseIO数据库文件 IOSQLServerProperties实例/数据库属性SQLServerMemoryClerks内存分类占用SQLServerSchedulers调度器状态SQLServerRequests当前请求SQLServerVolumeSpace卷空间SQLServerCpuCPU 使用SQLServerRecentBackups最近备份信息另有SQLServerAvailabilityReplicaStates、SQLServerDatabaseReplicaStates两个副本状态查询作为可选项默认不启用详见下文 exclude_query 说明。此外模板还提示旧版query_version 1/2参数已弃用应统一改用database_type机制。依据仓库证据该插件已在 SQL Server 2022 上完成真实数据采集验证见 README 开头说明模板中默认查询清单与参数语义均可在 sqlserver.toml 中逐条核对。创建只读监控账号为遵循最小权限原则SQL Server 侧只需为 Categraf 创建登录名并授予只读的服务器级权限即可满足 DMV 与性能计数器的读取需求。在master数据库执行USE [master]; GO CREATE LOGIN [categraf] WITH PASSWORD Nstrong-password; GO GRANT VIEW SERVER STATE TO [categraf]; GRANT VIEW ANY DEFINITION TO [categraf]; GO权限说明VIEW SERVER STATE允许读取服务器状态类 DMV 与性能计数器是采集指标的核心权限VIEW ANY DEFINITION允许查看元数据定义如表结构、存储过程定义部分查询需要读取对象元数据。SQL Server 2022 及以上的额外要求2022 起性能类 DMV 需要单独授予性能状态访问权限官方性能 DMV 说明否则采集会因权限不足失败GRANT VIEW SERVER PERFORMANCE STATE TO [categraf]; GO安全实践不要在文档或仓库中保存真实密码若企业安全策略要求更细粒度授权可结合实际启用的查询进一步收敛权限例如按需授予数据库级权限。Categraf 采集配置SQL Server 采集配置位于conf/input.sqlserver/sqlserver.toml仓库中对应的模板为 integrations/SQLServer/collect/sqlserver/sqlserver.toml。最小可用配置如下interval 15 [[instances]] servers [ Server10.19.1.1;Port1433;User Idcategraf;Passwordstrong-password;app namecategraf;log1; ] auth_method connection_string database_type SQLServer include_query [] exclude_query [ SQLServerAvailabilityReplicaStates, SQLServerDatabaseReplicaStates ] health_metric true关键参数说明参数取值/默认说明interval15秒采集周期模板中默认注释为 15servers连接字符串列表支持配置多个实例连接参数均可选默认主机为 localhost、默认端口 TCP 1433auth_methodconnection_string/AAD认证方式本地 SQL Server 用connection_stringAzure 场景可选 AADdatabase_typeSQLServer/AzureSQLDB/AzureSQLManagedInstance/AzureSQLPool决定启用哪一组查询替代旧的azuredb/query_version机制include_query空列表显式包含的查询留空表示使用该 database_type 的全部默认查询exclude_query两个副本查询显式排除的查询用于跳过不需要或权限受限的查询health_metric默认关闭开启后额外输出sqlserver_telegraf_health指标统计每个实例的查询尝试数与成功数辅助定位连接或查询问题连接字符串的关键字段Server实例地址IP 或 FQDN如10.19.1.1Port端口默认1433User Id/Password监控账号凭据app namecategraf应用名标记便于在 SQL Server 侧识别连接来源log1启用驱动日志便于排查连接层问题TLS 场景可追加encrypttrue;certificatecert;hostNameInCertificateSqlServer host fqdn对应 go-mssqldb 驱动参数。关于 exclude_query 与 Always OnSQLServerAvailabilityReplicaStates与SQLServerDatabaseReplicaStates两个查询默认被排除原因是未配置 Always On 可用性组时执行副本状态查询既无意义又可能触发权限或空结果问题。若实例配置了 Always On 且需要监控副本同步状态从exclude_query中删除这两项即可启用。多数据库类型共存配置注释还提示了一个实用技巧若需同时监控 SQL Server 与 Azure SQL 等多种数据库类型可在配置文件中重复[[instances]]段每段用各自的servers与database_type组合即可插件会按类型启用对应的查询集。验证采集是否成功配置完成后先用 Categraf 的自检命令验证./categraf --test --inputs sqlserver该命令会实际执行一次采集并输出指标重点确认两点指标sqlserver_up的值等于1表示实例可达且采集成功来自SQLServerProperties查询指标带有非空的sql_instance标签即Server...连接串对应的实例标识监控面板与告警模板都依赖该标签区分实例。特别注意仅验证 TCP 1433 端口可连接并不等于采集成功。连接通畅只能证明网络与端口正常权限不足、查询失败等问题仍会导致无指标产出必须以上述两条指标事实为准。配套的监控面板与告警规则仓库在采集模板之外还提供了开箱即用的可视化与告警资产可直接导入 Nightingale监控面板dashboards/sqlserver.json 是 SQL Server 专属面板版本 3.0.0覆盖实例资源总览、性能计数器、卷空间、数据库 IO 等维度其 PromQL 使用的指标与采集模板一一对应例如sqlserver_up{serverName$instance}实例存活sqlserver_performance_value{counterTotal Server Memory (KB),serverName$instance}内存sqlserver_performance_value{counterPage life expectancy,serverName$instance}页面生命周期sqlserver_performance_value{counterNumber of Deadlocks/sec,serverName$instance}死锁sqlserver_volume_space_available_space_bytes{serverName$instance}卷剩余空间sqlserver_cpu_sqlserver_process_cpu{serverName$instance}SQL Server 进程 CPU面板内置$instance变量其取值来自label_values(sqlserver_up, sql_instance)见面板配置var段即动态枚举所有被采集的实例天然支持多实例切换查看。告警规则alerts/sqlserver_by_categraf.json 内置了 12 条 SQL Server 告警规则覆盖实例可用性与性能瓶颈两大类关键规则及其 PromQL 如下告警PromQL严重级别实例不可达sqlserver_up 01P1存在 SUSPECT 状态数据库sqlserver_server_properties_db_suspect 01存在 OFFLINE 状态数据库sqlserver_server_properties_db_offline 02数据卷剩余空间不足sqlserver_volume_space_available_space_bytes / (sqlserver_volume_space_total_space_bytes 0) * 100 101事务日志使用率过高sqlserver_performance_value{counterPercent Log Used, instance!_Total, instance!Total} 851页面生命周期过短sqlserver_performance_value{counterPage life expectancy, objectSQLServer:Buffer Manager} 3002存在等待内存授予的查询sqlserver_performance_value{counterMemory Grants Pending} 02阻塞进程数过高sqlserver_performance_value{counterProcesses blocked} 52发生死锁increase(sqlserver_performance_value{counterNumber of Deadlocks/sec}[10m]) 02数据文件读延迟过高rate(sqlserver_database_io_read_latency_ms[5m]) / (rate(sqlserver_database_io_reads[5m]) 0) 502数据文件写延迟过高rate(sqlserver_database_io_write_latency_ms[5m]) / (rate(sqlserver_database_io_writes[5m]) 0) 502每条规则都内置了分级动作指引annotations例如实例不可达时先检查服务状态Linux 用systemctl status mssql-serverWindows 用Get-Service MSSQLSERVER、手工sqlcmd连通性测试、排查磁盘满/tempdb/证书过期等常见原因事务日志使用率过高时则指引用sys.databases.log_reuse_wait_desc定位日志不可复用的根因。这些规则默认处于disabled状态导入后需按实际需求启用。小结Nightingale Categraf 的 SQL Server 监控方案链路清晰SQL Server 侧按最小权限创建只读账号2022 及以上记得补授VIEW SERVER PERFORMANCE STATECategraf 侧通过database_type SQLServer开启 DMV 与性能计数器查询并以sqlserver_up 1sql_instance标签作为采集成功的事实依据。仓库内已配套 采集模板、监控面板 与 12 条告警规则导入后即可获得覆盖实例存活、数据库状态、磁盘空间、日志增长、死锁、阻塞与 IO 延迟的完整监控闭环让 SQL Server 的体检真正进入可量化、可告警、可追溯的运维体系。【免费下载链接】nightingaleNightingale is to monitoring and alerting what Grafana is to visualization.项目地址: https://gitcode.com/GitHub_Trending/ni/nightingale创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询