diff --git a/bundles/dovecot/metadata.py b/bundles/dovecot/metadata.py index f87a9c2..99d052a 100644 --- a/bundles/dovecot/metadata.py +++ b/bundles/dovecot/metadata.py @@ -45,6 +45,15 @@ if node.has_bundle('postfixadmin'): }, } +if node.has_bundle('telegraf'): + defaults['telegraf'] = { + 'input_plugins': { + 'builtin': { + 'dovecot': [{}], + }, + }, + } + @metadata_reactor.provides( 'dovecot/admin_email', diff --git a/bundles/icinga2/metadata.py b/bundles/icinga2/metadata.py index 265da64..9691e61 100644 --- a/bundles/icinga2/metadata.py +++ b/bundles/icinga2/metadata.py @@ -74,6 +74,28 @@ defaults = { }, } +if node.has_bundle('telegraf'): + defaults['icinga2']['api_users']['telegraf'] = { + 'password': repo.vault.password_for(f'{node.name} icinga2 api telegraf'), + 'permissions': { + 'objects/Services', + }, + } + + defaults['telegraf'] = { + 'input_plugins': { + 'builtin': { + 'icinga2': [{ + 'server': 'https://127.0.0.1:5665', + 'object_type': 'services', + 'username': 'telegraf', + 'password': repo.vault.password_for(f'{node.name} icinga2 api telegraf'), + 'insecure_skip_verify': True, + }], + }, + }, + } + @metadata_reactor.provides( 'icinga2/icinga_users', ) diff --git a/bundles/nfs-client/metadata.py b/bundles/nfs-client/metadata.py index 13e4ed0..c59ee60 100644 --- a/bundles/nfs-client/metadata.py +++ b/bundles/nfs-client/metadata.py @@ -10,3 +10,12 @@ defaults = { }, }, } + +if node.has_bundle('telegraf'): + defaults['telegraf'] = { + 'input_plugins': { + 'builtin': { + 'nfsclient': [{}], + }, + }, + } diff --git a/bundles/nginx/metadata.py b/bundles/nginx/metadata.py index 1e0f238..62a441d 100644 --- a/bundles/nginx/metadata.py +++ b/bundles/nginx/metadata.py @@ -35,6 +35,17 @@ defaults = { }, } +if node.has_bundle('telegraf'): + defaults['telegraf'] = { + 'input_plugins': { + 'builtin': { + 'nginx': [{ + 'urls': ['http://localhost:22999/server_status'], + }], + }, + }, + } + @metadata_reactor.provides( 'nginx/worker_processes', diff --git a/bundles/postfix/metadata.py b/bundles/postfix/metadata.py index 6c9820d..f53e46e 100644 --- a/bundles/postfix/metadata.py +++ b/bundles/postfix/metadata.py @@ -50,6 +50,15 @@ else: }, }) +if node.has_bundle('telegraf'): + defaults['telegraf'] = { + 'input_plugins': { + 'builtin': { + 'postfix': [{}], + }, + }, + } + @metadata_reactor.provides( 'letsencrypt/domains', diff --git a/bundles/powerdns/metadata.py b/bundles/powerdns/metadata.py index 99ba6a1..28337e4 100644 --- a/bundles/powerdns/metadata.py +++ b/bundles/powerdns/metadata.py @@ -37,6 +37,15 @@ defaults = { }, } +if node.has_bundle('telegraf'): + defaults['telegraf'] = { + 'input_plugins': { + 'builtin': { + 'powerdns': [{}], + }, + }, + } + @metadata_reactor.provides( 'icinga2_api/powerdns/services', diff --git a/bundles/redis/metadata.py b/bundles/redis/metadata.py index 3a976be..b360913 100644 --- a/bundles/redis/metadata.py +++ b/bundles/redis/metadata.py @@ -19,3 +19,12 @@ defaults = { }, }, } + +if node.has_bundle('telegraf'): + defaults['telegraf'] = { + 'input_plugins': { + 'builtin': { + 'redis': [{}], + }, + }, + } diff --git a/bundles/smartd/metadata.py b/bundles/smartd/metadata.py index 644c649..c1a1df9 100644 --- a/bundles/smartd/metadata.py +++ b/bundles/smartd/metadata.py @@ -56,3 +56,26 @@ def icinga(metadata): }, }, } + + +@metadata_reactor.provides( + 'telegraf/input_plugins/builtin/smart', +) +def telegraf(metadata): + if not node.has_bundle('telegraf'): + raise DoNotRunAgain + + if metadata.get('smartd/disks', {}): + return { + 'telegraf': { + 'input_plugins': { + 'builtin': { + 'smart': [{ + 'devices': list(sorted(metadata.get('smartd/disks'))), + }], + }, + }, + }, + } + + return {} diff --git a/bundles/systemd-networkd/metadata.py b/bundles/systemd-networkd/metadata.py index e8dff0e..ba9a108 100644 --- a/bundles/systemd-networkd/metadata.py +++ b/bundles/systemd-networkd/metadata.py @@ -27,3 +27,26 @@ def add_vlan_infos_to_interface(metadata): return { 'interfaces': interfaces, } + + +@metadata_reactor.provides( + 'telegraf/input_plugins/builtin/bond', +) +def telegraf(metadata): + if not node.has_bundle('telegraf'): + raise DoNotRunAgain + + if metadata.get('systemd-networkd/bonds', {}): + return { + 'telegraf': { + 'input_plugins': { + 'builtin': { + 'bond': [{ + 'bond_interfaces': list(sorted(metadata.get('systemd-networkd/bonds').keys())), + }], + }, + }, + }, + } + + return {} diff --git a/bundles/unbound/metadata.py b/bundles/unbound/metadata.py index a950996..78458bf 100644 --- a/bundles/unbound/metadata.py +++ b/bundles/unbound/metadata.py @@ -23,6 +23,18 @@ defaults = { }, } +if node.has_bundle('telegraf'): + defaults['telegraf'] = { + 'input_plugins': { + 'builtin': { + 'unbound': [{ + 'thread_as_tag': True, + }], + }, + }, + } + + @metadata_reactor.provides( 'unbound/threads', diff --git a/bundles/wireguard/metadata.py b/bundles/wireguard/metadata.py index 0d1a4f9..d38b6a9 100644 --- a/bundles/wireguard/metadata.py +++ b/bundles/wireguard/metadata.py @@ -31,6 +31,16 @@ defaults = { }, } +if node.has_bundle('telegraf'): + defaults['telegraf'] = { + 'input_plugins': { + 'builtin': { + 'wireguard': [{}], + }, + }, + } + + @metadata_reactor.provides( 'wireguard/peers', diff --git a/bundles/zfs/metadata.py b/bundles/zfs/metadata.py index 4a505c3..159e428 100644 --- a/bundles/zfs/metadata.py +++ b/bundles/zfs/metadata.py @@ -78,6 +78,19 @@ defaults = { }, } +if node.has_bundle('telegraf'): + defaults['telegraf'] = { + 'input_plugins': { + 'builtin': { + 'zfs': [{ + 'poolMetrics': True, + 'datasetMetrics': True, + }], + }, + }, + } + + @metadata_reactor.provides( 'cron/zfs-scrub',