Skip to content

Commit bf6eb4a

Browse files
authored
support dm,sqlserver monitoring metrics (#37)
1 parent f6ef357 commit bf6eb4a

File tree

3 files changed

+261
-29
lines changed

3 files changed

+261
-29
lines changed

collector/src/main/java/com/zmops/open/collector/collect/database/JdbcCommonCollect.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,8 @@ private String constructDatabaseUrl(JdbcProtocol jdbcProtocol) {
310310
break;
311311
case "sqlserver":
312312
url = "jdbc:sqlserver://" + jdbcProtocol.getHost() + ":" + jdbcProtocol.getPort()
313-
+ ";" + (jdbcProtocol.getDatabase() == null ? "" : "DatabaseName=" + jdbcProtocol.getDatabase());
313+
+ ";" + (jdbcProtocol.getDatabase() == null ? "" : "DatabaseName=" + jdbcProtocol.getDatabase())
314+
+ ";trustServerCertificate=true;";
314315
break;
315316
case "oracle":
316317
url = "jdbc:oracle:thin:@" + jdbcProtocol.getHost() + ":" + jdbcProtocol.getPort()

manager/src/main/resources/define/app/app-dm.yml

+201-22
Original file line numberDiff line numberDiff line change
@@ -44,23 +44,27 @@ metrics:
4444
# 指标组中的具体监控指标
4545
fields:
4646
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
47-
- field: PORT_NUM
47+
- field: instance_name
4848
type: 1
49-
- field: CTL_PATH
49+
- field: port
5050
type: 1
51-
- field: MAX_SESSIONS
51+
- field: system_path
52+
type: 1
53+
- field: max_sessions
5254
type: 0
5355
# (非必须)监控指标别名,与上面的指标名映射。用于采集接口数据字段不直接是最终指标名称,需要此别名做映射转换
5456
aliasFields:
57+
- INSTANCE_NAME
5558
- PORT_NUM
56-
- CTL_PATH
59+
- SYSTEM_PATH
5760
- MAX_SESSIONS
5861
# (非必须)指标计算表达式,与上面的别名一起作用,计算出最终需要的指标值
5962
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
6063
calculates:
61-
- PORT_NUM=PORT_NUM
62-
- CTL_PATH=CTL_PATH
63-
- MAX_SESSIONS=MAX_SESSIONS
64+
- instance_name=INSTANCE_NAME
65+
- port=PORT_NUM
66+
- system_path=SYSTEM_PATH
67+
- max_sessions=MAX_SESSIONS
6468
protocol: jdbc
6569
jdbc:
6670
# 主机host: ipv4 ipv6 域名
@@ -75,14 +79,25 @@ metrics:
7579
# SQL查询方式: oneRow, multiRow, columns
7680
queryType: columns
7781
# sql
78-
sql: select PARA_NAME, PARA_VALUE from SYS."V$DM_INI" where PARA_NAME = 'MAX_SESSIONS'or PARA_NAME = 'CTL_PATH' or PARA_NAME = 'PORT_NUM';
82+
sql: select PARA_NAME, PARA_VALUE from SYS."V$DM_INI" where PARA_NAME = 'INSTANCE_NAME' or PARA_NAME = 'MAX_SESSIONS' or PARA_NAME = 'SYSTEM_PATH' or PARA_NAME = 'PORT_NUM';
7983
url: ^_^url^_^
80-
- name: status
84+
85+
- name: instance
8186
priority: 1
8287
fields:
8388
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
89+
- field: name
90+
type: 1
91+
- field: host_name
92+
type: 1
93+
- field: db_version
94+
type: 1
95+
- field: svr_version
96+
type: 1
8497
- field: status
8598
type: 1
99+
- field: start_time
100+
type: 1
86101
protocol: jdbc
87102
jdbc:
88103
# 主机host: ipv4 ipv6 域名
@@ -97,9 +112,33 @@ metrics:
97112
# SQL查询方式: oneRow, multiRow, columns
98113
queryType: oneRow
99114
# sql
100-
sql: SELECT status$ as status FROM v$instance;
115+
sql: SELECT status$ as status, name, host_name, svr_version, db_version, start_time FROM v$instance;
101116
url: ^_^url^_^
102117

118+
- name: sessions
119+
priority: 1
120+
fields:
121+
- field: state
122+
type: 1
123+
instance: true
124+
- field: num
125+
type: 0
126+
protocol: jdbc
127+
jdbc:
128+
# 主机host: ipv4 ipv6 域名
129+
host: ^_^host^_^
130+
# 端口
131+
port: ^_^port^_^
132+
platform: dm
133+
username: ^_^username^_^
134+
password: ^_^password^_^
135+
database: ^_^database^_^
136+
timeout: ^_^timeout^_^
137+
# SQL查询方式: oneRow, multiRow, columns
138+
queryType: multiRow
139+
# sql
140+
sql: select count(*) AS num, state from v$sessions GROUP BY state;
141+
url: ^_^url^_^
103142

104143
- name: thread
105144
priority: 2
@@ -109,19 +148,10 @@ metrics:
109148
type: 0
110149
- field: dm_io_thd
111150
type: 0
112-
- field: dm_quit_thd
151+
- field: dm_tskwrk_thd
152+
type: 0
153+
- field: dm_wrkgrp_thd
113154
type: 0
114-
# (非必须)监控指标别名,与上面的指标名映射。用于采集接口数据字段不直接是最终指标名称,需要此别名做映射转换
115-
aliasFields:
116-
- dm_sql_thd
117-
- dm_io_thd
118-
- dm_quit_thd
119-
# (非必须)指标计算表达式,与上面的别名一起作用,计算出最终需要的指标值
120-
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
121-
calculates:
122-
- dm_sql_thd=dm_sql_thd
123-
- dm_io_thd=dm_io_thd
124-
- dm_quit_thd=dm_quit_thd
125155
protocol: jdbc
126156
jdbc:
127157
# 主机host: ipv4 ipv6 域名
@@ -140,3 +170,152 @@ metrics:
140170
url: ^_^url^_^
141171

142172

173+
- name: tablespace
174+
priority: 2
175+
fields:
176+
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
177+
- field: name
178+
type: 1
179+
- field: size
180+
type: 0
181+
unit: 'MB'
182+
- field: used
183+
type: 0
184+
unit: 'MB'
185+
- field: usage
186+
type: 0
187+
unit: '%'
188+
- field: free
189+
type: 0
190+
unit: 'MB'
191+
- field: max_block
192+
type: 0
193+
unit: 'MB'
194+
protocol: jdbc
195+
jdbc:
196+
# 主机host: ipv4 ipv6 域名
197+
host: ^_^host^_^
198+
# 端口
199+
port: ^_^port^_^
200+
platform: dm
201+
username: ^_^username^_^
202+
password: ^_^password^_^
203+
database: ^_^database^_^
204+
timeout: ^_^timeout^_^
205+
# SQL查询方式: oneRow, multiRow, columns
206+
queryType: multiRow
207+
# sql
208+
sql: SELECT Upper(F.TABLESPACE_NAME) "name", D.TOT_GROOTTE_MB "size", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "used", To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99') "usage", F.TOTAL_BYTES "free", F.MAX_BYTES "max_block" FROM ( SELECT TABLESPACE_NAME, Round(Sum(BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES, Round(Max(BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, ( SELECT DD.TABLESPACE_NAME, Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 2 DESC;
209+
url: ^_^url^_^
210+
211+
- name: checkpoint
212+
priority: 2
213+
fields:
214+
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
215+
- field: last_begin_time
216+
type: 1
217+
- field: last_end_time
218+
type: 1
219+
protocol: jdbc
220+
jdbc:
221+
# 主机host: ipv4 ipv6 域名
222+
host: ^_^host^_^
223+
# 端口
224+
port: ^_^port^_^
225+
platform: dm
226+
username: ^_^username^_^
227+
password: ^_^password^_^
228+
database: ^_^database^_^
229+
timeout: ^_^timeout^_^
230+
# SQL查询方式: oneRow, multiRow, columns
231+
queryType: oneRow
232+
# sql
233+
sql: select last_begin_time, last_end_time from V$CKPT;
234+
url: ^_^url^_^
235+
236+
- name: unsubmitted_trx_table
237+
priority: 2
238+
fields:
239+
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
240+
- field: object_name
241+
type: 1
242+
instance: true
243+
- field: sess_id
244+
type: 1
245+
- field: trx_id
246+
type: 1
247+
protocol: jdbc
248+
jdbc:
249+
# 主机host: ipv4 ipv6 域名
250+
host: ^_^host^_^
251+
# 端口
252+
port: ^_^port^_^
253+
platform: dm
254+
username: ^_^username^_^
255+
password: ^_^password^_^
256+
database: ^_^database^_^
257+
timeout: ^_^timeout^_^
258+
# SQL查询方式: oneRow, multiRow, columns
259+
queryType: multiRow
260+
# sql
261+
sql: SELECT b.object_name, c.sess_id, a.trx_id FROM v$lock a, dba_objects b, v$sessions c WHERE a.table_id = b.object_id AND ltype = 'OBJECT' AND a.trx_id = c.trx_id;
262+
url: ^_^url^_^
263+
264+
- name: buffer_pool
265+
priority: 2
266+
fields:
267+
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
268+
- field: name
269+
type: 1
270+
instance: true
271+
- field: n_pages
272+
type: 0
273+
- field: free
274+
type: 0
275+
- field: n_discard64
276+
type: 0
277+
protocol: jdbc
278+
jdbc:
279+
# 主机host: ipv4 ipv6 域名
280+
host: ^_^host^_^
281+
# 端口
282+
port: ^_^port^_^
283+
platform: dm
284+
username: ^_^username^_^
285+
password: ^_^password^_^
286+
database: ^_^database^_^
287+
timeout: ^_^timeout^_^
288+
# SQL查询方式: oneRow, multiRow, columns
289+
queryType: multiRow
290+
# sql
291+
sql: SELECT name, n_pages, free, n_discard64 FROM v$bufferpool;
292+
url: ^_^url^_^
293+
294+
- name: buffer_hit_ratio
295+
priority: 2
296+
fields:
297+
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
298+
- field: name
299+
type: 1
300+
instance: true
301+
- field: sf_get_page_size
302+
type: 0
303+
- field: rat_hit
304+
type: 0
305+
unit: '%'
306+
protocol: jdbc
307+
jdbc:
308+
# 主机host: ipv4 ipv6 域名
309+
host: ^_^host^_^
310+
# 端口
311+
port: ^_^port^_^
312+
platform: dm
313+
username: ^_^username^_^
314+
password: ^_^password^_^
315+
database: ^_^database^_^
316+
timeout: ^_^timeout^_^
317+
# SQL查询方式: oneRow, multiRow, columns
318+
queryType: multiRow
319+
# sql
320+
sql: SELECT name, sum(page_size)*sf_get_page_size sf_get_page_size, sum(rat_hit) /count(*) rat_hit FROM v$bufferpool group by name;
321+
url: ^_^url^_^

manager/src/main/resources/define/app/app-sqlserver.yml

+58-6
Original file line numberDiff line numberDiff line change
@@ -126,13 +126,22 @@ metrics:
126126
sql: select counter_name, cntr_value from sys.dm_os_performance_counters where object_name = 'SQLServer:Buffer Manager';
127127
url: ^_^url^_^
128128

129-
- name: connection
129+
- name: statistics
130130
priority: 1
131131
fields:
132-
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
133132
- field: user_connection
134133
type: 0
135-
unit: 连接数
134+
- field: processes_blocked
135+
type: 0
136+
# (非必须)监控指标别名,与上面的指标名映射。用于采集接口数据字段不直接是最终指标名称,需要此别名做映射转换
137+
aliasFields:
138+
- User Connections
139+
- Processes blocked
140+
# (非必须)指标计算表达式,与上面的别名一起作用,计算出最终需要的指标值
141+
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
142+
calculates:
143+
- user_connection=User Connections
144+
- processes_blocked=Processes blocked
136145
protocol: jdbc
137146
jdbc:
138147
# 主机host: ipv4 ipv6 域名
@@ -145,7 +154,50 @@ metrics:
145154
database: ^_^database^_^
146155
timeout: ^_^timeout^_^
147156
# SQL查询方式: oneRow, multiRow, columns
148-
queryType: oneRow
157+
queryType: columns
149158
# sql
150-
sql: SELECT cntr_value as user_connection FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:General Statistics' AND counter_name = 'User Connections';
151-
url: ^_^url^_^
159+
sql: SELECT counter_name, cntr_value FROM sys.dm_os_performance_counters WHERE object_name LIKE '%General Statistics%';
160+
url: ^_^url^_^
161+
162+
- name: resource_pool
163+
priority: 1
164+
fields:
165+
- field: used_memory
166+
type: 0
167+
unit: 'KB'
168+
- field: cpu_util
169+
type: 0
170+
unit: '%'
171+
- field: disk_read_io
172+
type: 0
173+
- field: disk_write_io
174+
type: 0
175+
# (非必须)监控指标别名,与上面的指标名映射。用于采集接口数据字段不直接是最终指标名称,需要此别名做映射转换
176+
aliasFields:
177+
- Used memory (KB)
178+
- CPU usage %
179+
- Disk Read IO/sec
180+
- Disk Write IO/sec
181+
# (非必须)指标计算表达式,与上面的别名一起作用,计算出最终需要的指标值
182+
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
183+
calculates:
184+
- used_memory=Used memory (KB)
185+
- cpu_util=CPU usage %
186+
- disk_read_io=Disk Read IO/sec
187+
- disk_write_io=Disk Write IO/sec
188+
protocol: jdbc
189+
jdbc:
190+
# 主机host: ipv4 ipv6 域名
191+
host: ^_^host^_^
192+
# 端口
193+
port: ^_^port^_^
194+
platform: sqlserver
195+
username: ^_^username^_^
196+
password: ^_^password^_^
197+
database: ^_^database^_^
198+
timeout: ^_^timeout^_^
199+
# SQL查询方式: oneRow, multiRow, columns
200+
queryType: columns
201+
# sql
202+
sql: SELECT counter_name, cntr_value FROM sys.dm_os_performance_counters WHERE object_name LIKE '%Resource Pool Stats%';
203+
url: ^_^url^_^

0 commit comments

Comments
 (0)