Merlijn van Deen has uploaded a new change for review.
https://gerrit.wikimedia.org/r/206833
Change subject: Add local crontab monitoring
......................................................................
Add local crontab monitoring
Bug: T96472
Change-Id: I6758673ff611a86ed67af23e599e1945227e97fe
---
A modules/diamond/files/collector/localcrontab.py
A modules/diamond/manifests/collector/localcrontab.pp
M modules/toollabs/manifests/init.pp
3 files changed, 100 insertions(+), 0 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/operations/puppet
refs/changes/33/206833/1
diff --git a/modules/diamond/files/collector/localcrontab.py
b/modules/diamond/files/collector/localcrontab.py
new file mode 100644
index 0000000..5ae2a5d
--- /dev/null
+++ b/modules/diamond/files/collector/localcrontab.py
@@ -0,0 +1,62 @@
+# coding=utf-8
+
+"""
+LocalCrontabCollector. Collects the number of local user cron tabs.
+
+Main use is tool labs, where there should be no cron tabs on any
+host other than tools-submit.
+"""
+
+import subprocess
+import os
+import diamond.collector
+from diamond.collector import str_to_bool
+
+
+class LocalCrontabCollector(diamond.collector.Collector):
+ def get_default_config_help(self):
+ config_help = super(LocalCrontabCollector,
self).get_default_config_help() # noqa
+ config_help.update({
+ 'acceptable': 'List of user names to report as administrative
crontabs',
+ 'use_sudo': 'Use sudo?',
+ 'sudo_cmd': 'Path to sudo',
+ 'sudo_user': 'User to sudo as',
+ })
+ return config_help
+
+ def get_default_config(self):
+ """
+ Returns the default collector settings
+ """
+ config = super(LocalCrontabCollector, self).get_default_config()
+ config.update({
+ 'path': 'localcrontab',
+ 'administrative': ['root', 'puppet'],
+ 'use_sudo': False,
+ 'sudo_cmd': '/usr/bin/sudo',
+ 'sudo_user': 'root',
+ })
+ return config
+
+ def collect(self):
+ command = ['/bin/ls', '/var/spool/cron/crontabs/']
+
+ if str_to_bool(self.config['use_sudo']):
+ command = [
+ self.config['sudo_cmd'],
+ '-u',
+ self.config['sudo_user']
+ ] + command
+
+ self.log.debug('Running %s' % (' '.join(command)))
+ crontabs = subprocess.check_output(command).split("\n")
+ crontabs = [c.strip() for c in crontabs]
+ crontabs = [c for c in crontabs if c]
+
+ total_crontabs = len(crontabs)
+ admin_crontabs = len([c for c in crontabs if c in
self.config['administrative']])
+ other_crontabs = total_crontabs - admin_crontabs
+
+ self.publish('total', total_crontabs)
+ self.publish('administrative', admin_crontabs)
+ self.publish('other', other_crontabs)
diff --git a/modules/diamond/manifests/collector/localcrontab.pp
b/modules/diamond/manifests/collector/localcrontab.pp
new file mode 100644
index 0000000..3064793
--- /dev/null
+++ b/modules/diamond/manifests/collector/localcrontab.pp
@@ -0,0 +1,37 @@
+# == Define: diamond::collector::extendedexim
+#
+# Exim collector. Collects queue properties and paniclog size.
+#
+# Queue properties:
+# - queue.oldest: age of oldest e-mail in queue (seconds)
+# - queue.youngest: age of youngest e-mail in queue (seconds)
+# - queue.size: total size of the queue (bytes)
+# - queue.length: total number of e-mails in the queue
+# - queue.num_frozen: number of frozen e-mails in the queue
+#
+# Paniclog properties:
+# - paniclog.length: number of lines in /var/log/exim4/paniclog
+
+include stdlib
+
+define diamond::collector::localcrontab(
+ $settings = {},
+ $ensure = present,
+) {
+ $default_settings = {'use_sudo' => 'true'}
+ $merged_settings = merge($default_settings, $settings)
+
+ diamond::collector { 'LocalCrontabCollector':
+ settings => $merged_settings,
+ source => 'puppet:///modules/diamond/collector/localcrontab.py',
+ ensure => $ensure,
+ }
+
+ if str2bool($merged_settings[use_sudo]) {
+ sudo::user { 'diamond_sudo_for_localcrontab':
+ user => 'diamond',
+ privileges => ["ALL=(root) NOPASSWD: /bin/ls
/var/spool/cron/crontabs/"],
+ ensure => $ensure,
+ }
+ }
+}
diff --git a/modules/toollabs/manifests/init.pp
b/modules/toollabs/manifests/init.pp
index 3b8afc6..68fd55c 100644
--- a/modules/toollabs/manifests/init.pp
+++ b/modules/toollabs/manifests/init.pp
@@ -198,4 +198,5 @@
mode => '0644'
}
+ diamond::collector::localcrontab { 'localcrontabcollector': }
}
--
To view, visit https://gerrit.wikimedia.org/r/206833
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6758673ff611a86ed67af23e599e1945227e97fe
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Merlijn van Deen <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits