From 119c6f6645f660f76d255861296570eca05f0112 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 27 Mar 2021 23:28:11 -0400 Subject: monitoring for rclone --- modules/partofme/manifests/monitoring.pp | 7 ++++++- modules/tick/files/plugins/rclone | 20 ++++++++++++++++++++ modules/tick/files/plugins/rclone.conf | 5 +++++ modules/tick/manifests/client/plugin/rclone.pp | 15 +++++++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 modules/tick/files/plugins/rclone create mode 100644 modules/tick/files/plugins/rclone.conf create mode 100644 modules/tick/manifests/client/plugin/rclone.pp diff --git a/modules/partofme/manifests/monitoring.pp b/modules/partofme/manifests/monitoring.pp index 0f40b7f..5a8407b 100644 --- a/modules/partofme/manifests/monitoring.pp +++ b/modules/partofme/manifests/monitoring.pp @@ -2,5 +2,10 @@ class partofme::monitoring { include smartmontools include tick::client::base_plugins - class { "tick::client::plugin::smart": } + class { + [ + "tick::client::plugin::rclone", + "tick::client::plugin::smart", + ]: + } } 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']; + } +} -- cgit v1.2.3-54-g00ecf