categraf/inputs/postgresql/dashboard.json

694 lines
19 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"name": "postgresql大盘",
"tags": "",
"configs": {
"var": [
{
"name": "server",
"type": "query",
"definition": "label_values(postgresql_datid,server)"
},
{
"name": "db",
"type": "query",
"definition": "label_values(postgresql_datid{server=\"$server\"},db)"
}
],
"panels": [
{
"type": "row",
"id": "7f38f76f-5e62-4660-a104-a7f1e6e73aeb",
"name": "pg_stat_database",
"collapsed": true,
"layout": {
"h": 1,
"w": 24,
"x": 0,
"y": 0,
"i": "7f38f76f-5e62-4660-a104-a7f1e6e73aeb",
"isResizable": false
},
"panels": []
},
{
"type": "stat",
"id": "65571b64-d249-40f1-8c57-ef826118c7a9",
"layout": {
"h": 4,
"w": 5,
"x": 0,
"y": 1,
"i": "65571b64-d249-40f1-8c57-ef826118c7a9",
"isResizable": true
},
"version": "2.0.0",
"datasourceCate": "prometheus",
"targets": [
{
"refId": "A",
"expr": "postgresql_numbackends{server=\"$server\",db=\"$db\"}",
"legend": "{{db}}"
}
],
"name": "连接数",
"custom": {
"textMode": "valueAndName",
"colorMode": "value",
"calc": "lastNotNull",
"valueField": "Value",
"colSpan": 1,
"textSize": {
"title": 32,
"value": 46
}
},
"options": {
"standardOptions": {},
"thresholds": {
"steps": [
{
"color": "#634CD9",
"value": null,
"type": "base"
}
]
}
}
},
{
"type": "stat",
"id": "bdf5299c-b621-4d98-bcf8-fa2ebd12b7d4",
"layout": {
"h": 4,
"w": 5,
"x": 5,
"y": 1,
"i": "0fb92b82-63c4-4edd-a452-fb51150757ab",
"isResizable": true
},
"version": "2.0.0",
"datasourceCate": "prometheus",
"targets": [
{
"refId": "A",
"expr": "postgresql_blks_hit{server=\"$server\",db=\"$db\"}/(postgresql_blks_hit{server=\"$server\",db=\"$db\"}+postgresql_blks_read{server=\"$server\",db=\"$db\"})",
"legend": "{{db}}"
}
],
"name": "缓存命中率",
"description": "命中率低于99%就需要适当调大shared buffer",
"custom": {
"textMode": "valueAndName",
"colorMode": "value",
"calc": "lastNotNull",
"valueField": "Value",
"colSpan": 1,
"textSize": {
"title": 32,
"value": 46
}
},
"options": {
"standardOptions": {
"util": "percentUnit"
},
"thresholds": {
"steps": [
{
"color": "#634CD9",
"value": null,
"type": "base"
}
]
}
}
},
{
"type": "stat",
"id": "2a559648-ad51-40d1-a6ff-f641467b57ea",
"layout": {
"h": 4,
"w": 5,
"x": 10,
"y": 1,
"i": "d78ae395-1d53-481a-9566-9f4913616330",
"isResizable": true
},
"version": "2.0.0",
"datasourceCate": "prometheus",
"targets": [
{
"refId": "A",
"expr": "postgresql_deadlocks{server=\"$server\",db=\"$db\"}",
"legend": "{{db}}"
}
],
"name": "死锁数",
"description": "死锁的数量,如果这个值很大说明业务逻辑有问题",
"custom": {
"textMode": "valueAndName",
"colorMode": "value",
"calc": "lastNotNull",
"valueField": "Value",
"colSpan": 1,
"textSize": {
"title": 32,
"value": 46
}
},
"options": {
"standardOptions": {
"util": "none"
},
"thresholds": {
"steps": [
{
"color": "#634CD9",
"value": null,
"type": "base"
}
]
}
}
},
{
"type": "stat",
"id": "87a74ec2-c6d2-49e8-a1ea-4dbf1252a33d",
"layout": {
"h": 4,
"w": 5,
"x": 15,
"y": 1,
"i": "a666823e-455f-459e-bbfe-169341b77ddc",
"isResizable": true
},
"version": "2.0.0",
"datasourceCate": "prometheus",
"targets": [
{
"refId": "A",
"expr": "postgresql_conflicts{server=\"$server\",db=\"$db\"}",
"legend": "{{db}}"
}
],
"name": "冲突数",
"description": "与恢复冲突取消的查询次数,只会在备机上发生",
"custom": {
"textMode": "valueAndName",
"colorMode": "value",
"calc": "lastNotNull",
"valueField": "Value",
"colSpan": 1,
"textSize": {
"title": 32,
"value": 46
}
},
"options": {
"standardOptions": {
"util": "none"
},
"thresholds": {
"steps": [
{
"color": "#634CD9",
"value": null,
"type": "base"
}
]
}
}
},
{
"targets": [
{
"refId": "A",
"expr": "increase(postgresql_xact_commit{server=\"$server\",db=\"$db\"}[5m])",
"legend": "commit"
},
{
"expr": "increase(postgresql_xact_rollback{server=\"$server\",db=\"$db\"}[5m])",
"refId": "B",
"legend": "rollback"
}
],
"name": "事务统计",
"description": "rollback 过多,则需要检查业务逻辑,表面业务逻辑存在问题",
"options": {
"tooltip": {
"mode": "all",
"sort": "none"
},
"legend": {
"displayMode": "hidden"
},
"standardOptions": {},
"thresholds": {
"steps": [
{
"color": "#634CD9",
"value": null,
"type": "base"
}
]
}
},
"custom": {
"drawStyle": "lines",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 0.5,
"gradientMode": "none",
"stack": "off"
},
"version": "2.0.0",
"type": "timeseries",
"layout": {
"h": 4,
"w": 12,
"x": 0,
"y": 5,
"i": "443aee8c-d1b8-485b-b74f-13fa58b6e7ae",
"isResizable": true
},
"id": "3dea2872-5904-4abf-b0f8-64afe82b617a"
},
{
"targets": [
{
"refId": "A",
"expr": "increase(postgresql_tup_returned{server=\"$server\",db=\"$db\"}[5m])",
"legend": "returned"
},
{
"expr": "increase(postgresql_tup_fetched{server=\"$server\",db=\"$db\"}[5m])",
"refId": "B",
"legend": "fetched"
}
],
"name": "数据查询统计",
"description": "returned ,代表执行查询遍历行数\nfetched代表返回给客户端的行数\nreturned 远大于 fetched代表查询效率低存在全表扫描应增加索引进行优化",
"options": {
"tooltip": {
"mode": "all",
"sort": "none"
},
"legend": {
"displayMode": "hidden"
},
"standardOptions": {},
"thresholds": {
"steps": [
{
"color": "#634CD9",
"value": null,
"type": "base"
}
]
}
},
"custom": {
"drawStyle": "lines",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 0.5,
"gradientMode": "none",
"stack": "off"
},
"version": "2.0.0",
"type": "timeseries",
"layout": {
"h": 4,
"w": 12,
"x": 12,
"y": 5,
"i": "8b85bc95-091a-4868-9bec-b495609d7a04",
"isResizable": true
},
"id": "dec2c25d-ae70-4e47-bc4f-6dbaa9e72683"
},
{
"targets": [
{
"refId": "A",
"expr": "increase(postgresql_tup_inserted{server=\"$server\",db=\"$db\"}[5m])",
"legend": "inserted"
},
{
"expr": "increase(postgresql_tup_updated{server=\"$server\",db=\"$db\"}[5m])",
"refId": "B",
"legend": "updated"
},
{
"expr": "increase(postgresql_tup_deleted{server=\"$server\",db=\"$db\"}[5m])",
"refId": "C",
"legend": "deleted"
}
],
"name": "数据更新统计",
"description": "",
"options": {
"tooltip": {
"mode": "all",
"sort": "none"
},
"legend": {
"displayMode": "hidden"
},
"standardOptions": {},
"thresholds": {
"steps": [
{
"color": "#634CD9",
"value": null,
"type": "base"
}
]
}
},
"custom": {
"drawStyle": "lines",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 0.5,
"gradientMode": "none",
"stack": "off"
},
"version": "2.0.0",
"type": "timeseries",
"layout": {
"h": 4,
"w": 12,
"x": 0,
"y": 9,
"i": "e08d94bb-1a72-4104-8ba0-11ab7317a192",
"isResizable": true
},
"id": "048d2652-40f1-42ab-a435-7e02d51c98c4"
},
{
"targets": [
{
"refId": "A",
"expr": "increase(postgresql_temp_files{server=\"$server\",db=\"$db\"}[5m])",
"legend": "temp_files"
},
{
"expr": "increase(postgresql_temp_bytes{server=\"$server\",db=\"$db\"}[5m])",
"refId": "B",
"legend": "temp_bytes"
}
],
"name": "生成临时文件统计",
"description": "temp_files较高说明存在很多排序hash,或者聚合这种操作可以增大work_mem减少临时文件的产生并且同时这些操作的性能也会有较大的提升",
"options": {
"tooltip": {
"mode": "all",
"sort": "none"
},
"legend": {
"displayMode": "hidden"
},
"standardOptions": {},
"thresholds": {
"steps": [
{
"color": "#634CD9",
"value": null,
"type": "base"
}
]
}
},
"custom": {
"drawStyle": "lines",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 0.5,
"gradientMode": "none",
"stack": "off"
},
"version": "2.0.0",
"type": "timeseries",
"layout": {
"h": 4,
"w": 12,
"x": 12,
"y": 9,
"i": "971c5838-7408-4ec7-ae5e-33dcd0f20210",
"isResizable": true
},
"id": "c89d1e4b-d8ad-402d-bee4-f6d362b4634a"
},
{
"targets": [
{
"refId": "A",
"expr": "increase(postgresql_blk_read_time{server=\"$server\",db=\"$db\"}[5m])",
"legend": "blk_read_time"
},
{
"expr": "increase(postgresql_blk_write_time{server=\"$server\",db=\"$db\"}[5m])",
"refId": "B",
"legend": "blk_write_time"
}
],
"name": "数据库读写时间统计",
"description": "数据库中花费在读取文件的时间,这个值很高说明内存较小,需要频繁从磁盘读入数据文件\n数据库中花费在写数据文件的时间pg中脏页一般写入page cache如果这个值较高则说明cache较小操作系统的cache需要更积极的写入",
"options": {
"tooltip": {
"mode": "all",
"sort": "none"
},
"legend": {
"displayMode": "hidden"
},
"standardOptions": {
"util": "milliseconds"
},
"thresholds": {
"steps": [
{
"color": "#634CD9",
"value": null,
"type": "base"
}
]
}
},
"custom": {
"drawStyle": "lines",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 0.5,
"gradientMode": "none",
"stack": "off"
},
"version": "2.0.0",
"type": "timeseries",
"layout": {
"h": 4,
"w": 24,
"x": 0,
"y": 13,
"i": "71e28edd-8961-4a7a-be78-3a9a526c89bb",
"isResizable": true
},
"id": "7ae2c26a-cc2b-435d-9a16-52722c37bedf"
},
{
"type": "row",
"id": "72575aba-dbf5-4a05-8bd6-64170bff617e",
"name": "pg_stat_bgwriter",
"collapsed": true,
"layout": {
"h": 1,
"w": 24,
"x": 0,
"y": 17,
"i": "72575aba-dbf5-4a05-8bd6-64170bff617e",
"isResizable": false
}
},
{
"targets": [
{
"refId": "A",
"expr": "increase(postgresql_checkpoints_timed{server=\"$server\",db=\"$db\"}[5m])",
"legend": "postgresql_checkpoints_timed"
},
{
"expr": "increase(postgresql_checkpoints_req{server=\"$server\",db=\"$db\"}[5m])",
"refId": "B",
"legend": "postgresql_checkpoints_req"
}
],
"name": "checkpoint分布",
"description": "postgresql_checkpoints_timed指超过checkpoint_timeout的时间后触发的检查点次数\npostgresql_checkpoints_req手动触发checkpoint或者因为WAL文件数量达到max_wal_size时也会增加如果这个值大于postgresql_checkpoints_timed说明checkpoint_timeout设置的不合理",
"options": {
"tooltip": {
"mode": "all",
"sort": "none"
},
"legend": {
"displayMode": "hidden"
},
"standardOptions": {
"util": "none"
},
"thresholds": {
"steps": [
{
"color": "#634CD9",
"value": null,
"type": "base"
}
]
}
},
"custom": {
"drawStyle": "lines",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 0.5,
"gradientMode": "none",
"stack": "off"
},
"version": "2.0.0",
"type": "timeseries",
"layout": {
"h": 5,
"w": 12,
"x": 0,
"y": 18,
"i": "c3d3ccee-719f-4280-8921-367ea5343849",
"isResizable": true
},
"id": "600a9687-0a1e-4531-b9bc-ccf8589566a2"
},
{
"targets": [
{
"refId": "A",
"expr": "increase(postgresql_checkpoint_write_time{server=\"$server\",db=\"$db\"}[5m])",
"legend": "checkpoint_write_time"
},
{
"expr": "increase(postgresql_checkpoint_sync_time{server=\"$server\",db=\"$db\"}[5m])",
"refId": "B",
"legend": "checkpoint_sync_time"
}
],
"name": "checkpoint 写文件时间分布",
"description": "checkpoint_write_time: 从shared buffer 中write到page cache花费的时间\ncheckpoint_sync_time : checkpoint调用fsync将脏数据刷到磁盘花费的时间如果这个值很长容易造成IO抖动需要增加checkpoint_timeout或者checkpoint_completion_target",
"options": {
"tooltip": {
"mode": "all",
"sort": "none"
},
"legend": {
"displayMode": "hidden"
},
"standardOptions": {
"util": "milliseconds"
},
"thresholds": {
"steps": [
{
"color": "#634CD9",
"value": null,
"type": "base"
}
]
}
},
"custom": {
"drawStyle": "lines",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 0.5,
"gradientMode": "none",
"stack": "off"
},
"version": "2.0.0",
"type": "timeseries",
"layout": {
"h": 5,
"w": 12,
"x": 12,
"y": 18,
"i": "178d8220-3c22-4ea3-909d-71c73fbb3a78",
"isResizable": true
},
"id": "561012f8-481a-482a-8504-4bdd8c62e8a6"
},
{
"targets": [
{
"refId": "A",
"expr": "increase(postgresql_buffers_checkpoint{server=\"$server\",db=\"$db\"}[5m])",
"legend": "buffers_checkpoint"
},
{
"expr": "increase(postgresql_buffers_clean{server=\"$server\",db=\"$db\"}[5m])",
"refId": "B",
"legend": "buffers_clean"
},
{
"expr": "increase(postgresql_buffers_backend{server=\"$server\",db=\"$db\"}[5m])",
"refId": "C",
"legend": "buffers_backend"
},
{
"expr": "increase(postgresql_buffers_backend_fsync{server=\"$server\",db=\"$db\"}[5m])",
"refId": "D",
"legend": "buffers_backend_fsync"
}
],
"name": "数据块写入分布",
"description": "buffers_checkpoint: checkpoint写数据块数量\nbuffers_cleanbgwriter写入数据块的数量\nbuffers_backend:通过backend写入的块数量, 此值过大代表shared buffer没有维护好后端进程不得不自己去进行刷盘的动作\nbuffers_backend_fsync: backend需要fsync的次数\n",
"options": {
"tooltip": {
"mode": "all",
"sort": "none"
},
"legend": {
"displayMode": "hidden"
},
"standardOptions": {
"util": "none"
},
"thresholds": {
"steps": [
{
"color": "#634CD9",
"value": null,
"type": "base"
}
]
}
},
"custom": {
"drawStyle": "lines",
"lineInterpolation": "smooth",
"lineWidth": 1,
"fillOpacity": 0.5,
"gradientMode": "none",
"stack": "off"
},
"version": "2.0.0",
"type": "timeseries",
"layout": {
"h": 5,
"w": 24,
"x": 0,
"y": 23,
"i": "23b6fc64-1a19-422e-b28e-453570af339c",
"isResizable": true
},
"id": "af9e2a7f-ce09-4de2-8625-e779c770d46d"
}
],
"version": "2.0.0"
}
}