Subversion Repositories vnag

Rev

Rev 75 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 75 Rev 77
Line 1... Line 1...
1
<?php /* <ViaThinkSoftSignature>
1
<?php /* <ViaThinkSoftSignature>
2
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
23
Q==
23
A==
24
</ViaThinkSoftSignature> */ ?>
24
</ViaThinkSoftSignature> */ ?>
25
<?php
25
<?php
26
 
26
 
27
/*
27
/*
28
 * VNag - Nagios Framework for PHP
28
 * VNag - Nagios Framework for PHP
29
 * Developed by Daniel Marschall, ViaThinkSoft <www.viathinksoft.com>
29
 * Developed by Daniel Marschall, ViaThinkSoft <www.viathinksoft.com>
30
 * Licensed under the terms of the Apache 2.0 license
30
 * Licensed under the terms of the Apache 2.0 license
31
 *
31
 *
32
 * Revision 2023-10-02
32
 * Revision 2023-10-13
33
 */
33
 */
34
 
34
 
35
declare(ticks=1);
35
declare(ticks=1);
36
 
36
 
37
class MdStatCheck extends VNag {
37
class MdStatCheck extends VNag {
Line 65... Line 65...
65
        private function raidLevel($device) {
65
        private function raidLevel($device) {
66
                $level_file = "/sys/block/$device/md/level";
66
                $level_file = "/sys/block/$device/md/level";
67
                if (!file_exists($level_file)) {
67
                if (!file_exists($level_file)) {
68
                        throw new VNagException("Kernel too old to fetch RAID level of array $device");
68
                        throw new VNagException("Kernel too old to fetch RAID level of array $device");
69
                }
69
                }
-
 
70
                $cont = @file_get_contents($level_file);
-
 
71
                if ($cont === false) {
-
 
72
                        throw new VNagException("Cannot read $level_file");
-
 
73
                }
70
                $level = file_exists($level_file) ? trim(file_get_contents($level_file)) : 'RAID?';
74
                $level = file_exists($level_file) ? trim($cont) : 'RAID?';
71
                return $level;
75
                return $level;
72
        }
76
        }
73
 
77
 
74
        private function raidState($device) {
78
        private function raidState($device) {
75
                // mdadm outputs "clean, degraded", but /sys/block/md0/md/array_state only outputs "clean"
79
                // mdadm outputs "clean, degraded", but /sys/block/md0/md/array_state only outputs "clean"
Line 84... Line 88...
84
                // Fallback
88
                // Fallback
85
                $state_file = "/sys/block/$device/md/array_state";
89
                $state_file = "/sys/block/$device/md/array_state";
86
                if (!file_exists($state_file)) {
90
                if (!file_exists($state_file)) {
87
                        throw new VNagException("Kernel too old to fetch state of array $device");
91
                        throw new VNagException("Kernel too old to fetch state of array $device");
88
                }
92
                }
89
                $state = trim(file_get_contents($state_file));
93
                $cont = @file_get_contents($state_file);
-
 
94
                if ($cont === false) {
-
 
95
                        throw new VNagException("Cannot read $state_file");
-
 
96
                }
-
 
97
                $state = trim($cont);
90
                return $state;
98
                return $state;
91
        }
99
        }
92
 
100
 
93
        private function check_disk_state($array, $disk) {
101
        private function check_disk_state($array, $disk) {
94
                $disk_state_file = "/sys/block/$array/md/dev-$disk/state";
102
                $disk_state_file = "/sys/block/$array/md/dev-$disk/state";
95
                if (!file_exists($disk_state_file)) {
103
                if (!file_exists($disk_state_file)) {
96
                        throw new VNagException("Kernel too old to fetch state of disk $array:$disk");
104
                        throw new VNagException("Kernel too old to fetch state of disk $array:$disk");
97
                }
105
                }
98
                $disk_states = trim(file_get_contents($disk_state_file));
106
                $cont = @file_get_contents($disk_state_file);
-
 
107
                if ($cont === false) {
-
 
108
                        throw new VNagException("Cannot read $disk_state_file");
-
 
109
                }
-
 
110
                $disk_states = trim($cont);
99
                $disk_state_ary = explode(',', $disk_states);
111
                $disk_state_ary = explode(',', $disk_states);
100
                $disk_state_ary = array_map('trim', $disk_state_ary);
112
                $disk_state_ary = array_map('trim', $disk_state_ary);
101
 
113
 
102
                $status = VNag::STATUS_OK;
114
                $status = VNag::STATUS_OK;
103
                $verbosity = VNag::VERBOSITY_ADDITIONAL_INFORMATION;
115
                $verbosity = VNag::VERBOSITY_ADDITIONAL_INFORMATION;