Skip to content

Commit bb06d5a

Browse files
author
zhongming Fan
committed
kingbase: pg mode config
1 parent 9ef651e commit bb06d5a

File tree

1 file changed

+360
-0
lines changed

1 file changed

+360
-0
lines changed
Lines changed: 360 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,360 @@
1+
# 人大金仓数据库pg模式下查询结果是小写
2+
collector_name: kingbase_sql_pg
3+
4+
# Similar to global.min_interval, but applies to the queries defined by this collector only.
5+
#min_interval: 0s
6+
7+
metrics:
8+
# base
9+
- metric_name: kingbase_database_mode
10+
type: gauge
11+
help: '数据库模式'
12+
key_labels:
13+
- database_mode
14+
values:
15+
- value
16+
query: |
17+
SELECT 1 as value, database_mode FROM (SELECT current_setting('database_mode') as database_mode) t
18+
19+
# connection
20+
# 告警: conns超过max_connections的80%
21+
- metric_name: kingbase_exporter_current_connections
22+
type: gauge
23+
help: '数据库当前连接数'
24+
values:
25+
- conns
26+
query: |
27+
SELECT count(*) as conns FROM pg_stat_activity WHERE backend_type IN ('client backend', 'walsender')
28+
29+
- metric_name: kingbase_exporter_max_connections_limit
30+
type: gauge
31+
help: '数据库最大连接数限制'
32+
values:
33+
- max_connections
34+
query: |
35+
show max_connections
36+
37+
- metric_name: kingbase_exporter_active_connections
38+
type: gauge
39+
help: '数据库活动进程数'
40+
key_labels:
41+
- datname
42+
values:
43+
- active
44+
query_ref: connection_query
45+
46+
- metric_name: kingbase_exporter_idle_connections
47+
type: gauge
48+
help: '数据库空闲进程数'
49+
key_labels:
50+
- datname
51+
values:
52+
- idle
53+
query_ref: connection_query
54+
55+
- metric_name: kingbase_exporter_idle_in_trans_connections
56+
type: gauge
57+
help: '数据库空闲事务进程数'
58+
key_labels:
59+
- datname
60+
values:
61+
- idle_in_trans
62+
query_ref: connection_query
63+
64+
- metric_name: kingbase_exporter_slow_query_number
65+
type: gauge
66+
help: '慢查询数量'
67+
key_labels:
68+
- datname
69+
values:
70+
- slow_query
71+
query_ref: connection_query
72+
73+
- metric_name: kingbase_exporter_db_max_tran_duration
74+
type: gauge
75+
help: '数据库当前执行事务的最长时间(s)'
76+
key_labels:
77+
- datname
78+
values:
79+
- maxduration
80+
query_ref: connection_query
81+
82+
# buffer
83+
- metric_name: kingbase_exporter_buffers_clean
84+
type: gauge
85+
help: '后台编写器写入的缓冲区数'
86+
values:
87+
- buffers_clean
88+
query_ref: buffer_query
89+
90+
- metric_name: kingbase_exporter_buffers_checkpoint
91+
type: gauge
92+
help: '检查点期间写入的缓冲区数'
93+
values:
94+
- buffers_checkpoint
95+
query_ref: buffer_query
96+
97+
- metric_name: kingbase_exporter_buffers_backend
98+
type: gauge
99+
help: '后端直接写入的缓冲区数'
100+
values:
101+
- buffers_backend
102+
query_ref: buffer_query
103+
104+
# conflict
105+
- metric_name: kingbase_exporter_conflict_tablespaces
106+
type: gauge
107+
help: '由于删除表空间而取消的查询数'
108+
key_labels:
109+
- datname
110+
values:
111+
- confl_tablespace
112+
query_ref: conflict_query
113+
114+
- metric_name: kingbase_exporter_conflict_locks
115+
type: gauge
116+
help: '由于锁定超时而取消的查询数'
117+
key_labels:
118+
- datname
119+
values:
120+
- confl_lock
121+
query_ref: conflict_query
122+
123+
- metric_name: kingbase_exporter_conflict_snapshots
124+
type: gauge
125+
help: '由于旧快照而取消的查询数'
126+
key_labels:
127+
- datname
128+
values:
129+
- confl_snapshot
130+
query_ref: conflict_query
131+
132+
- metric_name: kingbase_exporter_conflict_bufferpins
133+
type: gauge
134+
help: '由于固定缓冲区而取消的查询数'
135+
key_labels:
136+
- datname
137+
values:
138+
- confl_bufferpin
139+
query_ref: conflict_query
140+
141+
- metric_name: kingbase_exporter_conflict_deadlock
142+
type: gauge
143+
help: '由于死锁而取消的查询数'
144+
key_labels:
145+
- datname
146+
values:
147+
- confl_deadlock
148+
query_ref: conflict_query
149+
150+
# disk
151+
- metric_name: kingbase_exporter_database_used_disk
152+
type: gauge
153+
help: '数据库使用的磁盘空间(bytes)'
154+
key_labels:
155+
- datname
156+
values:
157+
- sys_database_size
158+
query: |
159+
SELECT datname, sys_catalog.sys_database_size(datname) FROM sys_catalog.sys_database
160+
161+
# lock
162+
- metric_name: kingbase_exporter_locks_waiting_all
163+
type: gauge
164+
help: '当前等待封锁的进程数量'
165+
values:
166+
- count
167+
query: |
168+
SELECT count(*) FROM pg_locks WHERE granted = false
169+
170+
- metric_name: kingbase_exporter_locks_granted
171+
type: gauge
172+
help: '已授予的锁数量'
173+
key_labels:
174+
- datname
175+
- locktype
176+
values:
177+
- granted_count
178+
query_ref: lock_query
179+
180+
- metric_name: kingbase_exporter_locks_waiting
181+
type: gauge
182+
help: '等待授予的锁数量'
183+
key_labels:
184+
- datname
185+
- locktype
186+
values:
187+
- wait_count
188+
query_ref: lock_query
189+
190+
# cursor
191+
- metric_name: kingbase_exporter_opened_cursors
192+
type: gauge
193+
help: '打开的游标数'
194+
values:
195+
- count
196+
query: |
197+
SELECT count(*) FROM pg_cursors
198+
199+
# system
200+
- metric_name: kingbase_exporter_buffers_hit_percent
201+
type: gauge
202+
help: '缓冲区缓存命中率(%)'
203+
key_labels:
204+
- datname
205+
values:
206+
- cache_hit_percent
207+
query_ref: system_query
208+
209+
- metric_name: kingbase_exporter_deadlocks
210+
type: gauge
211+
help: '死锁数量'
212+
key_labels:
213+
- datname
214+
values:
215+
- deadlocks
216+
query_ref: system_query
217+
218+
- metric_name: kingbase_exporter_returned_tuples
219+
type: gauge
220+
help: '全表扫描记录数'
221+
key_labels:
222+
- datname
223+
values:
224+
- tup_returned
225+
query_ref: system_query
226+
227+
- metric_name: kingbase_exporter_xact_commit
228+
type: gauge
229+
help: '数据库中已提交的事务数'
230+
key_labels:
231+
- datname
232+
values:
233+
- xact_commit
234+
query_ref: system_query
235+
236+
- metric_name: kingbase_exporter_xact_rollback
237+
type: gauge
238+
help: '数据库中已回滚的事务数'
239+
key_labels:
240+
- datname
241+
values:
242+
- xact_rollback
243+
query_ref: system_query
244+
245+
- metric_name: kingbase_exporter_rollback_percent
246+
type: gauge
247+
help: '数据库的事务回滚率(%)'
248+
key_labels:
249+
- datname
250+
values:
251+
- rollback_percent
252+
query_ref: system_query
253+
254+
# age
255+
# 告警: age或 mxid_age超过2^32 – 30000000
256+
- metric_name: kingbase_exporter_database_frozen_age
257+
type: gauge
258+
help: '数据库中最老事务的年龄'
259+
key_labels:
260+
- datname
261+
values:
262+
- age
263+
query_ref: age_query
264+
265+
- metric_name: kingbase_exporter_database_min_mxid_age
266+
type: gauge
267+
help: '数据库中最小mxid的年龄'
268+
key_labels:
269+
- datname
270+
values:
271+
- mxid_age
272+
query_ref: age_query
273+
274+
# license
275+
- metric_name: kingbase_exporter_license_validdays
276+
type: gauge
277+
help: 'license剩余有效期(days)'
278+
values:
279+
- valid_days
280+
query: |
281+
SELECT get_license_validdays() AS valid_days
282+
283+
queries:
284+
- query_name: buffer_query
285+
query: |
286+
SELECT
287+
buffers_clean,
288+
buffers_checkpoint,
289+
buffers_backend,
290+
100 * (buffers_checkpoint / (buffers_checkpoint + buffers_clean + buffers_backend + 0.000001)) AS checkpoint_write_percent
291+
FROM
292+
pg_stat_bgwriter
293+
294+
- query_name: conflict_query
295+
query: |
296+
SELECT
297+
datname,
298+
confl_tablespace,
299+
confl_lock,
300+
confl_snapshot,
301+
confl_bufferpin,
302+
confl_deadlock
303+
FROM
304+
pg_stat_database_conflicts
305+
WHERE
306+
datname NOT IN ('template0', 'template1', 'template2')
307+
308+
- query_name: connection_query
309+
query: |
310+
select dtb.datname, count(act.pid) filter (where act.state = 'active') as active, count(act.pid) filter (where act.state = 'idle') as idle, count(act.pid) filter (where act.state = 'idle in transaction') as idle_in_trans, count(pid) filter(where act.STATE = 'active' AND now( ) - act.query_start > INTERVAL '1 second') AS slow_query, MAX(EXTRACT(EPOCH FROM now() - xact_start))::float AS maxduration from pg_stat_activity act right join pg_database dtb on act.datname = dtb.datname group by dtb.datname
311+
312+
- query_name: lock_query
313+
query: |
314+
SELECT
315+
case
316+
WHEN dtb.datname IS NULL THEN 'other'
317+
ELSE dtb.datname
318+
end,
319+
l.locktype,
320+
count(l.locktype) filter(
321+
WHERE
322+
granted = 't'
323+
) AS granted_count,
324+
count(l.locktype) filter(
325+
WHERE
326+
granted != 't'
327+
) AS wait_count
328+
FROM
329+
pg_locks l
330+
LEFT JOIN pg_database dtb ON l.database = dtb.oid
331+
GROUP BY
332+
l.locktype,
333+
dtb.datname,
334+
l.granted
335+
336+
- query_name: system_query
337+
query: |
338+
SELECT
339+
datname,
340+
CAST (
341+
blks_hit /(blks_read + blks_hit + 0.000001) * 100.0 AS NUMERIC (5, 2)
342+
) AS cache_hit_percent,
343+
deadlocks,
344+
tup_returned,
345+
xact_commit,
346+
xact_rollback,
347+
100.0 * xact_rollback /(xact_rollback + xact_commit + 0.000001) AS rollback_percent
348+
FROM
349+
pg_stat_database
350+
WHERE
351+
datname NOT IN ('template0', 'template1', 'template2')
352+
353+
- query_name: age_query
354+
query: |
355+
SELECT
356+
datname,
357+
age(datfrozenxid),
358+
mxid_age(datminmxid)
359+
FROM
360+
pg_database

0 commit comments

Comments
 (0)