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/files | |
parent | eb502bd9cc88e7390f0763e23e8fda01cbba5da2 (diff) | |
download | puppet-tozt-0cf629c60d7fb5a6c41ca29fe5b9fd29183f7361.tar.gz puppet-tozt-0cf629c60d7fb5a6c41ca29fe5b9fd29183f7361.zip |
add telegraf plugin for duplicati
Diffstat (limited to 'modules/tick/files')
-rw-r--r-- | modules/tick/files/plugins/duplicati | 42 | ||||
-rw-r--r-- | modules/tick/files/plugins/duplicati.conf | 3 |
2 files changed, 45 insertions, 0 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" |