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; |