152 lines
4.4 KiB
Python
152 lines
4.4 KiB
Python
telegraf_config = {
|
|
'agent': {
|
|
'collection_jitter': '5s',
|
|
'debug': False,
|
|
'flush_buffer_when_full': True,
|
|
'flush_interval': '10s',
|
|
'flush_jitter': '5s',
|
|
'hostname': node.name,
|
|
'interval': '60s',
|
|
'metric_buffer_limit': 1_000_000,
|
|
'quiet': False,
|
|
'round_interval': False,
|
|
},
|
|
'inputs': {
|
|
'cpu': [{
|
|
'percpu': False,
|
|
'totalcpu': True,
|
|
'fielddrop': [
|
|
'time_*',
|
|
],
|
|
}],
|
|
'disk': [{
|
|
'ignore_fs': [
|
|
'aufs',
|
|
'devtmpfs',
|
|
'nsfs',
|
|
'tmpfs',
|
|
],
|
|
}],
|
|
'diskio': [{
|
|
'skip_serial_number': True,
|
|
}],
|
|
'kernel': [{}],
|
|
'mem': [{}],
|
|
'net': [{
|
|
'interfaces': [
|
|
'en*',
|
|
'eth*',
|
|
'wg*',
|
|
'wlp*',
|
|
],
|
|
}],
|
|
'nstat': [{}],
|
|
'processes': [{}],
|
|
'system': [{}],
|
|
**node.metadata.get('telegraf/input_plugins/builtin', {}),
|
|
},
|
|
'outputs': {
|
|
'influxdb_v2': [{
|
|
'urls': [node.metadata.get('telegraf/influxdb_url', repo.libs.defaults.influxdb_url)],
|
|
'token': node.metadata.get('telegraf/influxdb_token', repo.vault.decrypt(repo.libs.defaults.influxdb_token)),
|
|
'organization': node.metadata.get('telegraf/influxdb_org', repo.vault.decrypt(repo.libs.defaults.influxdb_org)),
|
|
'bucket': node.metadata.get('telegraf/influxdb_bucket', repo.vault.decrypt(repo.libs.defaults.influxdb_bucket)),
|
|
}],
|
|
},
|
|
}
|
|
|
|
# Bundlewrap can't merge lists. To work around this, telegraf/input_plugins/exec(d)
|
|
# is a dict, of which we only use the value of it. This also allows us
|
|
# to overwrite values set by metadata defaults/reactors in node and group
|
|
# metadata, if needed.
|
|
for config in sorted(node.metadata.get('telegraf/input_plugins/exec', {}).values(), key=lambda c: ''.join(c['commands'])):
|
|
if 'exec' not in telegraf_config['inputs']:
|
|
telegraf_config['inputs']['exec'] = []
|
|
|
|
telegraf_config['inputs']['exec'].append(config)
|
|
|
|
for config in sorted(node.metadata.get('telegraf/input_plugins/execd', {}).values(), key=lambda c: ''.join(c['command'])):
|
|
if 'execd' not in telegraf_config['inputs']:
|
|
telegraf_config['inputs']['execd'] = []
|
|
|
|
telegraf_config['inputs']['execd'].append(config)
|
|
|
|
for name, config in sorted(node.metadata.get('telegraf/input_plugins/tail', {}).items()):
|
|
if 'tail' not in telegraf_config['inputs']:
|
|
telegraf_config['inputs']['tail'] = []
|
|
|
|
telegraf_config['inputs']['tail'].append(config)
|
|
|
|
files = {
|
|
'/etc/telegraf/telegraf.conf': {
|
|
'content_type': 'mako',
|
|
'context': {
|
|
'config': telegraf_config,
|
|
},
|
|
'triggers': {
|
|
'svc_systemd:telegraf:restart',
|
|
},
|
|
},
|
|
'/etc/sudoers.d/telegraf': {
|
|
'source': 'sudoers',
|
|
'content_type': 'mako',
|
|
},
|
|
}
|
|
|
|
if node.metadata.get('telegraf/additional_capabilities', set()):
|
|
files['/etc/systemd/system/telegraf.service.d/bundlewrap.conf'] = {
|
|
'source': 'override.conf',
|
|
'content_type': 'mako',
|
|
'context': {
|
|
'capabilities': node.metadata['telegraf']['additional_capabilities'],
|
|
},
|
|
'triggers': {
|
|
'action:systemd-reload',
|
|
'svc_systemd:telegraf:restart',
|
|
},
|
|
}
|
|
else:
|
|
files['/etc/systemd/system/telegraf.service.d/bundlewrap.conf'] = {
|
|
'delete': True,
|
|
'triggers': {
|
|
'action:systemd-reload',
|
|
'svc_systemd:telegraf:restart',
|
|
},
|
|
}
|
|
|
|
directories = {
|
|
'/etc/telegraf/.cache': {
|
|
'owner': 'telegraf',
|
|
},
|
|
}
|
|
|
|
users = {
|
|
'telegraf': {
|
|
'groups': node.metadata.get('telegraf/additional_groups', set()),
|
|
'triggers': {
|
|
'svc_systemd:telegraf:restart',
|
|
},
|
|
},
|
|
}
|
|
|
|
svc_systemd = {
|
|
'telegraf': {
|
|
'needs': {
|
|
'file:/etc/telegraf/telegraf.conf',
|
|
'file:/etc/systemd/system/telegraf.service.d/bundlewrap.conf',
|
|
'user:telegraf',
|
|
},
|
|
},
|
|
}
|
|
|
|
if node.has_bundle('apt'):
|
|
svc_systemd['telegraf']['needs'].add('pkg_apt:telegraf')
|
|
|
|
users['telegraf']['needs'] = {
|
|
'pkg_apt:telegraf',
|
|
}
|
|
directories['/etc/telegraf/.cache']['needs'] = {
|
|
'pkg_apt:telegraf',
|
|
}
|
|
|
|
# Arch users: install telegraf or telegraf-bin from AUR
|