def write_prometheus_config_yml():
config = hookenv.config()
target_jobs = unitdata.kv().get('target_jobs', [])
scrape_jobs = unitdata.kv().get('scrape_jobs', [])
# transform eg. 'h1:p1 , h2:p2' (string), to ['h1:p1', 'h2:p2'] (list)
static_targets = None
if config.get('static-targets'):
static_targets = [x.strip()
for x in config.get('static-targets', '').split(',')]
default_monitor_name = '{}-monitor'.format(hookenv.service_name())
options = {
'scrape_interval': config['scrape-interval'],
'evaluation_interval': config['evaluation-interval'],
'static_targets': static_targets,
'private_address': hookenv.unit_get('private-address'),
'monitor_name': config.get('monitor_name', default_monitor_name),
'jobs': target_jobs,
'scrape_jobs': scrape_jobs,
}
# custom-rules content must be passed verbatim with e.g.
# juju set prometheus custom-rules @my.rules
if config.get('custom-rules'):
custom_rules = config['custom-rules']
with open(CUSTOM_RULES_PATH, 'w') as fh:
fh.write(custom_rules)
options['custom_rules_file'] = CUSTOM_RULES_PATH
render(source=PROMETHEUS_YML_TMPL,
target=PROMETHEUS_YML,
context=options
)
validate_config()
set_state('prometheus.do-restart')
remove_state('prometheus.do-reconfig-yml')
评论列表
文章目录