summaryrefslogtreecommitdiffstats
path: root/modules/tick/files
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2020-07-05 18:47:09 -0400
committerJesse Luehrs <doy@tozt.net>2020-07-05 18:47:09 -0400
commit0cf629c60d7fb5a6c41ca29fe5b9fd29183f7361 (patch)
treec7a234d464498f734b164cfbc957ead146ba30ac /modules/tick/files
parenteb502bd9cc88e7390f0763e23e8fda01cbba5da2 (diff)
downloadpuppet-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/duplicati42
-rw-r--r--modules/tick/files/plugins/duplicati.conf3
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"