|
32 | 32 | }, |
33 | 33 | "id": 10, |
34 | 34 | "panels": [], |
35 | | - "title": "Lock blocks overview", |
| 35 | + "title": "Blocking overview", |
36 | 36 | "type": "row" |
37 | 37 | }, |
38 | 38 | { |
39 | 39 | "datasource": { |
40 | 40 | "type": "prometheus", |
41 | 41 | "uid": "P7A0D6631BB10B34F" |
42 | 42 | }, |
43 | | - "description": "Number of active sessions waiting on heavyweight lock acquisition.", |
| 43 | + "description": "Number of active lock conflicts (blocker→blocked pairs).", |
44 | 44 | "fieldConfig": { |
45 | 45 | "defaults": { |
46 | 46 | "color": { |
|
135 | 135 | "uid": "P7A0D6631BB10B34F" |
136 | 136 | }, |
137 | 137 | "editorMode": "code", |
138 | | - "expr": "count(pgwatch_lock_waits_blocked_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=\"$db_name\"}) or vector(0)", |
139 | | - "legendFormat": "Lock blocks", |
| 138 | + "expr": "count(pgwatch_lock_waits_blocked_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=~\"$db_name\"}) or vector(0)", |
| 139 | + "legendFormat": "Lock conflicts", |
140 | 140 | "range": true, |
141 | 141 | "refId": "A" |
142 | 142 | } |
143 | 143 | ], |
144 | | - "title": "Lock blocks count", |
| 144 | + "title": "Lock conflicts", |
145 | 145 | "type": "timeseries" |
146 | 146 | }, |
147 | 147 | { |
148 | 148 | "datasource": { |
149 | 149 | "type": "prometheus", |
150 | 150 | "uid": "P7A0D6631BB10B34F" |
151 | 151 | }, |
152 | | - "description": "Lock block duration over time, showing how long processes have been blocked by locks.", |
| 152 | + "description": "How long sessions have been waiting for locks.", |
153 | 153 | "fieldConfig": { |
154 | 154 | "defaults": { |
155 | 155 | "color": { |
|
241 | 241 | "uid": "P7A0D6631BB10B34F" |
242 | 242 | }, |
243 | 243 | "editorMode": "code", |
244 | | - "expr": "avg(pgwatch_lock_waits_blocked_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=\"$db_name\"})", |
| 244 | + "expr": "avg(pgwatch_lock_waits_blocked_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=~\"$db_name\"})", |
245 | 245 | "legendFormat": "Average wait time", |
246 | 246 | "range": true, |
247 | 247 | "refId": "A" |
|
252 | 252 | "uid": "P7A0D6631BB10B34F" |
253 | 253 | }, |
254 | 254 | "editorMode": "code", |
255 | | - "expr": "max(pgwatch_lock_waits_blocked_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=\"$db_name\"})", |
| 255 | + "expr": "max(pgwatch_lock_waits_blocked_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=~\"$db_name\"})", |
256 | 256 | "legendFormat": "Max wait time", |
257 | 257 | "range": true, |
258 | 258 | "refId": "B" |
259 | 259 | } |
260 | 260 | ], |
261 | | - "title": "Lock block duration", |
| 261 | + "title": "Wait duration", |
262 | 262 | "type": "timeseries" |
263 | 263 | }, |
264 | 264 | { |
265 | 265 | "datasource": { |
266 | 266 | "type": "prometheus", |
267 | 267 | "uid": "P7A0D6631BB10B34F" |
268 | 268 | }, |
269 | | - "description": "Lock blocks by lock type, showing which types of locks are causing the most contention.", |
| 269 | + "description": "Distribution of blocking events by lock type.", |
270 | 270 | "fieldConfig": { |
271 | 271 | "defaults": { |
272 | 272 | "color": { |
|
350 | 350 | "uid": "P7A0D6631BB10B34F" |
351 | 351 | }, |
352 | 352 | "editorMode": "code", |
353 | | - "expr": "count by (blocked_locktype) (pgwatch_lock_waits_blocked_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=\"$db_name\"})", |
| 353 | + "expr": "count by (blocked_locktype) (pgwatch_lock_waits_blocked_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=~\"$db_name\"})", |
354 | 354 | "legendFormat": "{{blocked_locktype}}", |
355 | 355 | "range": true, |
356 | 356 | "refId": "A" |
357 | 357 | } |
358 | 358 | ], |
359 | | - "title": "Lock blocks by lock type", |
| 359 | + "title": "By lock type", |
360 | 360 | "type": "timeseries" |
361 | 361 | }, |
362 | 362 | { |
363 | 363 | "datasource": { |
364 | 364 | "type": "prometheus", |
365 | 365 | "uid": "P7A0D6631BB10B34F" |
366 | 366 | }, |
367 | | - "description": "Blocker transaction duration over time, showing how long blocking transactions have been running.", |
| 367 | + "description": "How long blocking transactions have been running.", |
368 | 368 | "fieldConfig": { |
369 | 369 | "defaults": { |
370 | 370 | "color": { |
|
456 | 456 | "uid": "P7A0D6631BB10B34F" |
457 | 457 | }, |
458 | 458 | "editorMode": "code", |
459 | | - "expr": "avg(pgwatch_lock_waits_blocker_tx_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=\"$db_name\"})", |
460 | | - "legendFormat": "Average blocker tx duration", |
| 459 | + "expr": "avg(pgwatch_lock_waits_blocker_tx_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=~\"$db_name\"})", |
| 460 | + "legendFormat": "Avg blocker age", |
461 | 461 | "range": true, |
462 | 462 | "refId": "A" |
463 | 463 | }, |
|
467 | 467 | "uid": "P7A0D6631BB10B34F" |
468 | 468 | }, |
469 | 469 | "editorMode": "code", |
470 | | - "expr": "max(pgwatch_lock_waits_blocker_tx_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=\"$db_name\"})", |
471 | | - "legendFormat": "Max blocker tx duration", |
| 470 | + "expr": "max(pgwatch_lock_waits_blocker_tx_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=~\"$db_name\"})", |
| 471 | + "legendFormat": "Max blocker age", |
472 | 472 | "range": true, |
473 | 473 | "refId": "B" |
474 | 474 | } |
475 | 475 | ], |
476 | | - "title": "Blocker transaction duration", |
| 476 | + "title": "Blocker age", |
477 | 477 | "type": "timeseries" |
478 | 478 | }, |
479 | 479 | { |
480 | 480 | "datasource": { |
481 | 481 | "type": "prometheus", |
482 | 482 | "uid": "P7A0D6631BB10B34F" |
483 | 483 | }, |
484 | | - "description": "Lock blocks by table, showing which tables have the most lock contention.", |
| 484 | + "description": "Which tables have the most lock contention.", |
485 | 485 | "fieldConfig": { |
486 | 486 | "defaults": { |
487 | 487 | "color": { |
|
565 | 565 | "uid": "P7A0D6631BB10B34F" |
566 | 566 | }, |
567 | 567 | "editorMode": "code", |
568 | | - "expr": "count by (blocked_table) (pgwatch_lock_waits_blocked_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=\"$db_name\", blocked_table!=\"\"})", |
| 568 | + "expr": "count by (blocked_table) (pgwatch_lock_waits_blocked_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=~\"$db_name\", blocked_table!=\"\"})", |
569 | 569 | "legendFormat": "{{blocked_table}}", |
570 | 570 | "range": true, |
571 | 571 | "refId": "A" |
572 | 572 | } |
573 | 573 | ], |
574 | | - "title": "Lock blocks by table", |
| 574 | + "title": "By table", |
575 | 575 | "type": "timeseries" |
576 | 576 | }, |
577 | 577 | { |
|
584 | 584 | }, |
585 | 585 | "id": 11, |
586 | 586 | "panels": [], |
587 | | - "title": "Lock blocks details", |
| 587 | + "title": "Blocking tree", |
588 | 588 | "type": "row" |
589 | 589 | }, |
590 | 590 | { |
591 | 591 | "datasource": { |
592 | 592 | "type": "prometheus", |
593 | 593 | "uid": "P7A0D6631BB10B34F" |
594 | 594 | }, |
595 | | - "description": "Detailed lock block information showing blocked and blocking processes with their users, applications, lock types, tables, query IDs, and block durations.", |
| 595 | + "description": "Current blocking relationships with process details.", |
596 | 596 | "fieldConfig": { |
597 | 597 | "defaults": { |
598 | 598 | "color": { |
|
953 | 953 | }, |
954 | 954 | "editorMode": "code", |
955 | 955 | "exemplar": false, |
956 | | - "expr": "pgwatch_lock_waits_blocked_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=\"$db_name\"}", |
| 956 | + "expr": "pgwatch_lock_waits_blocked_ms{cluster=\"$cluster_name\", node_name=\"$node_name\", datname=~\"$db_name\"}", |
957 | 957 | "format": "table", |
958 | 958 | "instant": true, |
959 | 959 | "legendFormat": "__auto", |
960 | 960 | "range": false, |
961 | 961 | "refId": "A" |
962 | 962 | } |
963 | 963 | ], |
964 | | - "title": "Lock blocks details", |
| 964 | + "title": "Blocking tree", |
965 | 965 | "transformations": [ |
966 | 966 | { |
967 | 967 | "id": "organize", |
|
980 | 980 | }, |
981 | 981 | "indexByName": { |
982 | 982 | "Time": 0, |
983 | | - "datname": 1, |
984 | | - "blocked_pid": 2, |
985 | | - "blocked_user": 3, |
986 | | - "blocked_appname": 4, |
987 | | - "blocked_locktype": 5, |
988 | | - "blocked_mode": 6, |
989 | | - "blocked_table": 7, |
990 | | - "blocked_query_id": 8, |
991 | | - "Value": 9, |
992 | | - "blocker_pid": 10, |
993 | | - "blocker_user": 11, |
994 | | - "blocker_appname": 12, |
995 | | - "blocker_locktype": 13, |
996 | | - "blocker_mode": 14, |
997 | | - "blocker_table": 15, |
998 | | - "blocker_query_id": 16 |
| 983 | + "blocked_pid": 1, |
| 984 | + "blocker_pid": 2, |
| 985 | + "Value": 3, |
| 986 | + "blocked_user": 4, |
| 987 | + "blocker_user": 5, |
| 988 | + "blocked_appname": 6, |
| 989 | + "blocker_appname": 7, |
| 990 | + "blocked_locktype": 8, |
| 991 | + "blocker_locktype": 9, |
| 992 | + "blocked_mode": 10, |
| 993 | + "blocker_mode": 11, |
| 994 | + "blocked_table": 12, |
| 995 | + "blocker_table": 13, |
| 996 | + "blocked_query_id": 14, |
| 997 | + "blocker_query_id": 15, |
| 998 | + "datname": 16 |
999 | 999 | }, |
1000 | 1000 | "renameByName": {} |
1001 | 1001 | } |
|
1075 | 1075 | }, |
1076 | 1076 | "definition": "label_values(pgwatch_db_size_size_b{cluster=\"$cluster_name\", node_name=\"$node_name\", datname!=\"template1\"},datname)", |
1077 | 1077 | "hide": 0, |
1078 | | - "includeAll": false, |
| 1078 | + "includeAll": true, |
| 1079 | + "allValue": ".*", |
1079 | 1080 | "multi": false, |
1080 | 1081 | "name": "db_name", |
1081 | 1082 | "options": [], |
|
1106 | 1107 | ] |
1107 | 1108 | }, |
1108 | 1109 | "timezone": "", |
1109 | | - "title": "13. Lock blocks details", |
1110 | | - "uid": "lock-waits-details", |
| 1110 | + "title": "13. Lock contention", |
| 1111 | + "uid": "lock-contention", |
1111 | 1112 | "version": 1, |
1112 | 1113 | "weekStart": "" |
1113 | 1114 | } |
0 commit comments