From 12d77d5eb1d08b7f8e256cd8ae15b5a0b20a91a5 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 27 Mar 2021 19:56:57 -0400 Subject: add monitoring for borg --- modules/tick/files/plugins/borg | 19 +++++++++++++++++++ modules/tick/files/plugins/borg.conf | 5 +++++ modules/tick/manifests/client/base_plugins.pp | 1 + modules/tick/manifests/client/plugin/borg.pp | 15 +++++++++++++++ 4 files changed, 40 insertions(+) create mode 100644 modules/tick/files/plugins/borg create mode 100644 modules/tick/files/plugins/borg.conf create mode 100644 modules/tick/manifests/client/plugin/borg.pp (limited to 'modules/tick') 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']; + } +} -- cgit v1.2.3-54-g00ecf