Add metrics for tracking cache hit ratios
This commit is contained in:
parent
8fe81e3ab3
commit
7c395a80fe
@ -19,10 +19,12 @@ metrics:
|
|||||||
type: value
|
type: value
|
||||||
query:
|
query:
|
||||||
0: SHOW server_version_num
|
0: SHOW server_version_num
|
||||||
|
|
||||||
max_frozen_age:
|
max_frozen_age:
|
||||||
type: row
|
type: row
|
||||||
query:
|
query:
|
||||||
0: SELECT max(age(datfrozenxid)) AS xid_age, max(mxid_age(datminmxid)) AS mxid_age FROM pg_database
|
0: SELECT max(age(datfrozenxid)) AS xid_age, 0 AS mxid_age FROM pg_database
|
||||||
|
90600: SELECT max(age(datfrozenxid)) AS xid_age, max(mxid_age(datminmxid)) AS mxid_age FROM pg_database
|
||||||
|
|
||||||
# Per-database metrics
|
# Per-database metrics
|
||||||
db_stats:
|
db_stats:
|
||||||
@ -33,6 +35,11 @@ metrics:
|
|||||||
test_args:
|
test_args:
|
||||||
dbname: postgres
|
dbname: postgres
|
||||||
|
|
||||||
|
hit_ratios:
|
||||||
|
type: row
|
||||||
|
query:
|
||||||
|
0: SELECT sum(heap_blks_read)::float / sum(heap_blks_read + heap_blks_hit) AS avg_heap_hit_ratio, sum(idx_blks_hit)::float / sum(idx_blks_read + idx_blks_hit) AS avg_idx_hit_ratio, sum(toast_blks_hit)::float / sum(toast_blks_read + toast_blks_hit) AS avg_toast_hit_ratio, sum(tidx_blks_hit)::float / sum(tidx_blks_read + tidx_blks_hit) AS avg_tidx_hit_ratio FROM pg_statio_all_tables
|
||||||
|
|
||||||
# Debugging
|
# Debugging
|
||||||
ntables:
|
ntables:
|
||||||
type: value
|
type: value
|
||||||
|
|||||||
@ -656,7 +656,11 @@ def test_queries():
|
|||||||
# If the metric has arguments to use while testing, grab those
|
# If the metric has arguments to use while testing, grab those
|
||||||
args = metric.get("test_args", {})
|
args = metric.get("test_args", {})
|
||||||
# Run the query without the ability to retry.
|
# Run the query without the ability to retry.
|
||||||
res = sample_metric(dbname, name, args, retry=False)
|
try:
|
||||||
|
res = sample_metric(dbname, name, args, retry=False)
|
||||||
|
except MetricVersionError:
|
||||||
|
print("{} -> Unsupported for this version".format(name))
|
||||||
|
continue
|
||||||
# Compare the result to the provided sample results
|
# Compare the result to the provided sample results
|
||||||
# TODO
|
# TODO
|
||||||
print("{} -> {}".format(name, res))
|
print("{} -> {}".format(name, res))
|
||||||
@ -714,6 +718,7 @@ class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
|
|||||||
except LatestVersionCheckError as e:
|
except LatestVersionCheckError as e:
|
||||||
log.error("Failed to retrieve latest version information: {}".format(e))
|
log.error("Failed to retrieve latest version information: {}".format(e))
|
||||||
self._reply(503, "Failed to retrieve latest version info")
|
self._reply(503, "Failed to retrieve latest version info")
|
||||||
|
return
|
||||||
|
|
||||||
# Note: parse_qs returns the values as a list. Since we always expect
|
# Note: parse_qs returns the values as a list. Since we always expect
|
||||||
# single values, just grab the first from each.
|
# single values, just grab the first from each.
|
||||||
|
|||||||
@ -673,6 +673,98 @@ zabbix_export:
|
|||||||
value: '{#DBNAME}'
|
value: '{#DBNAME}'
|
||||||
- tag: Type
|
- tag: Type
|
||||||
value: Calculated
|
value: Calculated
|
||||||
|
- uuid: bb0690e123e94e35a9bbd0f05ee322b4
|
||||||
|
name: 'Database Hit Ratios for {#DBNAME}'
|
||||||
|
type: HTTP_AGENT
|
||||||
|
key: 'pgmon_db_hit_ratios[{#DBNAME}]'
|
||||||
|
history: '0'
|
||||||
|
value_type: TEXT
|
||||||
|
trends: '0'
|
||||||
|
url: 'http://localhost:{$AGENT_PORT}/hit_ratios'
|
||||||
|
query_fields:
|
||||||
|
- name: dbname
|
||||||
|
value: '{#DBNAME}'
|
||||||
|
tags:
|
||||||
|
- tag: Application
|
||||||
|
value: PostgreSQL
|
||||||
|
- tag: Database
|
||||||
|
value: '{#DBNAME}'
|
||||||
|
- uuid: e0edbaf6f98249a6b357ade2ab41a76a
|
||||||
|
name: 'Average heap hit ratio on {#DBNAME}'
|
||||||
|
type: DEPENDENT
|
||||||
|
key: 'pgmon_db_hit_ratio[heap,{#DBNAME}]'
|
||||||
|
delay: '0'
|
||||||
|
history: 90d
|
||||||
|
value_type: FLOAT
|
||||||
|
description: 'The cache (shared_buffers) hit ratio for heap entries for the given database'
|
||||||
|
preprocessing:
|
||||||
|
- type: JSONPATH
|
||||||
|
parameters:
|
||||||
|
- $.avg_heap_hit_ratio
|
||||||
|
master_item:
|
||||||
|
key: 'pgmon_db_hit_ratios[{#DBNAME}]'
|
||||||
|
tags:
|
||||||
|
- tag: Application
|
||||||
|
value: PostgreSQL
|
||||||
|
- tag: Database
|
||||||
|
value: '{#DBNAME}'
|
||||||
|
- uuid: e4956d433a47455ca0c00d67a0f59355
|
||||||
|
name: 'Average index hit ratio on {#DBNAME}'
|
||||||
|
type: DEPENDENT
|
||||||
|
key: 'pgmon_db_hit_ratio[index,{#DBNAME}]'
|
||||||
|
delay: '0'
|
||||||
|
history: 90d
|
||||||
|
value_type: FLOAT
|
||||||
|
description: 'The cache (shared_buffers) hit ratio for index entries for the given database'
|
||||||
|
preprocessing:
|
||||||
|
- type: JSONPATH
|
||||||
|
parameters:
|
||||||
|
- $.avg_idx_hit_ratio
|
||||||
|
master_item:
|
||||||
|
key: 'pgmon_db_hit_ratios[{#DBNAME}]'
|
||||||
|
tags:
|
||||||
|
- tag: Application
|
||||||
|
value: PostgreSQL
|
||||||
|
- tag: Database
|
||||||
|
value: '{#DBNAME}'
|
||||||
|
- uuid: 0335267c14a8410a80a16b38167efcb3
|
||||||
|
name: 'Average toast hit ratio on {#DBNAME}'
|
||||||
|
type: DEPENDENT
|
||||||
|
key: 'pgmon_db_hit_ratio[toast,{#DBNAME}]'
|
||||||
|
delay: '0'
|
||||||
|
history: 90d
|
||||||
|
value_type: FLOAT
|
||||||
|
description: 'The cache (shared_buffers) hit ratio for heap entries for the given database'
|
||||||
|
preprocessing:
|
||||||
|
- type: JSONPATH
|
||||||
|
parameters:
|
||||||
|
- $.avg_toast_hit_ratio
|
||||||
|
master_item:
|
||||||
|
key: 'pgmon_db_hit_ratios[{#DBNAME}]'
|
||||||
|
tags:
|
||||||
|
- tag: Application
|
||||||
|
value: PostgreSQL
|
||||||
|
- tag: Database
|
||||||
|
value: '{#DBNAME}'
|
||||||
|
- uuid: 3f7da45e351443528c6c36145d38f9b8
|
||||||
|
name: 'Average toast index hit ratio on {#DBNAME}'
|
||||||
|
type: DEPENDENT
|
||||||
|
key: 'pgmon_db_hit_ratio[toast_index,{#DBNAME}]'
|
||||||
|
delay: '0'
|
||||||
|
history: 90d
|
||||||
|
value_type: FLOAT
|
||||||
|
description: 'The cache (shared_buffers) hit ratio for toast index entries for the given database'
|
||||||
|
preprocessing:
|
||||||
|
- type: JSONPATH
|
||||||
|
parameters:
|
||||||
|
- $.avg_tidx_hit_ratio
|
||||||
|
master_item:
|
||||||
|
key: 'pgmon_db_hit_ratios[{#DBNAME}]'
|
||||||
|
tags:
|
||||||
|
- tag: Application
|
||||||
|
value: PostgreSQL
|
||||||
|
- tag: Database
|
||||||
|
value: '{#DBNAME}'
|
||||||
- uuid: 492b3cac15f348c2b85f97b69c114d1b
|
- uuid: 492b3cac15f348c2b85f97b69c114d1b
|
||||||
name: 'Database Stats for {#DBNAME}'
|
name: 'Database Stats for {#DBNAME}'
|
||||||
type: HTTP_AGENT
|
type: HTTP_AGENT
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user