function performance_nagios in Devel 5
Implementation of hook_nagios()
File
- performance/
performance.module, line 528
Code
function performance_nagios() {
$info = performance_nagios_info();
$id = $info['id'];
// Find out if we have what we need enabled
$sum = array();
$sum[] = variable_get('performance_summary_db', 0);
$sum[] = variable_get('performance_summary_apc', 0);
$go = array_sum($sum);
if (!$go) {
return array(
$id => array(
'status' => NAGIOS_STATUS_UNKNOWN,
'type' => 'perf',
'text' => t('Performance logging is not enabled'),
),
);
}
// Initialize variables
$total_rows = $total_bytes = $total_millisecs = $total_accesses = $total_query_time = $total_query_count = 0;
// Check which data store to use
if (variable_get('performance_summary_apc', 0) && function_exists('apc_cache_info')) {
// Get the data from the APC cache
foreach (performance_apc_list_all() as $key) {
$data_list[] = apc_fetch($key);
}
}
else {
// Get the data form the database table for URLs that have been accessed in the last 15 minutes
$result = db_query("SELECT * FROM {performance_summary} WHERE last_access >= %d", time() - 15 * 60);
while ($row = db_fetch_array($result)) {
$data_list[] = $row;
}
}
foreach ($data_list as $data) {
$total_rows++;
// Calculate running averages
$total_bytes += $data['bytes_avg'];
$total_millisecs += $data['millisecs_avg'];
$total_accesses += $data['num_accesses'];
$total_query_time += $data['query_timer_avg'];
$total_query_count += $data['query_count_avg'];
}
// Protect against divide by zero
if ($total_rows > 0) {
$ms_avg = number_format($total_millisecs / $total_rows, 1, '.', '');
$ms_query = number_format($total_query_time / $total_rows, 1, '.', '');
$query_count = number_format($total_query_count / $total_rows, 2, '.', '');
$mb_avg = number_format($total_bytes / $total_rows / 1024 / 1024, 1);
}
else {
$mb_avg = '';
$ms_avg = '';
$ms_query = '';
$query_count = '';
}
$status = NAGIOS_STATUS_OK;
return array(
'ACC' => array(
'status' => $status,
'type' => 'perf',
'text' => $total_accesses,
),
'MS' => array(
'status' => $status,
'type' => 'perf',
'text' => $ms_avg,
),
'MMB' => array(
'status' => $status,
'type' => 'perf',
'text' => $mb_avg,
),
'QRC' => array(
'status' => $status,
'type' => 'perf',
'text' => $query_count,
),
'QRT' => array(
'status' => $status,
'type' => 'perf',
'text' => $ms_query,
),
);
}