diff options
author | Jesse Luehrs <doy@tozt.net> | 2020-07-05 18:47:09 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2020-07-05 18:47:09 -0400 |
commit | 0cf629c60d7fb5a6c41ca29fe5b9fd29183f7361 (patch) | |
tree | c7a234d464498f734b164cfbc957ead146ba30ac /modules/tick | |
parent | eb502bd9cc88e7390f0763e23e8fda01cbba5da2 (diff) | |
download | puppet-tozt-0cf629c60d7fb5a6c41ca29fe5b9fd29183f7361.tar.gz puppet-tozt-0cf629c60d7fb5a6c41ca29fe5b9fd29183f7361.zip |
add telegraf plugin for duplicati
Diffstat (limited to 'modules/tick')
-rw-r--r-- | modules/tick/files/plugins/duplicati | 42 | ||||
-rw-r--r-- | modules/tick/files/plugins/duplicati.conf | 3 | ||||
-rw-r--r-- | modules/tick/manifests/client/base_plugins.pp | 7 | ||||
-rw-r--r-- | modules/tick/manifests/client/plugin/duplicati.pp | 15 |
4 files changed, 66 insertions, 1 deletions
diff --git a/modules/tick/files/plugins/duplicati b/modules/tick/files/plugins/duplicati new file mode 100644 index 0000000..7b0487b --- /dev/null +++ b/modules/tick/files/plugins/duplicati @@ -0,0 +1,42 @@ +#!/usr/bin/env ruby + +require 'date' +require 'yaml' + +def parse_duration(dur) + hours, minutes, seconds = dur.split(/:/) + 3600 * hours.to_f + 60 * minutes.to_f + seconds.to_f +end + +def field_name(name) + name.gsub(/\A[^A-Za-z_]/, '_').gsub(/[^A-Za-z0-9_]/, '_') +end + +def backup_metadata(id) + backup = YAML.load(%x{duplicati-client describe backup #{id}}) + backup[0]['Backup']['Metadata'] +end + +def all_backups + _ = %x{duplicati-client login} + backups = YAML.load(%x{duplicati-client list backups}) + ret = {} + backups.each do |backup| + name = backup.keys[0] + id = backup[name]['ID'] + ret[id] = name + end + ret +end + +now = Time.now +all_backups.each do |id, name| + metadata = backup_metadata(id) + + ago_s = now - DateTime.iso8601(metadata['LastBackupFinished']).to_time + dur_s = parse_duration(metadata['LastBackupDuration']) + file_size_b = metadata['SourceFilesSize'].to_i + file_count_n = metadata['SourceFilesCount'].to_i + + puts "duplicati,id=#{id},name=#{name} days_since_last_run=#{ago_s / 60.0 / 60.0 / 24.0},last_run_duration_minutes=#{dur_s / 60.0},file_size=#{file_size_b}i,file_count=#{file_count_n}i" +end diff --git a/modules/tick/files/plugins/duplicati.conf b/modules/tick/files/plugins/duplicati.conf new file mode 100644 index 0000000..f335a03 --- /dev/null +++ b/modules/tick/files/plugins/duplicati.conf @@ -0,0 +1,3 @@ +[[inputs.exec]] +commands = ["/etc/telegraf/plugins/duplicati"] +data_format = "influx" diff --git a/modules/tick/manifests/client/base_plugins.pp b/modules/tick/manifests/client/base_plugins.pp index 2a4b347..28cd084 100644 --- a/modules/tick/manifests/client/base_plugins.pp +++ b/modules/tick/manifests/client/base_plugins.pp @@ -29,5 +29,10 @@ class tick::client::base_plugins { ]: } - class { "tick::client::plugin::pacman": } + class { + [ + "tick::client::plugin::duplicati", + "tick::client::plugin::pacman", + ]: + } } diff --git a/modules/tick/manifests/client/plugin/duplicati.pp b/modules/tick/manifests/client/plugin/duplicati.pp new file mode 100644 index 0000000..ff7e21b --- /dev/null +++ b/modules/tick/manifests/client/plugin/duplicati.pp @@ -0,0 +1,15 @@ +class tick::client::plugin::duplicati { + file { + "/etc/telegraf/telegraf.d/duplicati.conf": + source => 'puppet:///modules/tick/plugins/duplicati.conf', + require => [ + File["/etc/telegraf/telegraf.d"], + File["/etc/telegraf/plugins/duplicati"], + ], + notify => Service["telegraf"]; + "/etc/telegraf/plugins/duplicati": + source => 'puppet:///modules/tick/plugins/duplicati', + mode => '0755', + require => File['/etc/telegraf/plugins']; + } +} |