summaryrefslogtreecommitdiffstats
path: root/modules/tick
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2021-03-27 23:28:11 -0400
committerJesse Luehrs <doy@tozt.net>2021-03-27 23:28:11 -0400
commit119c6f6645f660f76d255861296570eca05f0112 (patch)
tree0200da0b70adc17e57aeb474cc5ae3e4d5d5f235 /modules/tick
parent7038b1d10d717ba5eb54bca009ee626f0141e834 (diff)
downloadpuppet-tozt-119c6f6645f660f76d255861296570eca05f0112.tar.gz
puppet-tozt-119c6f6645f660f76d255861296570eca05f0112.zip
monitoring for rclone
Diffstat (limited to 'modules/tick')
-rw-r--r--modules/tick/files/plugins/rclone20
-rw-r--r--modules/tick/files/plugins/rclone.conf5
-rw-r--r--modules/tick/manifests/client/plugin/rclone.pp15
3 files changed, 40 insertions, 0 deletions
diff --git a/modules/tick/files/plugins/rclone b/modules/tick/files/plugins/rclone
new file mode 100644
index 0000000..68b0dc4
--- /dev/null
+++ b/modules/tick/files/plugins/rclone
@@ -0,0 +1,20 @@
+#!/usr/bin/env ruby
+
+require 'date'
+require 'json'
+
+rclone = "rclone --config /etc/rclone.conf"
+now = Time.now
+
+JSON.load(%x{#{rclone} lsjson crypt:}).each do |dir|
+ repo_path = "crypt:#{dir["Path"]}"
+
+ date = %x{#{rclone} cat #{repo_path}/last_run}
+ data = JSON.load(%x{#{rclone} size #{repo_path} --json})
+
+ ago_s = now - DateTime.iso8601(date).to_time
+ file_size_b = data["bytes"]
+ file_count_n = data["count"]
+
+ puts "rclone,location=#{repo_path} days_since_last_run=#{ago_s / 60.0 / 60.0 / 24.0},file_size=#{file_size_b}i,file_count=#{file_count_n}i"
+end
diff --git a/modules/tick/files/plugins/rclone.conf b/modules/tick/files/plugins/rclone.conf
new file mode 100644
index 0000000..85e2bdc
--- /dev/null
+++ b/modules/tick/files/plugins/rclone.conf
@@ -0,0 +1,5 @@
+[[inputs.exec]]
+commands = ["/etc/telegraf/plugins/rclone"]
+data_format = "influx"
+interval = "5m"
+timeout = "2m"
diff --git a/modules/tick/manifests/client/plugin/rclone.pp b/modules/tick/manifests/client/plugin/rclone.pp
new file mode 100644
index 0000000..f2bb968
--- /dev/null
+++ b/modules/tick/manifests/client/plugin/rclone.pp
@@ -0,0 +1,15 @@
+class tick::client::plugin::rclone {
+ file {
+ "/etc/telegraf/telegraf.d/rclone.conf":
+ source => 'puppet:///modules/tick/plugins/rclone.conf',
+ require => [
+ File["/etc/telegraf/telegraf.d"],
+ File["/etc/telegraf/plugins/rclone"],
+ ],
+ notify => Service["telegraf"];
+ "/etc/telegraf/plugins/rclone":
+ source => 'puppet:///modules/tick/plugins/rclone',
+ mode => '0755',
+ require => File['/etc/telegraf/plugins'];
+ }
+}