new templates and scripts
This commit is contained in:
		
							
								
								
									
										87
									
								
								bin/apc-check.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								bin/apc-check.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,87 @@ | ||||
| <?php | ||||
|  | ||||
| $item = $argv[1]; | ||||
|  | ||||
| function file_get_contents_curl($url) { | ||||
|     $ch = curl_init(); | ||||
|  | ||||
|     curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE); | ||||
|     curl_setopt($ch, CURLOPT_HEADER, 0); | ||||
|     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); | ||||
|     curl_setopt($ch, CURLOPT_URL, 'http://127.0.0.1/apc-stats.php?apc=' . $url); | ||||
|     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); | ||||
|  | ||||
|     $data = curl_exec($ch); | ||||
|     curl_close($ch); | ||||
|  | ||||
|     return $data; | ||||
| } | ||||
|  | ||||
| switch($item) { | ||||
|                 case 'mem.used': | ||||
|                         $results = file_get_contents_curl("sma_info"); | ||||
|                         if ($results) { | ||||
|                                 $results = unserialize($results); | ||||
|                                 echo $results["seg_size"] * $results["num_seg"] - $results["avail_mem"]; | ||||
|                         } | ||||
|                         else | ||||
|                                 exit; | ||||
|                         break; | ||||
|                 case 'mem.avail': | ||||
|                         $results = file_get_contents_curl("sma_info"); | ||||
|                         if ($results) { | ||||
|                                 $results = unserialize($results); | ||||
|                                 echo $results["avail_mem"]; | ||||
|                         } | ||||
|                         else | ||||
|                                 exit; | ||||
|                         break; | ||||
|                 case 'hits': | ||||
|                         $results = file_get_contents_curl("cache_info"); | ||||
|                         if ($results) { | ||||
|                                 $results = unserialize($results); | ||||
|                                 echo $results["num_hits"]; | ||||
|                         } | ||||
|                         else | ||||
|                                 exit; | ||||
|                         break; | ||||
|                 case 'misses': | ||||
|                         $results = file_get_contents_curl("cache_info"); | ||||
|                         if ($results) { | ||||
|                                 $results = unserialize($results); | ||||
|                                 echo $results["num_misses"]; | ||||
|                         } | ||||
|                         else | ||||
|                                 exit; | ||||
|                         break; | ||||
|                 case 'hits_ratio': | ||||
|                         $results = file_get_contents_curl("cache_info"); | ||||
|                         if ($results) { | ||||
|                                 $results = unserialize($results); | ||||
|                                 echo ($results["num_hits"] / ($results["num_hits"] - $results["num_misses"]))*100; | ||||
|                         } | ||||
|                         else | ||||
|                                 exit; | ||||
|                         break; | ||||
|                 case 'entries': | ||||
|                         $results = file_get_contents_curl("cache_info"); | ||||
|                         if ($results) { | ||||
|                                 $results = unserialize($results); | ||||
|                                 echo $results["num_entries"]; | ||||
|                         } | ||||
|                         else | ||||
|                                 exit; | ||||
|                         break; | ||||
|                 case 'user.entries': | ||||
|                         $results = file_get_contents_curl("user_cache_info"); | ||||
|                         if ($results) { | ||||
|                                 $results = unserialize($results); | ||||
|                                 echo $results["num_entries"]; | ||||
|                         } | ||||
|                         else | ||||
|                                 exit; | ||||
|                         break; | ||||
|                 default: | ||||
|                         exit; | ||||
|         } | ||||
| ?> | ||||
							
								
								
									
										17
									
								
								bin/apc-stats.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								bin/apc-stats.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| <?php | ||||
| if ($_SERVER["REMOTE_ADDR"] == "127.0.0.1") { | ||||
|         switch($_GET['apc']) { | ||||
|                 case 'cache_info': | ||||
|                         print(serialize(apc_cache_info('',true))); | ||||
|                         break; | ||||
|                 case 'sma_info': | ||||
|                         print(serialize(apc_sma_info())); | ||||
|                         break; | ||||
|                 case 'user_cache_info': | ||||
|                         print(serialize(apc_cache_info('user',true))); | ||||
|                         break; | ||||
|                 default: | ||||
|                         exit; | ||||
|         } | ||||
| } | ||||
| ?> | ||||
							
								
								
									
										146
									
								
								bin/opcache.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								bin/opcache.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,146 @@ | ||||
| <?php | ||||
|  | ||||
| if ($_SERVER['SERVER_ADDR'] != $_SERVER['REMOTE_ADDR']){ | ||||
|     header('HTTP/1.1 401 Unauthorized', true, 401); | ||||
|     exit; | ||||
| } | ||||
|  | ||||
| $configuration = opcache_get_configuration(); | ||||
| $status = opcache_get_status(FALSE); | ||||
|  | ||||
| switch($_GET['item']) { | ||||
|     // CONFIGURATION | ||||
|     case 'version': | ||||
|         print($configuration['version']['version']); | ||||
|         break; | ||||
|     case 'enable': | ||||
|         print($configuration['directives']['opcache.enable']); | ||||
|         break; | ||||
|     case 'enable_cli': | ||||
|         print($configuration['directives']['opcache.enable_cli']); | ||||
|         break; | ||||
|     case 'use_cwd': | ||||
|         print($configuration['directives']['opcache.use_cwd']); | ||||
|         break; | ||||
|     case 'validate_timestamps': | ||||
|         print($configuration['directives']['opcache.validate_timestamps']); | ||||
|         break; | ||||
|     case 'inherited_hack': | ||||
|         print($configuration['directives']['opcache.inherited_hack']); | ||||
|         break; | ||||
|     case 'dups_fix': | ||||
|         print(($configuration['directives']['opcache.dups_fix'] ? 1 : 0)); | ||||
|         break; | ||||
|     case 'revalidate_path': | ||||
|         print(($configuration['directives']['opcache.revalidate_path'] ? 1 : 0)); | ||||
|         break; | ||||
|     case 'log_verbosity_level': | ||||
|         print($configuration['directives']['opcache.log_verbosity_level']); | ||||
|         break; | ||||
|     case 'memory_consumption': | ||||
|         print($configuration['directives']['opcache.memory_consumption']); | ||||
|         break; | ||||
|     case 'interned_strings_buffer': | ||||
|         print($configuration['directives']['opcache.interned_strings_buffer']); | ||||
|         break; | ||||
|     case 'max_accelerated_files': | ||||
|         print($configuration['directives']['opcache.max_accelerated_files']); | ||||
|         break; | ||||
|     case 'max_wasted_percentage': | ||||
|         print($configuration['directives']['opcache.max_wasted_percentage']); | ||||
|         break; | ||||
|     case 'consistency_checks': | ||||
|         print($configuration['directives']['opcache.consistency_checks']); | ||||
|         break; | ||||
|     case 'force_restart_timeout': | ||||
|         print($configuration['directives']['opcache.force_restart_timeout']); | ||||
|         break; | ||||
|     case 'revalidate_freq': | ||||
|         print($configuration['directives']['opcache.revalidate_freq']); | ||||
|         break; | ||||
|     case 'max_file_size': | ||||
|         print($configuration['directives']['opcache.max_file_size']); | ||||
|         break; | ||||
|     case 'protect_memory': | ||||
|         print(($configuration['directives']['opcache.protect_memory'] ? 1 : 0)); | ||||
|         break; | ||||
|     case 'save_comments': | ||||
|         print($configuration['directives']['opcache.save_comments']); | ||||
|         break; | ||||
|     case 'load_comments': | ||||
|         print($configuration['directives']['opcache.load_comments']); | ||||
|         break; | ||||
|     case 'fast_shutdown': | ||||
|         print($configuration['directives']['opcache.fast_shutdown']); | ||||
|         break; | ||||
|     case 'enable_file_override': | ||||
|         print(($configuration['directives']['opcache.enable_file_override'] ? 1 : 0)); | ||||
|         break; | ||||
|     case 'optimization_level': | ||||
|         print($configuration['directives']['opcache.optimization_level']); | ||||
|         break; | ||||
|  | ||||
|     // STATUS | ||||
|     case 'used_memory': | ||||
|         print($status['memory_usage']['used_memory']); | ||||
|         break; | ||||
|     case 'free_memory': | ||||
|         print($status['memory_usage']['free_memory']); | ||||
|         break; | ||||
|     case 'wasted_memory': | ||||
|         print($status['memory_usage']['wasted_memory']); | ||||
|         break; | ||||
|     case 'current_wasted_percentage': | ||||
|         print($status['memory_usage']['current_wasted_percentage']); | ||||
|         break; | ||||
|  | ||||
|     case 'buffer_size': | ||||
|         print($status['interned_strings_usage']['buffer_size']); | ||||
|         break; | ||||
|     case 'isu.used_memory': | ||||
|         print($status['interned_strings_usage']['used_memory']); | ||||
|         break; | ||||
|     case 'isu.free_memory': | ||||
|         print($status['interned_strings_usage']['free_memory']); | ||||
|         break; | ||||
|     case 'number_of_strings': | ||||
|         print($status['interned_strings_usage']['number_of_strings']); | ||||
|         break; | ||||
|  | ||||
|     case 'num_cached_scripts': | ||||
|         print($status['opcache_statistics']['num_cached_scripts']); | ||||
|         break; | ||||
|     case 'num_cached_keys': | ||||
|         print($status['opcache_statistics']['num_cached_keys']); | ||||
|         break; | ||||
|     case 'max_cached_keys': | ||||
|         print($status['opcache_statistics']['max_cached_keys']); | ||||
|         break; | ||||
|     case 'hits': | ||||
|         print($status['opcache_statistics']['hits']); | ||||
|         break; | ||||
|     case 'oom_restarts': | ||||
|         print($status['opcache_statistics']['oom_restarts']); | ||||
|         break; | ||||
|     case 'hash_restarts': | ||||
|         print($status['opcache_statistics']['hash_restarts']); | ||||
|         break; | ||||
|     case 'manual_restarts': | ||||
|         print($status['opcache_statistics']['manual_restarts']); | ||||
|         break; | ||||
|     case 'misses': | ||||
|         print($status['opcache_statistics']['misses']); | ||||
|         break; | ||||
|     case 'blacklist_misses': | ||||
|         print($status['opcache_statistics']['blacklist_misses']); | ||||
|         break; | ||||
|     case 'blacklist_miss_ratio': | ||||
|         print($status['opcache_statistics']['blacklist_miss_ratio']); | ||||
|         break; | ||||
|     case 'opcache_hit_rate': | ||||
|         print($status['opcache_statistics']['opcache_hit_rate']); | ||||
|         break; | ||||
|     default: | ||||
|         exit; | ||||
| } | ||||
| ?> | ||||
							
								
								
									
										157
									
								
								bin/rabbit.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										157
									
								
								bin/rabbit.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,157 @@ | ||||
| <?php | ||||
|  | ||||
| define('RABBITMQCTL_BIN', '/usr/sbin/rabbitmqctl 2>/dev/null'); | ||||
|  | ||||
| $results = array(); | ||||
| $cleanStats = array(); | ||||
| $matches = array(); | ||||
|  | ||||
| $stats = array(); | ||||
| $stats['queues'] = shell_exec(RABBITMQCTL_BIN . ' list_queues name durable auto_delete messages_ready messages_unacknowledged messages consumers memory'); | ||||
| $stats['exchanges'] = shell_exec(RABBITMQCTL_BIN . ' list_exchanges type durable auto_delete'); | ||||
| $stats['bindings'] = shell_exec(RABBITMQCTL_BIN . ' list_bindings source_kind destination_kind'); | ||||
| $stats['connections'] = shell_exec(RABBITMQCTL_BIN . ' list_connections state channels protocol recv_oct send_oct'); | ||||
| $stats['channels'] = shell_exec(RABBITMQCTL_BIN . ' list_channels transactional confirm consumer_count messages_unacknowledged messages_uncommitted acks_uncommitted messages_unconfirmed'); | ||||
|  | ||||
| foreach ($stats as $name => $statusString) { | ||||
|     $statusString = str_replace("\t", " ", $statusString); | ||||
|     $statusString = trim(str_replace("\r", " ", $statusString)); | ||||
|     $stats[$name] = preg_replace('/  +/', ' ', $statusString); | ||||
|     $stats[$name] = explode("\n", $statusString); | ||||
|  | ||||
|     foreach ($stats[$name] as $index => $value) { | ||||
|         if (strpos($value, '...') === false && !empty($value)) { | ||||
|             $cleanStats[$name][$index] = $value; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| // QUEUES | ||||
| if (isset($cleanStats['queues'])) { | ||||
|     foreach ($cleanStats['queues'] as $line) { | ||||
|         $columns = explode(' ', $line); | ||||
|         if (count($columns) == 8) { | ||||
|             $row = array( | ||||
|                 'queues_count' => 1, | ||||
|                 'queues_durable_count' => $columns[1] == 'true' ? 1 : 0, | ||||
|                 'queues_auto_delete_count' => $columns[2] == 'true' ? 1 : 0, | ||||
|                 'messages_ready_count' => $columns[3], | ||||
|                 'messages_unacknowledged_count' => $columns[4], | ||||
|                 'messages_count' => $columns[5], | ||||
|                 'queue_consumers_count' => $columns[6], | ||||
|                 'queues_memory_allocated' => $columns[7], | ||||
|             ); | ||||
|             $results[] = $row; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| $results[] = array( | ||||
|     'queues_count' => 0, | ||||
|     'queues_durable_count' => 0, | ||||
|     'queues_auto_delete_count' => 0, | ||||
|     'messages_ready_count' => 0, | ||||
|     'messages_unacknowledged_count' => 0, | ||||
|     'messages_count' => 0, | ||||
|     'queue_consumers_count' => 0, | ||||
|     'queues_memory_allocated' => 0, | ||||
| ); | ||||
|  | ||||
|  | ||||
| // EXCHANGES | ||||
| if (isset($cleanStats['exchanges'])) { | ||||
|     foreach ($cleanStats['exchanges'] as $line) { | ||||
|         $columns = explode(' ', $line); | ||||
|         if (count($columns) == 3) { | ||||
|             $row = array( | ||||
|                 'exchanges_count' => 1, | ||||
|                 'exchanges_durable_count' => $columns[1] == 'true' ? 1 : 0, | ||||
|                 'exchanges_auto_delete_count' => $columns[2] == 'true' ? 1 : 0, | ||||
|                 'exchanges_direct_count' => $columns[0] == 'direct' ? 1 : 0, | ||||
|                 'exchanges_topic_count' => $columns[0] == 'topic' ? 1 : 0, | ||||
|                 'exchanges_fanout_count' => $columns[0] == 'fanout' ? 1 : 0, | ||||
|                 'exchanges_headers_count' => $columns[0] == 'headers' ? 1 : 0, | ||||
|             ); | ||||
|             $results[] = $row; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| $results[] = array( | ||||
|     'exchanges_count' => 0, | ||||
|     'exchanges_durable_count' => 0, | ||||
|     'exchanges_auto_delete_count' => 0, | ||||
|     'exchanges_direct_count' => 0, | ||||
|     'exchanges_topic_count' => 0, | ||||
|     'exchanges_fanout_count' => 0, | ||||
|     'exchanges_headers_count' => 0, | ||||
| ); | ||||
|  | ||||
| // CONNECTIONS | ||||
| if (isset($cleanStats['connections'])) { | ||||
|     foreach ($cleanStats['connections'] as $line) { | ||||
|         $columns = explode(' ', $line); | ||||
|         if (count($columns) == 5) { | ||||
|             $row = array( | ||||
|                 'connections_count' => 1, | ||||
|                 'connections_starting' => $columns[0] == 'starting' ? 1 : 0, | ||||
|                 'connections_tuning' => $columns[0] == 'tuning' ? 1 : 0, | ||||
|                 'connections_opening' => $columns[0] == 'opening' ? 1 : 0, | ||||
|                 'connections_running' => $columns[0] == 'running' ? 1 : 0, | ||||
|                 'connections_blocking' => $columns[0] == 'blocking' ? 1 : 0, | ||||
|                 'connections_blocked' => $columns[0] == 'blocked' ? 1 : 0, | ||||
|                 'connections_closing' => $columns[0] == 'closing' ? 1 : 0, | ||||
|                 'connections_closed' => $columns[0] == 'closed' ? 1 : 0, | ||||
|             ); | ||||
|             $results[] = $row; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| $results[] = array( | ||||
|     'connections_count' => 0, | ||||
|     'connections_starting' => 0, | ||||
|     'connections_tuning' => 0, | ||||
|     'connections_opening' => 0, | ||||
|     'connections_running' => 0, | ||||
|     'connections_blocking' => 0, | ||||
|     'connections_blocked' => 0, | ||||
|     'connections_closing' => 0, | ||||
|     'connections_closed' => 0, | ||||
| ); | ||||
|  | ||||
| // CHANNELS | ||||
| if (isset($cleanStats['channels'])) { | ||||
|     foreach ($cleanStats['channels'] as $line) { | ||||
|         $columns = explode(' ', $line); | ||||
|         if (count($columns) == 2) { | ||||
|             $row = array( | ||||
|                 'channels_count' => 1, | ||||
|                 'channels_transactional_count' => $columns[0] == 'true' ? 1 : 0, | ||||
|                 'channels_confirm_count' => $columns[1] == 'true' ? 1 : 0, | ||||
|             ); | ||||
|             $results[] = $row; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| $results[] = array( | ||||
|     'channels_count' => 0, | ||||
|     'channels_transactional_count' => 0, | ||||
|     'channels_confirm_count' => 0, | ||||
| ); | ||||
|  | ||||
| // BINDINGS | ||||
| $results[] = array('bindings_count' => count($cleanStats['exchanges'])); | ||||
|  | ||||
| //SUMMARU | ||||
| $summary = array(); | ||||
| foreach ($results as $index => $values) { | ||||
|     foreach ($values as $name => $value) { | ||||
|         if (!isset($summary[$name])) { | ||||
|             $summary[$name] = 0; | ||||
|         } | ||||
|         $summary[$name] += $value; | ||||
|     } | ||||
| } | ||||
|  | ||||
| // PRINT | ||||
| foreach ($summary as $name => $value) { | ||||
|     echo $name . ':' . $value . "\n"; | ||||
| } | ||||
							
								
								
									
										27
									
								
								bin/rabbitmq.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								bin/rabbitmq.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| # ======================= | ||||
| cachefile='/tmp/rabbitmq.log' | ||||
| command='sudo /usr/bin/php /etc/zabbix/bin/rabbit.php' | ||||
| # ======================= | ||||
|  | ||||
| random=$RANDOM | ||||
|  | ||||
| if [ ! -e $cachefile ]; then | ||||
|         touch -d "2 hours ago" $cachefile | ||||
| fi | ||||
|  | ||||
| cachefileage=$(($(date +%s) - $(stat -c %Y $cachefile))) | ||||
| process_running=$(ps aux | grep rabbit.php | grep -v "grep" | wc -l) | ||||
|  | ||||
| if [ "$cachefileage" -gt 60 ] && [ "$process_running" -eq 0 ]; then | ||||
|     output=$($command 2>&1) | ||||
|  | ||||
|         if [ $? -eq 0 ]; then | ||||
|                 echo "$output" > $cachefile.$random | ||||
|                 mv $cachefile.$random $cachefile | ||||
|                 chown zabbix.zabbix $cachefile | ||||
|         fi | ||||
| fi | ||||
|  | ||||
| cat $cachefile | ||||
							
								
								
									
										27
									
								
								bin/rabbitmqctl.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								bin/rabbitmqctl.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| # ======================= | ||||
| cachefile='/tmp/rabbitmqctl.log' | ||||
| command='sudo /usr/sbin/rabbitmqctl status' | ||||
| # ======================= | ||||
|  | ||||
| random=$RANDOM | ||||
|  | ||||
| if [ ! -e $cachefile ]; then | ||||
|         touch -d "2 hours ago" $cachefile | ||||
| fi | ||||
|  | ||||
| cachefileage=$(($(date +%s) - $(stat -c %Y $cachefile))) | ||||
| process_running=$(ps aux | grep "rabbitmqctl status" | grep -v "grep" | wc -l) | ||||
|  | ||||
| if [ "$cachefileage" -gt 60 ] && [ "$process_running" -eq 0 ]; then | ||||
|     output=$($command 2>&1) | ||||
|  | ||||
|         if [ $? -eq 0 ]; then | ||||
|                 echo "$output" > $cachefile.$random | ||||
|                 mv $cachefile.$random $cachefile | ||||
|                 chown zabbix.zabbix $cachefile | ||||
|         fi | ||||
| fi | ||||
|  | ||||
| cat $cachefile | ||||
		Reference in New Issue
	
	Block a user
	 Gerard Stańczak
					Gerard Stańczak