兜兜    2021-06-30 13:28:31    2022-01-25 09:34:17   

sqlserver prometheus
创建监控数据的表 ```sql USE [distribution] GO /****** Object: Table [dbo].[tmpPendingResult] Script Date: 2021/6/30 13:19:50 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[tmpPendingResult]( [publisher] [nvarchar](200) NULL, [publisher_db] [nvarchar](200) NULL, [publication] [nvarchar](200) NULL, [subscriber] [nvarchar](200) NULL, [subscriber_db] [nvarchar](200) NULL, [subscription_type] [nvarchar](200) NULL, [pendingcmdcount] [bigint] NULL, [estimatedprocesstime] [bigint] NULL ) ON [PRIMARY] GO ``` 增加一个每分钟的定时作业 ```sql use distribution delete from distribution.dbo.tmpPendingResult declare my_cursor cursor for --my_cursor为游标的名称,随便起 SELECT a.publisher , a.publisher_db , a.publication , c.name AS subscriber , b.subscriber_db AS subscriber_db , CAST(b.subscription_type AS VARCHAR) AS subscription_type FROM dbo.MSreplication_monitordata a ( NOLOCK ) JOIN ( SELECT publication_id , subscriber_id , subscriber_db , subscription_type FROM MSsubscriptions (NOLOCK) GROUP BY publication_id , subscriber_id , subscriber_db , subscription_type ) b ON a.publication_id = b.publication_id JOIN sys.servers c ( NOLOCK ) ON b.subscriber_id = c.server_id WHERE a.agent_type = 1 --这是游标my_cursor的值,这里随便发挥看业务场景 --打开游标 open my_cursor --没什么好说的 --变量 declare @publisher NVARCHAR(200) declare @publisher_db NVARCHAR(200) declare @publication NVARCHAR(200) declare @subscriber NVARCHAR(200) declare @subscriber_db NVARCHAR(200) declare @subscription_type NVARCHAR(200) declare @pendingcmdcount BIGINT declare @estimatedprocesstime BIGINT declare @sql NVARCHAR(2000) --循环游标 fetch next from my_cursor into @publisher,@publisher_db,@publication,@subscriber,@subscriber_db,@subscription_type while @@FETCH_STATUS=0 --假如检索到了数据继续执行 begin set @sql='select @pendingcmdcount=pendingcmdcount,@estimatedprocesstime=estimatedprocesstime FROM OPENROWSET(''SQLOLEDB'',''Server='+@publisher+';Trusted_Connection=yes;'',''set fmtonly off;exec distribution..sp_replmonitorsubscriptionpendingcmds @publisher='''''+@publisher+''''',@publisher_db='''''+@publisher_db+''''',@publication='''''+@publication+''''',@subscriber='''''+@subscriber+''''',@subscriber_db='''''+@subscriber_db+''''',@subscription_type=0'')' exec sp_executesql @sql,N'@pendingcmdcount BIGINT out,@estimatedprocesstime BIGINT out',@pendingcmdcount out,@estimatedprocesstime out insert into distribution.dbo.tmpPendingResult values(@publisher,@publisher_db,@publication,@subscriber,@subscriber_db,@subscription_type,@pendingcmdcount,@estimatedprocesstime) fetch next from my_cursor into @publisher,@publisher_db,@publication,@subscriber,@subscriber_db,@subscription_type end--关闭释放游标 close my_cursor deallocate my_cursor ``` 1、开启Ad Hoc Distributed Queries组件,在sql查询编辑器中执行如下语句: ```sql exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure ``` 2、关闭Ad Hoc Distributed Queries组件,在sql查询编辑器中执行如下语句: ```sql exec sp_configure 'Ad Hoc Distributed Queries',0 reconfigure exec sp_configure 'show advanced options',0 reconfigure ``` 获取数据暴露metrics ```bash docker run -d \ --name prometheus-sql \ -p 8080:8080 \ -v /opt/docker/prometheus-sql/queries.yml:/queries.yml \ --link sqlagent:sqlagent \ dbhi/prometheus-sql ``` 修改queries.yml ```bash cat /opt/docker/prometheus-sql/queries.yml ``` ```yml - pendingcmdcount: driver: mssql connection: host: x.x.x.x port: 1433 user: monitor password: xxxxxx database: master sql: > select publisher,publisher_db,subscriber,subscriber_db,publication,sum(pendingcmdcount) as pe from distribution.dbo.tmpPendingResult group by publisher,publisher_db,subscriber,subscriber_db,publication data-field: pe interval: 30s ``` 查看暴露的参数 http://172.16.11.10:8080/metrics ``` ... query_result_pendingcmdcount{publication="xgj_w1_stl_dingding",publisher="mssql01",publisher_db="xgj_w1_stl",subscriber="172.16.13.3",subscriber_db="dingding_source"} 0 query_result_pendingcmdcount{publication="xgj_w1_stl_dingding_p1",publisher="mssql01",publisher_db="xgj_w1_stl",subscriber="172.16.13.3",subscriber_db="dingding_source"} 0 query_result_pendingcmdcount{publication="xgj_w1_stl_dingding_p2",publisher="mssql01",publisher_db="xgj_w1_stl",subscriber="172.16.13.3",subscriber_db="dingding_source"} 19 ... ```
阅读 540 评论 0 收藏 0
阅读 540
评论 0
收藏 0