summaryrefslogtreecommitdiffstats
path: root/modules/tick
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2021-03-27 19:56:57 -0400
committerJesse Luehrs <doy@tozt.net>2021-03-27 19:56:57 -0400
commit12d77d5eb1d08b7f8e256cd8ae15b5a0b20a91a5 (patch)
tree6527c012461bf9896eb22c5f9572799416f64432 /modules/tick
parent62ec0f0c3baee1da7829c59d3c39b2d9c5faaba8 (diff)
downloadpuppet-tozt-12d77d5eb1d08b7f8e256cd8ae15b5a0b20a91a5.tar.gz
puppet-tozt-12d77d5eb1d08b7f8e256cd8ae15b5a0b20a91a5.zip
add monitoring for borg
Diffstat (limited to 'modules/tick')
-rw-r--r--modules/tick/files/plugins/borg19
-rw-r--r--modules/tick/files/plugins/borg.conf5
-rw-r--r--modules/tick/manifests/client/base_plugins.pp1
-rw-r--r--modules/tick/manifests/client/plugin/borg.pp15
4 files changed, 40 insertions, 0 deletions
diff --git a/modules/tick/files/plugins/borg b/modules/tick/files/plugins/borg
new file mode 100644
index 0000000..38bbe3c
--- /dev/null
+++ b/modules/tick/files/plugins/borg
@@ -0,0 +1,19 @@
+#!/usr/bin/env ruby
+
+require 'date'
+require 'json'
+
+now = Time.now
+
+data = JSON.load(%x{borgmatic info --archive latest --json})
+
+repository = data[0]["repository"]
+archive = data[0]["archives"][0]
+
+location = repository["location"]
+ago_s = now - DateTime.iso8601(archive["end"]).to_time
+dur_s = archive["duration"].to_f
+file_size_b = archive["stats"]["original_size"]
+file_count_n = archive["stats"]["nfiles"]
+
+puts "borg,location=#{location} 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"
diff --git a/modules/tick/files/plugins/borg.conf b/modules/tick/files/plugins/borg.conf
new file mode 100644
index 0000000..2351d2a
--- /dev/null
+++ b/modules/tick/files/plugins/borg.conf
@@ -0,0 +1,5 @@
+[[inputs.exec]]
+commands = ["/etc/telegraf/plugins/borg"]
+data_format = "influx"
+interval = "5m"
+timeout = "2m"
diff --git a/modules/tick/manifests/client/base_plugins.pp b/modules/tick/manifests/client/base_plugins.pp
index ffd815f..6c82430 100644
--- a/modules/tick/manifests/client/base_plugins.pp
+++ b/modules/tick/manifests/client/base_plugins.pp
@@ -32,6 +32,7 @@ class tick::client::base_plugins {
class {
[
+ "tick::client::plugin::borg",
"tick::client::plugin::godwrap",
"tick::client::plugin::pacman",
]:
diff --git a/modules/tick/manifests/client/plugin/borg.pp b/modules/tick/manifests/client/plugin/borg.pp
new file mode 100644
index 0000000..8996cc2
--- /dev/null
+++ b/modules/tick/manifests/client/plugin/borg.pp
@@ -0,0 +1,15 @@
+class tick::client::plugin::borg {
+ file {
+ "/etc/telegraf/telegraf.d/borg.conf":
+ source => 'puppet:///modules/tick/plugins/borg.conf',
+ require => [
+ File["/etc/telegraf/telegraf.d"],
+ File["/etc/telegraf/plugins/borg"],
+ ],
+ notify => Service["telegraf"];
+ "/etc/telegraf/plugins/borg":
+ source => 'puppet:///modules/tick/plugins/borg',
+ mode => '0755',
+ require => File['/etc/telegraf/plugins'];
+ }
+}