bundles/grafana: introduce, add to htz-cloud.influxdb
This commit is contained in:
parent
1a1ea721d9
commit
c548a88ee7
14 changed files with 1631 additions and 1 deletions
99
bundles/grafana/items.py
Normal file
99
bundles/grafana/items.py
Normal file
|
@ -0,0 +1,99 @@
|
|||
from itertools import count
|
||||
from os.path import join
|
||||
from pathlib import Path
|
||||
from uuid import UUID
|
||||
|
||||
from bundlewrap.metadata import metadata_to_json
|
||||
|
||||
for row in Path(join(repo.path, 'bundles', 'grafana', 'dashboard-rows')).rglob("*.py"):
|
||||
with open(row, 'r') as f:
|
||||
exec(f.read())
|
||||
|
||||
directories = {
|
||||
'/etc/grafana/provisioning/dashboards': {
|
||||
'purge': True,
|
||||
},
|
||||
'/etc/grafana/provisioning/datasources': {
|
||||
'purge': True,
|
||||
},
|
||||
'/etc/grafana/provisioning/notifiers': {
|
||||
'purge': True,
|
||||
},
|
||||
'/etc/grafana/provisioning/plugins': {
|
||||
'purge': True,
|
||||
},
|
||||
'/var/lib/grafana/dashboards': {
|
||||
'purge': True,
|
||||
'triggers': {
|
||||
'svc_systemd:grafana-server:restart',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
files = {
|
||||
'/etc/grafana/grafana.ini': {
|
||||
'content_type': 'mako',
|
||||
'context': node.metadata['grafana'],
|
||||
'owner': 'grafana',
|
||||
'mode': '0640',
|
||||
'triggers': {
|
||||
'svc_systemd:grafana-server:restart',
|
||||
},
|
||||
},
|
||||
'/etc/grafana/provisioning/dashboards/bundlewrap.yaml': {
|
||||
'source': 'dashboards.yaml',
|
||||
'owner': 'grafana',
|
||||
'mode': '0640',
|
||||
'triggers': {
|
||||
'svc_systemd:grafana-server:restart',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
svc_systemd = {
|
||||
'grafana-server': {
|
||||
'needs': {
|
||||
'file:/etc/grafana/grafana.ini',
|
||||
'pkg_apt:grafana',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
### dashboard management starts here
|
||||
for rnode in repo.nodes:
|
||||
if not rnode.has_bundle('telegraf'):
|
||||
continue
|
||||
|
||||
panel_id = count(start=1)
|
||||
dashboard = {
|
||||
'title': rnode.name,
|
||||
'uid': UUID(int=rnode.magic_number).hex[:10],
|
||||
|
||||
'editable': False,
|
||||
'graphTooltip': 1,
|
||||
'refresh': '30s',
|
||||
'schemaVersion': 12,
|
||||
'style': 'dark',
|
||||
'tags': {'bw'},
|
||||
'time': {
|
||||
'from': 'now-1d',
|
||||
'to': 'now'
|
||||
},
|
||||
'version': 1,
|
||||
|
||||
'rows': [
|
||||
dashboard_row_cpu(panel_id, rnode),
|
||||
dashboard_row_ip_traffic(panel_id, rnode),
|
||||
dashboard_row_memory(panel_id, rnode),
|
||||
dashboard_row_disk_space(panel_id, rnode),
|
||||
dashboard_row_disk_iops(panel_id, rnode),
|
||||
],
|
||||
}
|
||||
|
||||
files[f'/var/lib/grafana/dashboards/{rnode.name}.json'] = {
|
||||
# use metadata_to_json, because this supports sets
|
||||
'content': metadata_to_json(dashboard),
|
||||
'triggers': {
|
||||
'svc_systemd:grafana-server:restart',
|
||||
},
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue