mirror of
https://github.com/stylersnico/librenms.git
synced 2026-07-28 00:24:21 +02:00
Merge pull request #1789 from tuxis-ie/add-proxmox-app
Add proxmox monitoring.
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Copyright (C) 2015 Mark Schouten <mark@tuxis.nl>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; version 2 dated June,
|
||||
* 1991.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* See http://www.gnu.org/licenses/gpl.txt for the full license
|
||||
*/
|
||||
|
||||
/**
|
||||
* Fetch all VM's in a Proxmox Cluster
|
||||
* @param string $c Clustername
|
||||
* @return array An array with all the VM's on this cluster
|
||||
*/
|
||||
function proxmox_cluster_vms($c) {
|
||||
return dbFetchRows("SELECT * FROM proxmox WHERE cluster = ? ORDER BY vmid", array($c));
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch all VM's on a Proxmox node
|
||||
* @param integer $n device_id
|
||||
* @return array An array with all the VM's on this node
|
||||
*/
|
||||
function proxmox_node_vms($n) {
|
||||
return dbFetchRows("SELECT * FROM proxmox WHERE device_id = ? ORDER BY vmid", array($n));
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch all info about a Proxmox VM
|
||||
* @param integer $vmid Proxmox VM ID
|
||||
* @param string $c Clustername
|
||||
* @return array An array with all info of this VM on this cluster, including ports
|
||||
*/
|
||||
function proxmox_vm_info($vmid, $c) {
|
||||
$vm = dbFetchRow("SELECT pm.*, d.hostname AS host, d.device_id FROM proxmox pm, devices d WHERE pm.device_id = d.device_id AND pm.vmid = ? AND pm.cluster = ?", array($vmid, $c));
|
||||
$appid = dbFetchRow("SELECT app_id FROM applications WHERE device_id = ? AND app_type = ?", array($vm['device_id'], 'proxmox'));
|
||||
|
||||
$vm['ports'] = dbFetchRows("SELECT * FROM proxmox_ports WHERE vm_id = ?", array($vm['id']));
|
||||
$vm['app_id'] = $appid['app_id'];
|
||||
return $vm;
|
||||
}
|
||||
@@ -12,6 +12,35 @@
|
||||
* @copyright (C) 2013 LibreNMS Group
|
||||
*/
|
||||
|
||||
/**
|
||||
* Compare $t with the value of $vars[$v], if that exists
|
||||
* @param string $v Name of the var to test
|
||||
* @param string $t Value to compare $vars[$v] to
|
||||
* @return boolean true, if values are the same, false if $vars[$v] is unset or values differ
|
||||
*/
|
||||
function var_eq($v, $t) {
|
||||
global $vars;
|
||||
if (isset($vars[$v]) && $vars[$v] == $t) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of $vars[$v], if it exists
|
||||
* @param string $v Name of the var to get
|
||||
* @return string|boolean The value of $vars[$v] if it exists, false if it does not exist
|
||||
*/
|
||||
function var_get($v) {
|
||||
global $vars;
|
||||
if (isset($vars[$v])) {
|
||||
return $vars[$v];
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function data_uri($file, $mime) {
|
||||
$contents = file_get_contents($file);
|
||||
|
||||
@@ -3,7 +3,12 @@
|
||||
if (is_numeric($vars['id']) && ($auth || application_permitted($vars['id']))) {
|
||||
$app = get_application_by_id($vars['id']);
|
||||
$device = device_by_id_cache($app['device_id']);
|
||||
$title = generate_device_link($device);
|
||||
$title .= $graph_subtype;
|
||||
if ($app['app_type'] != 'proxmox') {
|
||||
$title = generate_device_link($device);
|
||||
$title .= $graph_subtype;
|
||||
}
|
||||
else {
|
||||
$title = $vars['port'].'@'.$vars['hostname'].' on '.generate_device_link($device);
|
||||
}
|
||||
$auth = true;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Copyright (C) 2015 Mark Schouten <mark@tuxis.nl>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; version 2 dated June,
|
||||
* 1991.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* See http://www.gnu.org/licenses/gpl.txt for the full license
|
||||
*/
|
||||
|
||||
require 'includes/graphs/common.inc.php';
|
||||
|
||||
$proxmox_rrd = $config['rrd_dir'].'/proxmox/'.$vars['cluster'].'/'.$vars['vmid'].'_netif_'.$vars['port'].'.rrd';
|
||||
|
||||
if (is_file($proxmox_rrd)) {
|
||||
$rrd_filename = $proxmox_rrd;
|
||||
}
|
||||
|
||||
$ds_in = 'INOCTETS';
|
||||
$ds_out = 'OUTOCTETS';
|
||||
|
||||
require 'includes/graphs/generic_data.inc.php';
|
||||
@@ -360,21 +360,32 @@ foreach (array_keys($menu_sensors) as $item) {
|
||||
</li>
|
||||
<?php
|
||||
|
||||
$app_count = dbFetchCell("SELECT COUNT(`app_id`) FROM `applications`");
|
||||
$app_list = dbFetchRows("SELECT DISTINCT(`app_type`) AS `app_type` FROM `applications` ORDER BY `app_type`");
|
||||
|
||||
if ($_SESSION['userlevel'] >= '5' && ($app_count) > "0") {
|
||||
if ($_SESSION['userlevel'] >= '5' && count($app_list) > "0") {
|
||||
?>
|
||||
<li class="dropdown">
|
||||
<a href="apps/" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"><i class="fa fa-tasks fa-fw fa-lg fa-nav-icons"></i> Apps</a>
|
||||
<ul class="dropdown-menu">
|
||||
<?php
|
||||
|
||||
$app_list = dbFetchRows("SELECT `app_type` FROM `applications` GROUP BY `app_type` ORDER BY `app_type`");
|
||||
foreach ($app_list as $app) {
|
||||
if (isset($app['app_type'])) {
|
||||
$app_i_list = dbFetchRows("SELECT DISTINCT(`app_instance`) FROM `applications` WHERE `app_type` = ? ORDER BY `app_instance`", array($app['app_type']));
|
||||
$image = $config['html_dir']."/images/icons/".$app['app_type'].".png";
|
||||
$icon = (file_exists($image) ? $app['app_type'] : "apps");
|
||||
echo('<li><a href="apps/app='.$app['app_type'].'/"><i class="fa fa-angle-double-right fa-fw fa-lg"></i> '.nicecase($app['app_type']).' </a></li>');
|
||||
if (count($app_i_list) > 1) {
|
||||
echo '<li class="dropdown-submenu">';
|
||||
echo '<a href="apps/app='.$app['app_type'].'/"><i class="fa fa-server fa-fw fa-lg"></i> '.nicecase($app['app_type']).' </a>';
|
||||
echo '<ul class="dropdown-menu scrollable-menu">';
|
||||
foreach ($app_i_list as $instance) {
|
||||
echo ' <li><a href="apps/app='.$app['app_type'].'/instance='.$instance['app_instance'].'/"><i class="fa fa-angle-double-right fa-fw fa-lg"></i> ' . nicecase($instance['app_instance']) . '</a></li>';
|
||||
}
|
||||
echo '</ul></li>';
|
||||
}
|
||||
else {
|
||||
echo('<li><a href="apps/app='.$app['app_type'].'/"><i class="fa fa-angle-double-right fa-fw fa-lg"></i> '.nicecase($app['app_type']).' </a></li>');
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user