mirror of
				https://github.com/centreon/centreon-plugins.git
				synced 2025-10-31 19:33:50 +01:00 
			
		
		
		
	(plugin) apps::ceph::restapi - add mode storage (#4205)
This commit is contained in:
		
							parent
							
								
									3c7c0418ce
								
							
						
					
					
						commit
						5f43c84bf8
					
				
							
								
								
									
										118
									
								
								src/apps/ceph/restapi/mode/storage.pm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								src/apps/ceph/restapi/mode/storage.pm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,118 @@ | ||||
| # | ||||
| # Copyright 2023 Centreon (http://www.centreon.com/) | ||||
| # | ||||
| # Centreon is a full-fledged industry-strength solution that meets | ||||
| # the needs in IT infrastructure and application monitoring for | ||||
| # service performance. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| # | ||||
| 
 | ||||
| package apps::ceph::restapi::mode::storage; | ||||
| 
 | ||||
| use base qw(centreon::plugins::templates::counter); | ||||
| 
 | ||||
| use strict; | ||||
| use warnings; | ||||
| 
 | ||||
| sub custom_space_usage_output { | ||||
|     my ($self, %options) = @_; | ||||
| 
 | ||||
|     my ($total_size_value, $total_size_unit) = $self->{perfdata}->change_bytes(value => $self->{result_values}->{total_space}); | ||||
|     my ($total_used_value, $total_used_unit) = $self->{perfdata}->change_bytes(value => $self->{result_values}->{used_space}); | ||||
|     my ($total_free_value, $total_free_unit) = $self->{perfdata}->change_bytes(value => $self->{result_values}->{free_space}); | ||||
|     return sprintf( | ||||
|         'raw storage space usage total: %s used: %s (%.2f%%) free: %s (%.2f%%)', | ||||
|         $total_size_value . " " . $total_size_unit, | ||||
|         $total_used_value . " " . $total_used_unit, $self->{result_values}->{prct_used_space}, | ||||
|         $total_free_value . " " . $total_free_unit, $self->{result_values}->{prct_free_space} | ||||
|     ); | ||||
| } | ||||
| 
 | ||||
| sub set_counters { | ||||
|     my ($self, %options) = @_; | ||||
|      | ||||
|     $self->{maps_counters_type} = [ | ||||
|         { name => 'global', type => 0, cb_prefix_output => 'prefix_global_output' } | ||||
|     ]; | ||||
| 
 | ||||
|     $self->{maps_counters}->{global} = [ | ||||
|         { label => 'space-usage', nlabel => 'storage.raw.space.usage.bytes', set => { | ||||
|                 key_values => [ { name => 'used_space' }, { name => 'free_space' }, { name => 'prct_used_space' }, { name => 'prct_free_space' }, { name => 'total_space' } ], | ||||
|                 closure_custom_output => $self->can('custom_space_usage_output'), | ||||
|                 perfdatas => [ | ||||
|                     { template => '%d', min => 0, max => 'total_space', unit => 'B', cast_int => 1, label_extra_instance => 1 } | ||||
|                 ] | ||||
|             } | ||||
|         }, | ||||
|         { label => 'space-usage-free', nlabel => 'storage.raw.space.free.bytes', display_ok => 0, set => { | ||||
|                 key_values => [ { name => 'free_space' }, { name => 'used_space' }, { name => 'prct_used_space' }, { name => 'prct_free_space' }, { name => 'total_space' } ], | ||||
|                 closure_custom_output => $self->can('custom_space_usage_output'), | ||||
|                 perfdatas => [ | ||||
|                     { template => '%d', min => 0, max => 'total_space', unit => 'B', cast_int => 1, label_extra_instance => 1 } | ||||
|                 ] | ||||
|             } | ||||
|         }, | ||||
|         { label => 'space-usage-prct', nlabel => 'storage.raw.space.usage.percentage', display_ok => 0, set => { | ||||
|                 key_values => [ { name => 'prct_used_space' }, { name => 'used_space' }, { name => 'free_space' }, { name => 'prct_free_space' }, { name => 'total_space' } ], | ||||
|                 closure_custom_output => $self->can('custom_space_usage_output'), | ||||
|                 perfdatas => [ | ||||
|                     { template => '%.2f', min => 0, max => 100, unit => '%', label_extra_instance => 1 } | ||||
|                 ] | ||||
|             } | ||||
|         } | ||||
|     ]; | ||||
| } | ||||
| 
 | ||||
| sub new { | ||||
|     my ($class, %options) = @_; | ||||
|     my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); | ||||
|     bless $self, $class; | ||||
| 
 | ||||
|     $options{options}->add_options(arguments => {}); | ||||
| 
 | ||||
|     return $self; | ||||
| } | ||||
| 
 | ||||
| sub manage_selection { | ||||
|     my ($self, %options) = @_; | ||||
| 
 | ||||
|     my $health = $options{custom}->request_api(endpoint => '/api/health/minimal'); | ||||
|      | ||||
|     $self->{global} = {  | ||||
|         total_space => $health->{df}->{stats}->{total_bytes}, | ||||
|         used_space => $health->{df}->{stats}->{total_used_raw_bytes}, | ||||
|         free_space => $health->{df}->{stats}->{total_bytes} - $health->{df}->{stats}->{total_used_raw_bytes}, | ||||
|         prct_used_space => $health->{df}->{stats}->{total_used_raw_bytes} * 100 / $health->{df}->{stats}->{total_bytes}, | ||||
|         prct_free_space => ($health->{df}->{stats}->{total_bytes} - $health->{df}->{stats}->{total_used_raw_bytes}) * 100 / $health->{df}->{stats}->{total_bytes} | ||||
|     }; | ||||
| } | ||||
| 
 | ||||
| 1; | ||||
| 
 | ||||
| __END__ | ||||
| 
 | ||||
| =head1 MODE | ||||
| 
 | ||||
| Check raw storage. | ||||
| 
 | ||||
| =over 8 | ||||
| 
 | ||||
| =item B<--warning-*> B<--critical-*> | ||||
| 
 | ||||
| Thresholds. | ||||
| Can be: 'space-usage', 'space-usage-free', 'space-usage-prct'. | ||||
| 
 | ||||
| =back | ||||
| 
 | ||||
| =cut | ||||
| @ -33,7 +33,8 @@ sub new { | ||||
|         'health'     => 'apps::ceph::restapi::mode::health', | ||||
|         'list-pools' => 'apps::ceph::restapi::mode::listpools', | ||||
|         'osd'        => 'apps::ceph::restapi::mode::osd', | ||||
|         'pools'      => 'apps::ceph::restapi::mode::pools' | ||||
|         'pools'      => 'apps::ceph::restapi::mode::pools', | ||||
|         'storage'    => 'apps::ceph::restapi::mode::storage' | ||||
|     }; | ||||
| 
 | ||||
|     $self->{custom_modes}->{api} = 'apps::ceph::restapi::custom::api'; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user