Sql server 将查询结果输出到windows 性能计数器
Sql server 安装后本身会有监控项目到windows 的性能计数器,比如,cpu,内存,连接数之类的监控项目,而我们通过zabbix 来监控性能计数器中的值
目的:但比如我们总会有一些需求监控,比如监控当前数据库会话数或当前某个业务的数据值需要时刻动态监控它,这个就需要我们自定义监控了
思路: 1,将查询结果做成一个存储过程
1.1 存储过程里面将查询结果输出到性能计数器的实例值中
2,在Sql server 作业里面,新建一个作业来执行这个存储过程,然后每30秒执行一次
3,zabbix 自定义监控性能计数器值(如果不知道百度,本文针对有zabbix和Sql server 有基础的童鞋)
性能计数器:我们能输出到性能计数器中SQLServer:User Settable 这个计数器下的10个实例,User counter 1--User counter 10。
1,新建存储过程
USE [test]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- 数据库当前会话数
-- DROP PROCEDURE [dbo].[spUserCounter12_seesion_acount]
CREATE PROCEDURE [dbo].[USP_spUserCounter12_seesion_acount]
AS
BEGIN
SET NOCOUNT ON
DECLARE @seesionacount INT
SET @seesionacount = 0
select @seesionacount= count(*) from sys.dm_exec_sessions
select @seesionacount
EXECUTE sp_user_counter3 @seesionacount
-- 主要就是sp_user_counter3 这个是 性能计数器 SQLServer:User Settable(User counter 3)\Query 这个实例的值 ,我用的是User counter 3
SET NOCOUNT OFF
END
GO
2,新建作业
主要就是
常规:填写作业名称,调用的用户可以填写 sa
步骤,使用类型“Transact-SQL脚本”
然后命令里面,执行存储过程
计划:设置每天执行,每30秒执行一次
3,在zabbix_agent 配置文件中,自定义key 获取性能计数器SQLServer:User Settable(User counter 3)\Query 的值