some grafana
This commit is contained in:
parent
88e80f4107
commit
3b257aadab
6 changed files with 61 additions and 104 deletions
|
@ -101,11 +101,11 @@ for dashboard_id, monitored_node in enumerate(monitored_nodes, start=1):
|
||||||
dashboard['title'] = monitored_node.name
|
dashboard['title'] = monitored_node.name
|
||||||
dashboard['uid'] = monitored_node.metadata.get('id')
|
dashboard['uid'] = monitored_node.metadata.get('id')
|
||||||
panel_id = count(start=1)
|
panel_id = count(start=1)
|
||||||
|
|
||||||
for row_id, row_name in enumerate(sorted(monitored_node.metadata.get('grafana_rows')), start=1):
|
for row_id, row_name in enumerate(sorted(monitored_node.metadata.get('grafana_rows')), start=1):
|
||||||
with open(repo.path.join([f'data/grafana/rows/{row_name}.py'])) as file:
|
with open(repo.path.join([f'data/grafana/rows/{row_name}.py'])) as file:
|
||||||
row = eval(file.read())
|
row = eval(file.read())
|
||||||
|
|
||||||
for panel_in_row, (panel_name, panel_config) in enumerate(row.items()):
|
for panel_in_row, (panel_name, panel_config) in enumerate(row.items()):
|
||||||
panel = deepcopy(panel_template)
|
panel = deepcopy(panel_template)
|
||||||
panel['id'] = next(panel_id)
|
panel['id'] = next(panel_id)
|
||||||
|
@ -113,7 +113,7 @@ for dashboard_id, monitored_node in enumerate(monitored_nodes, start=1):
|
||||||
panel['gridPos']['w'] = 24 // len(row)
|
panel['gridPos']['w'] = 24 // len(row)
|
||||||
panel['gridPos']['x'] = (24 // len(row)) * panel_in_row
|
panel['gridPos']['x'] = (24 // len(row)) * panel_in_row
|
||||||
panel['gridPos']['y'] = (row_id - 1) * panel['gridPos']['h']
|
panel['gridPos']['y'] = (row_id - 1) * panel['gridPos']['h']
|
||||||
|
|
||||||
if 'display_name' in panel_config:
|
if 'display_name' in panel_config:
|
||||||
panel['fieldConfig']['defaults']['displayName'] = '${'+panel_config['display_name']+'}'
|
panel['fieldConfig']['defaults']['displayName'] = '${'+panel_config['display_name']+'}'
|
||||||
|
|
||||||
|
@ -127,13 +127,17 @@ for dashboard_id, monitored_node in enumerate(monitored_nodes, start=1):
|
||||||
panel['fieldConfig']['defaults']['min'] = panel_config['min']
|
panel['fieldConfig']['defaults']['min'] = panel_config['min']
|
||||||
if 'max' in panel_config:
|
if 'max' in panel_config:
|
||||||
panel['fieldConfig']['defaults']['max'] = panel_config['max']
|
panel['fieldConfig']['defaults']['max'] = panel_config['max']
|
||||||
|
if 'soft_max' in panel_config:
|
||||||
|
panel['fieldConfig']['defaults']['custom']['axisSoftMax'] = panel_config['soft_max']
|
||||||
|
|
||||||
if 'legend' in panel_config:
|
if 'legend' in panel_config:
|
||||||
panel['options']['legend'].update(panel_config['legend'])
|
panel['options']['legend'].update(panel_config['legend'])
|
||||||
|
|
||||||
if 'tooltip' in panel_config:
|
if 'tooltip' in panel_config:
|
||||||
panel['options']['tooltip']['mode'] = panel_config['tooltip']
|
panel['options']['tooltip']['mode'] = panel_config['tooltip']
|
||||||
|
if panel_config['tooltip'] == 'multi':
|
||||||
|
panel['options']['tooltip']['sort'] = 'desc'
|
||||||
|
|
||||||
for query_name, query_config in panel_config['queries'].items():
|
for query_name, query_config in panel_config['queries'].items():
|
||||||
panel['targets'].append({
|
panel['targets'].append({
|
||||||
'refId': query_name,
|
'refId': query_name,
|
||||||
|
@ -150,13 +154,13 @@ for dashboard_id, monitored_node in enumerate(monitored_nodes, start=1):
|
||||||
function=query_config.get('function', None),
|
function=query_config.get('function', None),
|
||||||
).strip()
|
).strip()
|
||||||
})
|
})
|
||||||
|
|
||||||
dashboard['panels'].append(panel)
|
dashboard['panels'].append(panel)
|
||||||
|
|
||||||
files[f'/var/lib/grafana/dashboards/{monitored_node.name}.json'] = {
|
files[f'/var/lib/grafana/dashboards/{monitored_node.name}.json'] = {
|
||||||
'content': json.dumps(dashboard, indent=4),
|
'content': json.dumps(dashboard, indent=4),
|
||||||
'triggers': [
|
'triggers': [
|
||||||
'svc_systemd:grafana-server:restart',
|
'svc_systemd:grafana-server:restart',
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,6 @@ defaults = {
|
||||||
'proc_cpu',
|
'proc_cpu',
|
||||||
'proc_ram',
|
'proc_ram',
|
||||||
'proc_io',
|
'proc_io',
|
||||||
'pressure_stall',
|
|
||||||
},
|
},
|
||||||
'sudoers': {
|
'sudoers': {
|
||||||
'telegraf': {'/usr/local/share/telegraf/procio'},
|
'telegraf': {'/usr/local/share/telegraf/procio'},
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
'usage': {
|
'usage': {
|
||||||
'stacked': False,
|
'stacked': True,
|
||||||
'queries': {
|
'queries': {
|
||||||
'usage': {
|
'usage': {
|
||||||
'filters': {
|
'filters': {
|
||||||
|
@ -22,7 +22,12 @@
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'min': 0,
|
'min': 0,
|
||||||
'max': 100,
|
'soft_max': 3,
|
||||||
|
'unit': 'percent',
|
||||||
|
'tooltip': 'multi',
|
||||||
|
'legend': {
|
||||||
|
'displayMode': 'hidden',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
'load': {
|
'load': {
|
||||||
'stacked': False,
|
'stacked': False,
|
||||||
|
@ -39,5 +44,40 @@
|
||||||
'function': 'mean',
|
'function': 'mean',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
'min': 0,
|
||||||
|
'soft_max': 3,
|
||||||
|
'unit': 'percent',
|
||||||
|
'tooltip': 'multi',
|
||||||
|
'legend': {
|
||||||
|
'displayMode': 'hidden',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'pressure_stall': {
|
||||||
|
'queries': {
|
||||||
|
'pressure_stall': {
|
||||||
|
'filters': {
|
||||||
|
'_measurement': 'pressure_stall',
|
||||||
|
'resource': [
|
||||||
|
'cpu',
|
||||||
|
'io',
|
||||||
|
'memory',
|
||||||
|
],
|
||||||
|
'type': [
|
||||||
|
'some',
|
||||||
|
],
|
||||||
|
'_field': [
|
||||||
|
'avg10',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'min': 0,
|
||||||
|
'soft_max': 3,
|
||||||
|
'display_name': '__field.labels.resource',
|
||||||
|
'unit': 'percent',
|
||||||
|
'tooltip': 'multi',
|
||||||
|
'legend': {
|
||||||
|
'displayMode': 'hidden',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,8 @@
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'unit': 'decbytes',
|
'unit': 'decbytes',
|
||||||
'display_name': '__field.labels.name'
|
'display_name': '__field.labels.name',
|
||||||
|
'tooltip': 'multi',
|
||||||
},
|
},
|
||||||
'write': {
|
'write': {
|
||||||
'stacked': True,
|
'stacked': True,
|
||||||
|
@ -29,6 +30,7 @@
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'unit': 'decbytes',
|
'unit': 'decbytes',
|
||||||
'display_name': '__field.labels.name'
|
'display_name': '__field.labels.name',
|
||||||
|
'tooltip': 'multi',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,8 @@
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'unit': 'decbytes',
|
'unit': 'decbytes',
|
||||||
'display_name': '__field.labels.interface'
|
'display_name': '__field.labels.interface',
|
||||||
|
'tooltip': 'multi',
|
||||||
},
|
},
|
||||||
'out': {
|
'out': {
|
||||||
'stacked': True,
|
'stacked': True,
|
||||||
|
@ -29,6 +30,7 @@
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'unit': 'decbytes',
|
'unit': 'decbytes',
|
||||||
'display_name': '__field.labels.interface'
|
'display_name': '__field.labels.interface',
|
||||||
|
'tooltip': 'multi',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,90 +0,0 @@
|
||||||
{
|
|
||||||
'cpu': {
|
|
||||||
'queries': {
|
|
||||||
'seome': {
|
|
||||||
'filters': {
|
|
||||||
'_measurement': 'pressure_stall',
|
|
||||||
'resource': [
|
|
||||||
'cpu',
|
|
||||||
],
|
|
||||||
'type': [
|
|
||||||
'some',
|
|
||||||
],
|
|
||||||
'_field': [
|
|
||||||
'avg10',
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
'display_name': '__field.labels.type',
|
|
||||||
'unit': 'percent',
|
|
||||||
},
|
|
||||||
'memory': {
|
|
||||||
'queries': {
|
|
||||||
'some': {
|
|
||||||
'filters': {
|
|
||||||
'_measurement': 'pressure_stall',
|
|
||||||
'resource': [
|
|
||||||
'memory',
|
|
||||||
],
|
|
||||||
'type': [
|
|
||||||
'some',
|
|
||||||
],
|
|
||||||
'_field': [
|
|
||||||
'avg10',
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
'full': {
|
|
||||||
'filters': {
|
|
||||||
'_measurement': 'pressure_stall',
|
|
||||||
'resource': [
|
|
||||||
'memory',
|
|
||||||
],
|
|
||||||
'type': [
|
|
||||||
'full',
|
|
||||||
],
|
|
||||||
'_field': [
|
|
||||||
'avg10',
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
'display_name': '__field.labels.type',
|
|
||||||
'unit': 'percent',
|
|
||||||
},
|
|
||||||
'io': {
|
|
||||||
'queries': {
|
|
||||||
'some': {
|
|
||||||
'filters': {
|
|
||||||
'_measurement': 'pressure_stall',
|
|
||||||
'resource': [
|
|
||||||
'io',
|
|
||||||
],
|
|
||||||
'type': [
|
|
||||||
'some',
|
|
||||||
],
|
|
||||||
'_field': [
|
|
||||||
'avg10',
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
'full': {
|
|
||||||
'filters': {
|
|
||||||
'_measurement': 'pressure_stall',
|
|
||||||
'resource': [
|
|
||||||
'io',
|
|
||||||
],
|
|
||||||
'type': [
|
|
||||||
'full',
|
|
||||||
],
|
|
||||||
'_field': [
|
|
||||||
'avg10',
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
'display_name': '__field.labels.type',
|
|
||||||
'unit': 'percent',
|
|
||||||
},
|
|
||||||
}
|
|
Loading…
Reference in a new issue