Yuvipanda has submitted this change and it was merged. 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, 102 insertions(+), 0 deletions(-) Approvals: Yuvipanda: Verified; Looks good to me, approved diff --git a/modules/diamond/files/collector/localcrontab.py b/modules/diamond/files/collector/localcrontab.py new file mode 100644 index 0000000..17ef717 --- /dev/null +++ b/modules/diamond/files/collector/localcrontab.py @@ -0,0 +1,64 @@ +# 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({ + 'administrative': '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..a2c3a2a --- /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 96c483e..1cc220b 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: merged Gerrit-Change-Id: I6758673ff611a86ed67af23e599e1945227e97fe Gerrit-PatchSet: 3 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Merlijn van Deen <valhall...@arctus.nl> Gerrit-Reviewer: Yuvipanda <yuvipa...@gmail.com> Gerrit-Reviewer: coren <mpellet...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits