adding check for nextcloud mounts
This commit is contained in:
parent
33389e842a
commit
3fbfe26c66
3 changed files with 58 additions and 2 deletions
|
@ -388,5 +388,22 @@ define sunetdrive::app_type (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if $facts['networking']['hostname'] == 'node1' or $is_multinode {
|
||||||
|
file { '/usr/lib/nagios/plugins/check_nextcloud_mounts.py':
|
||||||
|
ensure => present,
|
||||||
|
force => true,
|
||||||
|
owner => 'root',
|
||||||
|
group => 'root',
|
||||||
|
content => template('sunetdrive/application/check_nextcloud_mounts.py'),
|
||||||
|
mode => '0744',
|
||||||
|
}
|
||||||
|
sunet::sudoer {'nagios_run_nextcloud_mounts_command':
|
||||||
|
user_name => 'nagios',
|
||||||
|
collection => 'nrpe_nextcloud_mounts_check',
|
||||||
|
command_line => '/usr/lib/nagios/plugins/check_nextcloud_mounts.py'
|
||||||
|
}
|
||||||
|
sunet::nagios::nrpe_command {'check_nextcloud_mounts':
|
||||||
|
command_line => '/usr/bin/sudo /usr/lib/nagios/plugins/check_nextcloud_mounts.py'
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,6 +99,11 @@ class sunetdrive::sitemonitornaemon() {
|
||||||
description => 'Status of sarimner interface',
|
description => 'Status of sarimner interface',
|
||||||
contact_groups => ['alerts']
|
contact_groups => ['alerts']
|
||||||
}
|
}
|
||||||
|
nagioscfg::service {'check_nextcloud_mounts':
|
||||||
|
hostgroup_name => ['sunetdrive::application','sunetdrive::multinode'],
|
||||||
|
check_command => 'check_nrpe_1arg!check_nextcloud_mounts',
|
||||||
|
description => 'Nextcloud bucket mounted multiple times',
|
||||||
|
contact_groups => ['alerts']
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
34
templates/application/check_nextcloud_mounts.py
Normal file
34
templates/application/check_nextcloud_mounts.py
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from collections import Counter
|
||||||
|
import json
|
||||||
|
import shlex
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
buckets = []
|
||||||
|
bucket_count = {}
|
||||||
|
containers = {}
|
||||||
|
exit = 0
|
||||||
|
|
||||||
|
get_containers = subprocess.Popen('/usr/local/bin/get_containers', stdout=subprocess.PIPE).stdout.read()
|
||||||
|
containers = get_containers.decode().splitlines()
|
||||||
|
|
||||||
|
for container in containers:
|
||||||
|
list_command = f"/usr/local/bin/nocc {container} files_external:list --all --show-password --output json"
|
||||||
|
command = shlex.split(list_command)
|
||||||
|
mount_data_byte = subprocess.Popen(command, stdout=subprocess.PIPE).stdout.read()
|
||||||
|
mount_data = json.loads(mount_data_byte.decode())
|
||||||
|
for items in mount_data:
|
||||||
|
buckets.append(items["configuration"]["bucket"])
|
||||||
|
bucket_count = dict(Counter(buckets))
|
||||||
|
for i, (k, v) in enumerate(bucket_count.items()):
|
||||||
|
if v > 1:
|
||||||
|
if i == 0:
|
||||||
|
print("WARNING: buckets with multiple mounts")
|
||||||
|
print(f"bucket {k} is mounted {v} times | {k}_num_mounts={v}")
|
||||||
|
else:
|
||||||
|
print(f"bucket {k} is mounted {v} times | {k}_num_mounts={v}")
|
||||||
|
# lets do exit 0 for now
|
||||||
|
# exit = 1
|
||||||
|
sys.exit(exit)
|
Loading…
Add table
Reference in a new issue