[MediaWiki-commits] [Gerrit] operations/puppet[production]: labstore: Check that NFS is being served over Cluster IP for...
Madhuvishy has submitted this change and it was merged. Change subject: labstore: Check that NFS is being served over Cluster IP for secondary cluster .. labstore: Check that NFS is being served over Cluster IP for secondary cluster Bug: T144633 Change-Id: I7ba09c727be21a01746dbe5c955f2c96e3dc1dfc --- A modules/labstore/files/monitor/check_nfs_status R modules/labstore/manifests/monitoring/secondary.pp M modules/role/manifests/labs/nfs/secondary.pp 3 files changed, 69 insertions(+), 10 deletions(-) Approvals: Madhuvishy: Looks good to me, approved jenkins-bot: Verified diff --git a/modules/labstore/files/monitor/check_nfs_status b/modules/labstore/files/monitor/check_nfs_status new file mode 100644 index 000..3a2d81a --- /dev/null +++ b/modules/labstore/files/monitor/check_nfs_status @@ -0,0 +1,41 @@ +#!/usr/bin/python3 +import argparse +import os +import subprocess +import sys + + +def check_nfs_status(cluster_ip): +""" +Check if NFS is served over the cluster IP +:param cluster_ip: string +:returns: boolean +""" + +exports = [export for export in str(subprocess.check_output([ +'/sbin/showmount', '-e', cluster_ip])).split('\\n') if len(export) > 1] + +if len(exports) > 1: +print('NFS served over cluster ip OK') +return True + +print('No NFS exports served over Cluster IP') +return False + + +def main(): + +if not os.geteuid() == 0: +print('Script not run as root') +sys.exit(1) + +parser = argparse.ArgumentParser('Check if NFS is served over cluster IP') +parser.add_argument('ip', help='Cluster IP assigned to primary node') +args = parser.parse_args() + +if not check_nfs_status(args.ip): +sys.exit(1) + + +if __name__ == '__main__': +main() diff --git a/modules/labstore/manifests/monitoring/drbd.pp b/modules/labstore/manifests/monitoring/secondary.pp similarity index 64% rename from modules/labstore/manifests/monitoring/drbd.pp rename to modules/labstore/manifests/monitoring/secondary.pp index cfc8266..aa73990 100644 --- a/modules/labstore/manifests/monitoring/drbd.pp +++ b/modules/labstore/manifests/monitoring/secondary.pp @@ -1,9 +1,13 @@ -# == Class: labstore::monitoring::drbd +# == Class: labstore::monitoring::secondary # -# Installs icinga checks to make sure resource status on a drbd node is OK, -# and to check that the nodes conform to the expected drbd roles. +# Installs icinga checks to +# - make sure resource status on a drbd node is OK, +# - check that the nodes conform to the expected drbd roles. +# - drbd service status +# - check that cluster ip is assigned to DRBD primary +# - NFS is being served over cluster IP -class labstore::monitoring::drbd($drbd_role, $cluster_ip, $resource = 'all') { +class labstore::monitoring::secondary($drbd_role, $cluster_ip, $resource = 'all') { sudo::user { 'nagios_check_drbd': user => 'nagios', @@ -11,6 +15,7 @@ 'ALL = NOPASSWD: /usr/local/sbin/check_drbd_status', 'ALL = NOPASSWD: /usr/local/sbin/check_drbd_role', 'ALL = NOPASSWD: /usr/local/sbin/check_drbd_cluster_ip', + 'ALL = NOPASSWD: /usr/local/sbin/check_nfs_status', ], } @@ -50,11 +55,25 @@ nrpe::monitor_service { 'check_drbd_cluster_ip': description => 'Check DRBD Cluster IP assignment', nrpe_command => "/usr/bin/sudo /usr/local/sbin/check_drbd_cluster_ip ${::hostname} ${drbd_role} ${cluster_ip}", -require => File['/usr/local/sbin/check_drbd_role'], +require => File['/usr/local/sbin/check_drbd_cluster_ip'], } # Set up DRBD service monitoring nrpe::monitor_systemd_unit_state { 'drbd': require => Service['drbd'], } + +file { '/usr/local/sbin/check_nfs_status': +source => 'puppet:///modules/labstore/monitor/check_nfs_status', +mode => '0755', +owner => 'root', +group => 'root', +} + +nrpe::monitor_service { 'check_nfs_status': +description => 'Check if NFS is served over cluster IP', +nrpe_command => "/usr/bin/sudo /usr/local/sbin/check_nfs_status ${cluster_ip}", +require => File['/usr/local/sbin/check_nfs_status'], +} + } diff --git a/modules/role/manifests/labs/nfs/secondary.pp b/modules/role/manifests/labs/nfs/secondary.pp index c53b3c3..6bc2a7b 100644 --- a/modules/role/manifests/labs/nfs/secondary.pp +++ b/modules/role/manifests/labs/nfs/secondary.pp @@ -84,11 +84,6 @@ enable => false, } -class { 'labstore::monitoring::drbd': -drbd_role => $drbd_role, -cluster_ip => $cluster_ip, -} - # state via nfs-manage service { 'nfs-kernel-server': enable => false, @@ -101,4 +96,8 @@ group => 'root', } +class {
[MediaWiki-commits] [Gerrit] operations/puppet[production]: labstore: Check that NFS is being served over Cluster IP for...
Madhuvishy has uploaded a new change for review. https://gerrit.wikimedia.org/r/320946 Change subject: labstore: Check that NFS is being served over Cluster IP for secondary cluster .. labstore: Check that NFS is being served over Cluster IP for secondary cluster Bug: T144633 Change-Id: I7ba09c727be21a01746dbe5c955f2c96e3dc1dfc --- A modules/labstore/files/monitor/check_nfs_status R modules/labstore/manifests/monitoring/secondary.pp M modules/role/manifests/labs/nfs/secondary.pp 3 files changed, 69 insertions(+), 10 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/operations/puppet refs/changes/46/320946/1 diff --git a/modules/labstore/files/monitor/check_nfs_status b/modules/labstore/files/monitor/check_nfs_status new file mode 100644 index 000..3eba3cf --- /dev/null +++ b/modules/labstore/files/monitor/check_nfs_status @@ -0,0 +1,41 @@ +#!/usr/bin/python3 +import argparse +import os +import subprocess +import sys + + +def check_nfs_status(cluster_ip): +""" +Check if NFS is served over the cluster IP +:param cluster_ip: string +:returns: boolean +""" + +exports = [export for export in str(subprocess.check_output( +['/sbin/showmount', '-e', cluster_ip])).split('\\n') if export] + +if len(exports) > 1: +print('NFS served over cluster ip OK') +return True + +print('No NFS exports served over Cluster IP') +return False + + +def main(): + +if not os.geteuid() == 0: +print('Script not run as root') +sys.exit(1) + +parser = argparse.ArgumentParser('Check if NFS is served over cluster IP') +parser.add_argument('ip', help='Cluster IP assigned to primary node') +args = parser.parse_args() + +if not check_nfs_status(args.ip): +sys.exit(1) + + +if __name__ == '__main__': +main() diff --git a/modules/labstore/manifests/monitoring/drbd.pp b/modules/labstore/manifests/monitoring/secondary.pp similarity index 64% rename from modules/labstore/manifests/monitoring/drbd.pp rename to modules/labstore/manifests/monitoring/secondary.pp index cfc8266..aa73990 100644 --- a/modules/labstore/manifests/monitoring/drbd.pp +++ b/modules/labstore/manifests/monitoring/secondary.pp @@ -1,9 +1,13 @@ -# == Class: labstore::monitoring::drbd +# == Class: labstore::monitoring::secondary # -# Installs icinga checks to make sure resource status on a drbd node is OK, -# and to check that the nodes conform to the expected drbd roles. +# Installs icinga checks to +# - make sure resource status on a drbd node is OK, +# - check that the nodes conform to the expected drbd roles. +# - drbd service status +# - check that cluster ip is assigned to DRBD primary +# - NFS is being served over cluster IP -class labstore::monitoring::drbd($drbd_role, $cluster_ip, $resource = 'all') { +class labstore::monitoring::secondary($drbd_role, $cluster_ip, $resource = 'all') { sudo::user { 'nagios_check_drbd': user => 'nagios', @@ -11,6 +15,7 @@ 'ALL = NOPASSWD: /usr/local/sbin/check_drbd_status', 'ALL = NOPASSWD: /usr/local/sbin/check_drbd_role', 'ALL = NOPASSWD: /usr/local/sbin/check_drbd_cluster_ip', + 'ALL = NOPASSWD: /usr/local/sbin/check_nfs_status', ], } @@ -50,11 +55,25 @@ nrpe::monitor_service { 'check_drbd_cluster_ip': description => 'Check DRBD Cluster IP assignment', nrpe_command => "/usr/bin/sudo /usr/local/sbin/check_drbd_cluster_ip ${::hostname} ${drbd_role} ${cluster_ip}", -require => File['/usr/local/sbin/check_drbd_role'], +require => File['/usr/local/sbin/check_drbd_cluster_ip'], } # Set up DRBD service monitoring nrpe::monitor_systemd_unit_state { 'drbd': require => Service['drbd'], } + +file { '/usr/local/sbin/check_nfs_status': +source => 'puppet:///modules/labstore/monitor/check_nfs_status', +mode => '0755', +owner => 'root', +group => 'root', +} + +nrpe::monitor_service { 'check_nfs_status': +description => 'Check if NFS is served over cluster IP', +nrpe_command => "/usr/bin/sudo /usr/local/sbin/check_nfs_status ${cluster_ip}", +require => File['/usr/local/sbin/check_nfs_status'], +} + } diff --git a/modules/role/manifests/labs/nfs/secondary.pp b/modules/role/manifests/labs/nfs/secondary.pp index c53b3c3..6bc2a7b 100644 --- a/modules/role/manifests/labs/nfs/secondary.pp +++ b/modules/role/manifests/labs/nfs/secondary.pp @@ -84,11 +84,6 @@ enable => false, } -class { 'labstore::monitoring::drbd': -drbd_role => $drbd_role, -cluster_ip => $cluster_ip, -} - # state via nfs-manage service { 'nfs-kernel-server': enable => false, @@ -101,4 +96,8 @@ group => 'root', } +