mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
- added rrd_pipes to check script
- renamed service_* to *_service
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/*
|
||||
@@ -36,8 +37,11 @@ else {
|
||||
// ini_set('error_reporting', 0);
|
||||
}
|
||||
|
||||
rrdtool_pipe_open($rrd_process, $rrd_pipes);
|
||||
|
||||
foreach (dbFetchRows('SELECT * FROM `devices` AS D, `services` AS S WHERE S.device_id = D.device_id ORDER by D.device_id DESC') as $service) {
|
||||
// Run the polling function
|
||||
service_poll($service);
|
||||
poll_service($service);
|
||||
|
||||
} //end foreach
|
||||
rrdtool_pipe_close($rrd_process, $rrd_pipes);
|
||||
|
@@ -26,7 +26,7 @@ $device_id = mres($vars['device_id']);
|
||||
if (is_numeric($service_id) && $service_id > 0) {
|
||||
// Need to edit.
|
||||
$update = array('service_desc' => $desc, 'service_ip' => $ip, 'service_param' => $param);
|
||||
if (service_edit($update, $service_id)) {
|
||||
if (edit_service($update, $service_id)) {
|
||||
$status = array('status' =>0, 'message' => 'Modified Service: <i>'.$service_id.': '.$type.'</i>');
|
||||
}
|
||||
else {
|
||||
@@ -35,7 +35,7 @@ if (is_numeric($service_id) && $service_id > 0) {
|
||||
}
|
||||
else {
|
||||
// Need to add.
|
||||
$service_id = service_add($device_id, $type, $desc, $ip, $param);
|
||||
$service_id = add_service($device_id, $type, $desc, $ip, $param);
|
||||
if ($service_id == false) {
|
||||
$status = array('status' =>1, 'message' => 'ERROR: Failed to add Service: <i>'.$type.'</i>');
|
||||
}
|
||||
|
@@ -19,7 +19,7 @@ else {
|
||||
$status = array('status' =>1, 'message' => 'No Service has been selected');
|
||||
}
|
||||
else {
|
||||
if (service_delete($vars['service_id'])) {
|
||||
if (delete_service($vars['service_id'])) {
|
||||
$status = array('status' =>0, 'message' => 'Service: <i>'.$vars['service_id'].', has been deleted.</i>');
|
||||
}
|
||||
else {
|
||||
|
@@ -3,7 +3,7 @@ require $config['install_dir'].'/includes/object-cache.inc.php';
|
||||
|
||||
// FIXME - this could do with some performance improvements, i think. possible rearranging some tables and setting flags at poller time (nothing changes outside of then anyways)
|
||||
|
||||
$service_status = service_status();
|
||||
$service_status = get_service_status();
|
||||
$if_alerts = dbFetchCell("SELECT COUNT(port_id) FROM `ports` WHERE `ifOperStatus` = 'down' AND `ifAdminStatus` = 'up' AND `ignore` = '0'");
|
||||
|
||||
if ($_SESSION['userlevel'] >= 5) {
|
||||
|
@@ -8,7 +8,7 @@ else {
|
||||
if ($_SESSION['userlevel'] >= '10') {
|
||||
$updated = '1';
|
||||
|
||||
$service_id = service_add($vars['device'], $vars['type'], $vars['descr'], $vars['ip'], $vars['params'], 0);
|
||||
$service_id = add_service($vars['device'], $vars['type'], $vars['descr'], $vars['ip'], $vars['params'], 0);
|
||||
if ($service_id) {
|
||||
$message .= $message_break.'Service added ('.$service_id.')!';
|
||||
$message_break .= '<br />';
|
||||
|
@@ -5,7 +5,7 @@ if (is_admin() === true || is_read() === true) {
|
||||
if ($_SESSION['userlevel'] >= '10') {
|
||||
$updated = '1';
|
||||
|
||||
$service_id = service_add($vars['device'], $vars['type'], $vars['descr'], $vars['ip'], $vars['params'], 0);
|
||||
$service_id = add_service($vars['device'], $vars['type'], $vars['descr'], $vars['ip'], $vars['params'], 0);
|
||||
if ($service_id) {
|
||||
$message .= $message_break.'Service added ('.$service_id.')!';
|
||||
$message_break .= '<br />';
|
||||
|
@@ -7,7 +7,7 @@ $ports['up'] = dbFetchCell("SELECT COUNT(*) FROM `ports` WHERE device_id =
|
||||
$ports['down'] = dbFetchCell("SELECT COUNT(*) FROM `ports` WHERE device_id = ? AND `ifOperStatus` = 'down' AND `ifAdminStatus` = 'up'", array($device['device_id']));
|
||||
$ports['disabled'] = dbFetchCell("SELECT COUNT(*) FROM `ports` WHERE device_id = ? AND `ifAdminStatus` = 'down'", array($device['device_id']));
|
||||
|
||||
$services = service_status($device['device_id']);
|
||||
$services = get_service_status($device['device_id']);
|
||||
$services['total'] = array_sum($services);
|
||||
|
||||
if ($services[0]) {
|
||||
|
@@ -4,6 +4,9 @@ $pagetitle[] = 'Services';
|
||||
|
||||
print_optionbar_start();
|
||||
|
||||
require_once 'includes/modal/new_service.inc.php';
|
||||
require_once 'includes/modal/delete_service.inc.php';
|
||||
|
||||
echo "<span style='font-weight: bold;'>Services</span> » ";
|
||||
|
||||
$menu_options = array(
|
||||
@@ -86,15 +89,16 @@ if (isset($state)) {
|
||||
}
|
||||
|
||||
?>
|
||||
<div class="row col-sm-12" id="nagios-services">
|
||||
<table class="table table-hover table-condensed table-striped">
|
||||
<tr>
|
||||
<th>Device</th>
|
||||
<th>Service</th>
|
||||
<th>Changed</th>
|
||||
<th>Message</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
<div class="row col-sm-12"><span id="message"></span></div>
|
||||
<table class="table table-hover table-condensed table-striped">
|
||||
<tr>
|
||||
<th>Device</th>
|
||||
<th>Service</th>
|
||||
<th>Changed</th>
|
||||
<th>Message</th>
|
||||
<th>Description</th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
<?php
|
||||
if ($_SESSION['userlevel'] >= '5') {
|
||||
$host_sql = 'SELECT * FROM devices AS D, services AS S WHERE D.device_id = S.device_id GROUP BY D.hostname ORDER BY D.hostname';
|
||||
@@ -109,7 +113,7 @@ $shift = 1;
|
||||
foreach (dbFetchRows($host_sql, $host_par) as $device) {
|
||||
$device_id = $device['device_id'];
|
||||
$device_hostname = $device['hostname'];
|
||||
$devlink = generate_device_link($device);
|
||||
$devlink = generate_device_link($device,null,array('tab' => 'services'));
|
||||
if ($shift == 1) {
|
||||
array_unshift($sql_param, $device_id);
|
||||
$shift = 0;
|
||||
@@ -129,18 +133,21 @@ foreach (dbFetchRows($host_sql, $host_par) as $device) {
|
||||
$status = "<span class='grey'><b>".$service['service_type']."</b></span>";
|
||||
}
|
||||
?>
|
||||
<tr>
|
||||
<td><?=$devlink?></td>
|
||||
<td><?=$status?></td>
|
||||
<td><?=formatUptime(time() - $service['service_changed'])?></td>
|
||||
<td><span class='box-desc'><?=nl2br(trim($service['service_message']))?></span></td>
|
||||
<td><span class='box-desc'><?=nl2br(trim($service['service_desc']))?></span></td>
|
||||
</tr>
|
||||
<tr id="row_<?=$service['service_id']?>">
|
||||
<td><?=$devlink?></td>
|
||||
<td><?=$status?></td>
|
||||
<td><?=formatUptime(time() - $service['service_changed'])?></td>
|
||||
<td><span class='box-desc'><?=nl2br(trim($service['service_message']))?></span></td>
|
||||
<td><span class='box-desc'><?=nl2br(trim($service['service_desc']))?></span></td>
|
||||
<td>
|
||||
<button type='button' class='btn btn-primary btn-sm' aria-label='Edit' data-toggle='modal' data-target='#create-service' data-service_id='<?=$service['service_id']?>' name='edit-service'><span class='glyphicon glyphicon-pencil' aria-hidden='true'></span></button>
|
||||
<button type='button' class='btn btn-danger btn-sm' aria-label='Delete' data-toggle='modal' data-target='#confirm-delete' data-service_id='<?=$service['service_id']?>' name='delete-service'><span class='glyphicon glyphicon-trash' aria-hidden='true'></span></button>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
}//end foreach
|
||||
|
||||
unset($samehost);
|
||||
}//end foreach
|
||||
?>
|
||||
</table>
|
||||
</div>
|
||||
</table>
|
||||
|
@@ -24,7 +24,7 @@ if ($config['discover_services']) {
|
||||
$split_oid = explode('.', $oid);
|
||||
$tcp_port = $split_oid[(count($split_oid) - 6)];
|
||||
if ($known_services[$tcp_port]) {
|
||||
service_discover($device, $known_services[$tcp_port]);
|
||||
discover_service($device, $known_services[$tcp_port]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
function service_status($device = null) {
|
||||
function get_service_status($device = null) {
|
||||
$sql_query = "SELECT service_status, count(service_status) as count FROM services WHERE";
|
||||
$sql_param = array();
|
||||
$add = 0;
|
||||
@@ -33,7 +33,7 @@ function service_status($device = null) {
|
||||
return $service_count;
|
||||
}
|
||||
|
||||
function service_add($device, $type, $desc, $ip='localhost', $param = "", $ignore = 0) {
|
||||
function add_service($device, $type, $desc, $ip='localhost', $param = "", $ignore = 0) {
|
||||
|
||||
if (!is_array($device)) {
|
||||
$device = device_by_id_cache($device);
|
||||
@@ -83,7 +83,7 @@ function service_get($device = null, $service = null) {
|
||||
return $services;
|
||||
}
|
||||
|
||||
function service_edit($update=array(), $service=null) {
|
||||
function edit_service($update=array(), $service=null) {
|
||||
if (!is_numeric($service)) {
|
||||
return false;
|
||||
}
|
||||
@@ -91,7 +91,7 @@ function service_edit($update=array(), $service=null) {
|
||||
return dbUpdate($update, 'services', '`service_id`=?', array($service));
|
||||
}
|
||||
|
||||
function service_delete($service=null) {
|
||||
function delete_service($service=null) {
|
||||
if (!is_numeric($service)) {
|
||||
return false;
|
||||
}
|
||||
@@ -99,17 +99,17 @@ function service_delete($service=null) {
|
||||
return dbDelete('services', '`service_id` = ?', array($service));
|
||||
}
|
||||
|
||||
function service_discover($device, $service) {
|
||||
function discover_service($device, $service) {
|
||||
if (! dbFetchCell('SELECT COUNT(service_id) FROM `services` WHERE `service_type`= ? AND `device_id` = ?', array($service, $device['device_id']))) {
|
||||
service_add($device, $service, "(Auto discovered) $service");
|
||||
add_service($device, $service, "(Auto discovered) $service");
|
||||
log_event('Autodiscovered service: type '.mres($service), $device, 'service');
|
||||
echo '+';
|
||||
}
|
||||
echo "$service ";
|
||||
}
|
||||
|
||||
function service_poll($service) {
|
||||
global $config, $device;
|
||||
function poll_service($service) {
|
||||
global $config;
|
||||
$update = array();
|
||||
$old_status = $service['service_status'];
|
||||
|
||||
@@ -128,7 +128,7 @@ function service_poll($service) {
|
||||
// Some debugging
|
||||
d_echo("\nNagios Service - ".$service['service_id']."\n");
|
||||
d_echo("Request: ".$check_cmd."\n");
|
||||
list($status, $msg, $perf) = service_check($check_cmd);
|
||||
list($status, $msg, $perf) = check_service($check_cmd);
|
||||
d_echo("Response: ".$msg."\n");
|
||||
|
||||
// TODO: Use proper Nagios service status. 0=Ok,1=Warning,2=Critical,Else=Unknown
|
||||
@@ -154,7 +154,7 @@ function service_poll($service) {
|
||||
if (count($perf) > 0) {
|
||||
// Yes, We have perf data.
|
||||
$filename = "services-".$service['service_id'].".rrd";
|
||||
$rrd_filename = $config['rrd_dir'] . "/" . $device['hostname'] . "/" . safename ($filename);
|
||||
$rrd_filename = $config['rrd_dir'] . "/" . $service['hostname'] . "/" . safename ($filename);
|
||||
|
||||
// Set the DS in the DB if it is blank.
|
||||
$DS = array();
|
||||
@@ -198,13 +198,13 @@ function service_poll($service) {
|
||||
}
|
||||
|
||||
if (count($update) > 0) {
|
||||
service_edit($update,$service['service_id']);
|
||||
edit_service($update,$service['service_id']);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function service_check($command) {
|
||||
function check_service($command) {
|
||||
// This array is used to test for valid UOM's to be used for graphing.
|
||||
// Valid values from: https://nagios-plugins.org/doc/guidelines.html#AEN200
|
||||
// Note: This array must be decend from 2 char to 1 char so that the search works correctly.
|
||||
|
Reference in New Issue
Block a user