.
This commit is contained in:
293
Inventory/Server-Detail.php
Normal file
293
Inventory/Server-Detail.php
Normal file
@@ -0,0 +1,293 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Page Title -->
|
||||
<title>Web Infra Reports</title>
|
||||
<link rel="shortcut icon" type="image/png" href="/include/favicon-32x32.png">
|
||||
|
||||
<!-- JQuery -->
|
||||
<script src="/js/jquery-3.6.1.min.js"></script>
|
||||
<!-- Bootstrap -->
|
||||
<link rel="stylesheet" href="/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="/css/bootstrap-icons/bootstrap-icons.css">
|
||||
<script src="/js/bootstrap.bundle.min.js"></script>
|
||||
<!-- Bootstrap-tables -->
|
||||
<link rel="stylesheet" href="/css/bootstrap-table.min.css">
|
||||
<script src="/js/bootstrap-table.min.js"></script>
|
||||
<script src="/js/bootstrap-table-fr-FR.min.js"></script>
|
||||
<!-- Chart -->
|
||||
<script src="/js/chart.min.js"></script>
|
||||
<!-- Blink -->
|
||||
<style>
|
||||
@keyframes blink {
|
||||
0% { opacity: 1; }
|
||||
50% { opacity: 0.25; }
|
||||
100% { opacity: 1; }
|
||||
}
|
||||
.blinking {
|
||||
animation: blink 1.2s infinite;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body class="bg-light text-dark">
|
||||
<?php include $_SERVER['DOCUMENT_ROOT']."/include/all.php" ; ?>
|
||||
<?php
|
||||
//GET-DATAS
|
||||
$server = $_GET['s'];
|
||||
$Qw = Invoke_Infra("select * from cmdb_srvall where hostname = '$server'");
|
||||
$Qx = Invoke_Infra("select * from X_srvall where hostname = '$server'");
|
||||
$Qvm = Invoke_Infra("select * from cmdb_vms where Name = '$server'");
|
||||
//if(!(is_array($Qw) || is_array($Qx) || is_array($Qvm) )){$notfound = 1;}else{$notfound = 0;}
|
||||
$notfound = ! (is_array($Qw) || is_array($Qx) || is_array($Qvm));
|
||||
|
||||
// OS
|
||||
if(is_array($Qw)){
|
||||
$OSType = "Windows"; $OSName = $Qw[0]['os']; $OSKernel = "";
|
||||
}else{
|
||||
if($Qx[0]['Type'] == "AIX"){
|
||||
$OSType = "AIX"; $OSName = "AIX ".$Qx[0]['OSVersion'] ; $OSKernel = "";
|
||||
}else{
|
||||
$OSType = "Linux"; $OSName = $Qx[0]['Type']." ".$Qx[0]['OSVersion'] ; $OSKernel = $Qx[0]['Kernel'];
|
||||
}
|
||||
}
|
||||
echo "<div id='type' data-value='".strtolower($OSType)."' hidden></div>";
|
||||
echo "<div id='computer' data-value='$server' hidden></div>";
|
||||
|
||||
// Memory & CPU
|
||||
if($OSType == "Windows"){
|
||||
$memory = $Qw[0]['memory']." GB";$cpu = $Qw[0]['cpu'];
|
||||
}else{
|
||||
$cpu = $Qx[0]['CPU'] ;
|
||||
if($OSType == "AIX"){
|
||||
$memory = round(str_replace(" Mo","",$Qx[0]['Memory'])/1024,2)." GB";
|
||||
}else{
|
||||
$memory = $Qvm[0]['Memory'];
|
||||
}
|
||||
}
|
||||
echo "<div id='type' data-value='".strtolower($OSType)."' hidden></div>";
|
||||
echo "<div id='computer' data-value='$server' hidden></div>";
|
||||
?>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row flex-nowrap">
|
||||
<!-- Left NAVBAR -->
|
||||
<div class="col-auto col-md-2 col-xl-2 px-sm-2 px-0 bg-dark" style="-ms-flex: 0 0 230px;flex: 0 0 230px;">
|
||||
<?php include $_SERVER['DOCUMENT_ROOT']."/navbar.html" ; ?> <!-- Left Navbar -->
|
||||
</div>
|
||||
<!-- Display -->
|
||||
<div class="col py-3">
|
||||
<!-- Page Title -->
|
||||
<?php
|
||||
//DECOM ???
|
||||
if($notfound == 1){
|
||||
echo '<h1><span class="badge text-bg-danger font-weight-bold" style="width:100%;">'. strtoupper($server) .' : NOT FOUND !</span></h1>';
|
||||
echo '<script src="/js/switch.js"></script>';
|
||||
echo "</div></div></body></HTML>";
|
||||
exit;
|
||||
}
|
||||
if(strpos($Qw[0]['DECOM'],'-') != false || strpos($Qx[0]['Decom'],'-') != false){
|
||||
echo '<h1><span class="badge text-bg-danger font-weight-bold blinking" style="width:100%;">'. strtoupper($server) .' : DECOMMISSIONED !</span></h1>';
|
||||
echo '<script src="/js/switch.js"></script>';
|
||||
echo "</div></div></body></HTML>";
|
||||
exit;
|
||||
}else{
|
||||
echo '<h1><span class="badge text-bg-secondary font-weight-bold" style="width:100%;">' . strtoupper($server) .'</span></h1>';
|
||||
}
|
||||
?>
|
||||
<!-- Main content -->
|
||||
|
||||
<!-- OS, Host, Site, Maintenance -->
|
||||
<div id="OS" class="fs-4">
|
||||
<span class="badge rounded-pill bg-secondary text-light"><?= $OSName ?></span>
|
||||
<?php if($OSKernel){echo " <span class='badge rounded-pill bg-secondary text-light'>$OSKernel</span>";} ?>
|
||||
<?php
|
||||
if(is_array($Qvm)){
|
||||
$site = Invoke_Infra("SELECT site from cmdb_physical_site where hostname ='".$Qvm[0]['Owner']."'")[0]['site'];
|
||||
if($Qvm[0]['Owner'] == $Qvm[0]['PreferredOwner']){
|
||||
echo " <span class='badge rounded-pill bg-success text-light'>Host : ".$Qvm[0]['Owner']."</span>";
|
||||
}else{
|
||||
echo " <span class='badge rounded-pill bg-warning text-dark'>Host : ".$Qvm[0]['Owner']."</span>";
|
||||
}
|
||||
}else{
|
||||
if(is_array($Qx)){
|
||||
echo " <span class='badge rounded-pill bg-success text-light'>Host : ".$Qx[0]['Owner']."</span>";
|
||||
$site = substr($Qx[0]['Owner'],0,3);
|
||||
}else{
|
||||
echo " <span class='badge rounded-pill bg-success text-light'>Physical</span>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php if(isset($site)){echo "<span class='badge rounded-pill bg-secondary text-light'>Site : $site</span>";} ?>
|
||||
<?php if(is_array($Qvm) && $Qvm[0]['IsClustered'] != 'True'){echo " <span class='badge rounded-pill bg-warning text-dark'>Unclustered VM</span>";} ?>
|
||||
<?php
|
||||
$m = Invoke_Infra("select * from Maintenance_Status where server ='$server'");
|
||||
if($m[0]['scom'] == "Y" || $m[0]['zabbix'] == "Y" || $m[0]['aixcmdb'] == "Y"){
|
||||
echo " <span class='badge rounded-pill bg-primary text-dark blinking'>Maintenance ON</span>";
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<!-- CPU & Memory -->
|
||||
<div class="row" id="perf">
|
||||
<div class="chart-container col">
|
||||
<div class="card mb-3" style="border: 3px solid black">
|
||||
<div class="card-header text-dark text-center fs-5 bg-info">
|
||||
<i class="fs-7 bi-cpu text-black"></i><b> CPU : <?= $cpu ?></b>
|
||||
<?php if(is_array($Qvm)){if($Qvm[0]['CPUcomp'] == "True"){echo '<span class="badge rounded-pill bg-warning text-dark">VM CPU compatibility checked</span> ';}} ?>
|
||||
</div>
|
||||
<div class="card-body bg-dark fs-4">
|
||||
<canvas id="cpuChart"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chart-container col">
|
||||
<div class="card mb-3" style="border: 3px solid black">
|
||||
<div class="card-header text-dark text-center fs-5 bg-info">
|
||||
<i class="fs-7 bi-memory text-black"></i><b> Memory : <?= $memory ?></b>
|
||||
</div>
|
||||
<div class="card-body bg-dark fs-4">
|
||||
<canvas id="ramChart"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="fillchart.js"></script>
|
||||
</div>
|
||||
|
||||
<!-- Drives -->
|
||||
<?php
|
||||
// LUNs ?
|
||||
$luns = Invoke_WebInfraTools("select count(*) as lun from storage_lun where hostname = '$server'");
|
||||
if($luns[0]['lun'] >0 || $Qvm[0]['WWPNs'] != ""){
|
||||
$wwpns = "";
|
||||
if($luns[0]['lun'] == 0){$luns = "Some LUNs are owned by cluster";}else{$luns = $luns[0]['lun']." LUNs";}
|
||||
if(is_array($Qvm)){$wwpns = str_replace("|",", ",$Qvm[0]['WWPNs']);}
|
||||
echo "<center><span class='badge rounded-pill bg-primary text-light fs-5'>".$luns."</span>";
|
||||
if($wwpns != ""){echo " <span class='badge rounded-pill bg-secondary text-light fs-5'>WWPNs :".$wwpns."</span></center><br>";}else{echo "</center><br>";}
|
||||
}
|
||||
?>
|
||||
<div class="row" id="drives">
|
||||
<?php
|
||||
// Drives
|
||||
$drives = explode("|",$Qw[0]['drives']);
|
||||
if($drives[0] === "O"){$drives = explode("|",$Qx[0]['Drives']);}
|
||||
if($drives[0] != "O" && $drives[0] != ""){
|
||||
foreach($drives as $drive){
|
||||
echo "<div class='col-6'><div class='row'>";
|
||||
$data = explode(",",$drive);
|
||||
echo "<div class='col-3'><b>".$data[0]."</b> : ".round($data[2])."/<b>".$data[1]." GB</b></div>";
|
||||
$pcent = ($data[1] - $data[2])/$data[1]*100;
|
||||
$pcent_restant = 100 - $pcent;
|
||||
if($pcent <= 5){
|
||||
$color = "bg-danger"; $border = "red";
|
||||
}else{
|
||||
if($pcent <= 10){
|
||||
$color = "bg-warning"; $border = "yellow";
|
||||
}else{
|
||||
$color = "bg-success"; $border = "green";
|
||||
}
|
||||
}
|
||||
echo "<div class='col-9'>
|
||||
<div class='progress flex-grow-1' style='border: 2px solid $border; height: 20px; min-width: 150px;'>
|
||||
<div class='progress-bar bg-dark progress-bar-striped' role='progressbar' style='width: $pcent_restant%;' aria-valuenow='$pcent_restant' aria-valuemin='0' aria-valuemax='100'></div>
|
||||
<div class='progress-bar $color' role='progressbar' style='width: $pcent%;' aria-valuenow='$pcent' aria-valuemin='0' aria-valuemax='100'></div>
|
||||
</div>
|
||||
</div>";
|
||||
echo "</div></div>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<!-- Last boot, last rollup, next rollup -->
|
||||
<?php
|
||||
if(is_array($Qw) && $Qw[0]['lastBoot'] != ""){
|
||||
echo "<span class='badge rounded-pill bg-secondary text-light fs-5'>Last Boot : ".$Qw[0]['lastBoot']."</span>";
|
||||
}elseif(is_array($Qx) && $Qx[0]['LastBoot'] != ""){
|
||||
echo "<span class='badge rounded-pill bg-secondary text-light fs-5'>Last Boot : ".$Qx[0]['LastBoot']."</span>";
|
||||
}
|
||||
if(is_array($Qw) && $Qw[0]['LastKBUpdate'] != ""){
|
||||
echo " <span class='badge rounded-pill bg-secondary text-light fs-5'>Last Update : ".$Qw[0]['LastKBUpdate']."</span>";
|
||||
}elseif(is_array($Qx) && $Qx[0]['LastUpdate'] != ""){
|
||||
echo "<span class='badge rounded-pill bg-secondary text-light fs-5'>Last Update : ".$Qx[0]['LastUpdate']."</span>";
|
||||
}
|
||||
if($OSType == "Windows"){
|
||||
$date = Invoke_Entry01("select next from rollupdate where Server='$server'");
|
||||
if(is_array($date)){
|
||||
if($date != ""){
|
||||
echo " <span class='badge rounded-pill bg-secondary text-light fs-5'>Next Rollup : ".$date[0]['next']."</span>";
|
||||
}
|
||||
}
|
||||
}
|
||||
if($OSType == "Linux"){
|
||||
$date = Invoke_Infra("select Next from rollup_linux_calendar where Server='$server'")[0]['Next'];
|
||||
if($date != ""){
|
||||
echo " <span class='badge rounded-pill bg-secondary text-light fs-5'>Next Rollup : $date </span>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
<hr>
|
||||
|
||||
<!-- Last boot, last rollup, next rollup -->
|
||||
<?php
|
||||
if(is_array($Qw)){
|
||||
if(strpos($Qw[0]['zabbix'],'.') != false){
|
||||
echo "<span class='badge rounded-pill bg-secondary text-light fs-5'>Zabbix : ".$Qw[0]['zabbix']."</span>";
|
||||
}else{
|
||||
echo "<span class='badge rounded-pill bg-warning text-dark fs-5'>Zabbix : Not Installed</span>";
|
||||
}
|
||||
if(strpos($Qw[0]['sentinel'],'.') != false){
|
||||
echo " <span class='badge rounded-pill bg-secondary text-light fs-5'>SentinelOne : ".$Qw[0]['sentinel']."</span>";
|
||||
}else{
|
||||
echo " <span class='badge rounded-pill bg-warning text-dark fs-5'>SentinelOne : Not Installed</span>";
|
||||
}
|
||||
if(strpos($Qw[0]['zabbix'],'.') != false){
|
||||
echo " <span class='badge rounded-pill bg-secondary text-light fs-5'>Nessus : ".$Qw[0]['nessus']."</span>";
|
||||
}else{
|
||||
echo " <span class='badge rounded-pill bg-warning text-dark fs-5'>Nessus : Not Installed</span>";
|
||||
}
|
||||
}
|
||||
if(is_array($Qx)){
|
||||
$a = Invoke_Infra("select * from X_cmdb_Product where HOSTNAME='$server' and Name ='zabbix'");
|
||||
if(is_array($a) && strpos($a[0]['Ver'],'.') != false){
|
||||
echo "<span class='badge rounded-pill bg-secondary text-light fs-5'>Zabbix : ".$a[0]['Ver']." - ".$a[0]['State']."</span>";
|
||||
}else{
|
||||
echo "<span class='badge rounded-pill bg-warning text-dark fs-5'>Zabbix : Not Installed</span>";
|
||||
}
|
||||
$a = Invoke_Infra("select * from X_cmdb_Product where HOSTNAME='$server' and Name ='s1'");
|
||||
if(is_array($a) && strpos($a[0]['Ver'],'.') != false){
|
||||
echo " <span class='badge rounded-pill bg-secondary text-light fs-5'>SentinelOne : ".$a[0]['Ver']." - ".$a[0]['State']."</span>";
|
||||
}else{
|
||||
echo " <span class='badge rounded-pill bg-warning text-dark fs-5'>SentinelOne : Not Installed</span>";
|
||||
}
|
||||
$a = Invoke_Infra("select * from X_cmdb_Product where HOSTNAME='$server' and Name ='nessus'");
|
||||
if(is_array($a) && strpos($a[0]['Ver'],'.') != false){
|
||||
echo " <span class='badge rounded-pill bg-secondary text-light fs-5'>Nessus : ".$a[0]['Ver']." - ".$a[0]['State']."</span>";
|
||||
}else{
|
||||
echo " <span class='badge rounded-pill bg-warning text-dark fs-5'>Nessus : Not Installed</span>";
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<!-- End of main content -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/js/switch.js"></script>
|
||||
</body>
|
||||
<script>
|
||||
$(function () {
|
||||
$('[data-toggle="tooltip"]').tooltip()
|
||||
})
|
||||
</script>
|
||||
57
Inventory/Z_data_aix.php
Normal file
57
Inventory/Z_data_aix.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
// Zabbix DB
|
||||
$host = 'aztprdzabbix52.armony.net';
|
||||
$dbname = 'zabbix';
|
||||
$user = 'patrick';
|
||||
$pass = 'showZabbix@dash1';
|
||||
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
|
||||
|
||||
|
||||
$server = strtolower($_GET['c']);
|
||||
$now = time();
|
||||
$past_24h = $now - 86400; // 24H
|
||||
|
||||
//Get Host ID
|
||||
$hostQuery = "SELECT hostid, name FROM hosts WHERE name = :server";
|
||||
$hostStmt = $pdo->prepare($hostQuery);
|
||||
$hostStmt->execute(['server' => $server]);
|
||||
$host = $hostStmt->fetch();
|
||||
$hostId = $host['hostid'];
|
||||
|
||||
// Récupération des identifiants d'items pour CPU et mémoire
|
||||
$itemQuery = "SELECT itemid, name, value_type FROM items
|
||||
WHERE hostid = :hostid
|
||||
AND (name LIKE '%Memory utilization%' OR name LIKE '%CPU logical processor utilization%')";
|
||||
$itemStmt = $pdo->prepare($itemQuery);
|
||||
$itemStmt->execute(['hostid' => $hostId]);
|
||||
$items = $itemStmt->fetchAll();
|
||||
|
||||
$data = [];
|
||||
// Get CPU & Memory Items
|
||||
foreach ($items as $item) {
|
||||
$isMemory = strpos(strtolower($item['name']), 'memory') !== false;
|
||||
$valueType = isset($item['value_type']) ? $item['value_type'] : ($isMemory ? 3 : 0);
|
||||
$tableMap = [0 => 'history', 1 => 'history_str', 2 => 'history_log', 3 => 'history_uint', 4 => 'history_text'];
|
||||
$table = isset($tableMap[$valueType]) ? $tableMap[$valueType] : ($isMemory ? 'history_uint' : 'history');
|
||||
// Get History Data
|
||||
$sql = "SELECT FROM_UNIXTIME(FLOOR(clock / 600) * 600) AS datetime,
|
||||
AVG(value) AS avg_value
|
||||
FROM $table
|
||||
WHERE itemid = :itemid AND clock BETWEEN :start AND :end
|
||||
GROUP BY FLOOR(clock / 600)
|
||||
ORDER BY clock";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute(['itemid' => $item['itemid'], 'start' => $past_24h, 'end' => $now]);
|
||||
$results = $stmt->fetchAll();
|
||||
// Format Data
|
||||
foreach ($results as &$row) {
|
||||
$row['avg_value'] = $isMemory ?
|
||||
floatval($row['avg_value']) :
|
||||
round(floatval($row['avg_value']), 2);
|
||||
}
|
||||
$data[$item['name']] = $results;
|
||||
}
|
||||
// Send Json back
|
||||
echo json_encode($data, JSON_NUMERIC_CHECK);
|
||||
|
||||
?>
|
||||
57
Inventory/Z_data_linux.php
Normal file
57
Inventory/Z_data_linux.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
// Zabbix DB
|
||||
$host = 'aztprdzabbix52.armony.net';
|
||||
$dbname = 'zabbix';
|
||||
$user = 'patrick';
|
||||
$pass = 'showZabbix@dash1';
|
||||
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
|
||||
|
||||
|
||||
$server = strtolower($_GET['c']);
|
||||
$now = time();
|
||||
$past_24h = $now - 86400; // 24H
|
||||
|
||||
//Get Host ID
|
||||
$hostQuery = "SELECT hostid, name FROM hosts WHERE name = :server";
|
||||
$hostStmt = $pdo->prepare($hostQuery);
|
||||
$hostStmt->execute(['server' => $server]);
|
||||
$host = $hostStmt->fetch();
|
||||
$hostId = $host['hostid'];
|
||||
|
||||
// Récupération des identifiants d'items pour CPU et mémoire
|
||||
$itemQuery = "SELECT itemid, name, value_type FROM items
|
||||
WHERE hostid = :hostid
|
||||
AND (name LIKE '%Memory utilization%' OR name LIKE '%CPU utilization%')";
|
||||
$itemStmt = $pdo->prepare($itemQuery);
|
||||
$itemStmt->execute(['hostid' => $hostId]);
|
||||
$items = $itemStmt->fetchAll();
|
||||
|
||||
$data = [];
|
||||
// Get CPU & Memory Items
|
||||
foreach ($items as $item) {
|
||||
$isMemory = strpos(strtolower($item['name']), 'memory') !== false;
|
||||
$valueType = isset($item['value_type']) ? $item['value_type'] : ($isMemory ? 3 : 0);
|
||||
$tableMap = [0 => 'history', 1 => 'history_str', 2 => 'history_log', 3 => 'history_uint', 4 => 'history_text'];
|
||||
$table = isset($tableMap[$valueType]) ? $tableMap[$valueType] : ($isMemory ? 'history_uint' : 'history');
|
||||
// Get History Data
|
||||
$sql = "SELECT FROM_UNIXTIME(FLOOR(clock / 600) * 600) AS datetime,
|
||||
AVG(value) AS avg_value
|
||||
FROM $table
|
||||
WHERE itemid = :itemid AND clock BETWEEN :start AND :end
|
||||
GROUP BY FLOOR(clock / 600)
|
||||
ORDER BY clock";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute(['itemid' => $item['itemid'], 'start' => $past_24h, 'end' => $now]);
|
||||
$results = $stmt->fetchAll();
|
||||
// Format Data
|
||||
foreach ($results as &$row) {
|
||||
$row['avg_value'] = $isMemory ?
|
||||
floatval($row['avg_value']) :
|
||||
round(floatval($row['avg_value']), 2);
|
||||
}
|
||||
$data[$item['name']] = $results;
|
||||
}
|
||||
// Send Json back
|
||||
echo json_encode($data, JSON_NUMERIC_CHECK);
|
||||
|
||||
?>
|
||||
57
Inventory/Z_data_windows.php
Normal file
57
Inventory/Z_data_windows.php
Normal file
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
// Zabbix DB
|
||||
$host = 'aztprdzabbix52.armony.net';
|
||||
$dbname = 'zabbix';
|
||||
$user = 'patrick';
|
||||
$pass = 'showZabbix@dash1';
|
||||
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
|
||||
|
||||
|
||||
$server = strtoupper($_GET['c']);
|
||||
$now = time();
|
||||
$past_24h = $now - 86400; // 24H
|
||||
|
||||
//Get Host ID
|
||||
$hostQuery = "SELECT hostid, name FROM hosts WHERE name = :server";
|
||||
$hostStmt = $pdo->prepare($hostQuery);
|
||||
$hostStmt->execute(['server' => $server]);
|
||||
$host = $hostStmt->fetch();
|
||||
$hostId = $host['hostid'];
|
||||
|
||||
// Récupération des identifiants d'items pour CPU et mémoire
|
||||
$itemQuery = "SELECT itemid, name, value_type FROM items
|
||||
WHERE hostid = :hostid
|
||||
AND (name LIKE '%Memory utilization%' OR name LIKE '%CPU utilization%')";
|
||||
$itemStmt = $pdo->prepare($itemQuery);
|
||||
$itemStmt->execute(['hostid' => $hostId]);
|
||||
$items = $itemStmt->fetchAll();
|
||||
|
||||
$data = [];
|
||||
// Get CPU & Memory Items
|
||||
foreach ($items as $item) {
|
||||
$isMemory = strpos(strtolower($item['name']), 'memory') !== false;
|
||||
$valueType = isset($item['value_type']) ? $item['value_type'] : ($isMemory ? 3 : 0);
|
||||
$tableMap = [0 => 'history', 1 => 'history_str', 2 => 'history_log', 3 => 'history_uint', 4 => 'history_text'];
|
||||
$table = isset($tableMap[$valueType]) ? $tableMap[$valueType] : ($isMemory ? 'history_uint' : 'history');
|
||||
// Get History Data
|
||||
$sql = "SELECT FROM_UNIXTIME(FLOOR(clock / 600) * 600) AS datetime,
|
||||
AVG(value) AS avg_value
|
||||
FROM $table
|
||||
WHERE itemid = :itemid AND clock BETWEEN :start AND :end
|
||||
GROUP BY FLOOR(clock / 600)
|
||||
ORDER BY clock";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute(['itemid' => $item['itemid'], 'start' => $past_24h, 'end' => $now]);
|
||||
$results = $stmt->fetchAll();
|
||||
// Format Data
|
||||
foreach ($results as &$row) {
|
||||
$row['avg_value'] = $isMemory ?
|
||||
floatval($row['avg_value']) :
|
||||
round(floatval($row['avg_value']), 2);
|
||||
}
|
||||
$data[$item['name']] = $results;
|
||||
}
|
||||
// Send Json back
|
||||
echo json_encode($data, JSON_NUMERIC_CHECK);
|
||||
|
||||
?>
|
||||
98
Inventory/fillchart.js
Normal file
98
Inventory/fillchart.js
Normal file
@@ -0,0 +1,98 @@
|
||||
let typ = document.getElementById("type").dataset.value;
|
||||
let computer = document.getElementById("computer").dataset.value;
|
||||
async function fetchAndDisplayData() {
|
||||
try {
|
||||
const response = await fetch(`z_data_${typ}.php?c=${computer}`);
|
||||
const jsonData = await response.json();
|
||||
const data = jsonData.data || jsonData;
|
||||
const cpuKey = Object.keys(data).find(key => key.includes('CPU'));
|
||||
const ramKey = Object.keys(data).find(key => key.includes('Memory'));
|
||||
const labels = [];
|
||||
if (cpuKey && data[cpuKey]) {
|
||||
data[cpuKey].forEach(point => {
|
||||
if (!labels.includes(point.datetime)) {
|
||||
labels.push(point.datetime);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (ramKey && data[ramKey]) {
|
||||
data[ramKey].forEach(point => {
|
||||
if (!labels.includes(point.datetime)) {
|
||||
labels.push(point.datetime);
|
||||
}
|
||||
});
|
||||
}
|
||||
labels.sort();
|
||||
const cpuDataMap = {};
|
||||
const ramDataMap = {};
|
||||
if (cpuKey && data[cpuKey]) {
|
||||
data[cpuKey].forEach(point => {
|
||||
cpuDataMap[point.datetime] = parseFloat(point.avg_value);
|
||||
});
|
||||
}
|
||||
if (ramKey && data[ramKey]) {
|
||||
data[ramKey].forEach(point => {
|
||||
ramDataMap[point.datetime] = parseFloat(point.avg_value);
|
||||
});
|
||||
}
|
||||
const cpuChartData = labels.map(label => cpuDataMap[label] || null);
|
||||
const ramChartData = labels.map(label => ramDataMap[label] || null);
|
||||
const formattedLabels = labels.map(label => {
|
||||
const date = new Date(label);
|
||||
return date.toLocaleTimeString('fr-FR', {hour: '2-digit', minute: '2-digit'});
|
||||
});
|
||||
if (cpuKey && data[cpuKey] && data[cpuKey].length > 0) {
|
||||
const ctx1 = document.getElementById('cpuChart').getContext('2d');
|
||||
new Chart(ctx1, {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: formattedLabels,
|
||||
datasets: [{
|
||||
label: 'CPU (%)',
|
||||
data: cpuChartData,
|
||||
borderColor: 'rgb(54, 162, 235)',
|
||||
backgroundColor: 'rgba(54, 162, 235, 0.1)',
|
||||
fill: true,
|
||||
tension: 0.3,
|
||||
pointRadius: 0
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
legend: {display: false},
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
scales: {y: {beginAtZero: true}}
|
||||
}
|
||||
});
|
||||
}
|
||||
if (ramKey && data[ramKey] && data[ramKey].length > 0) {
|
||||
const ctx2 = document.getElementById('ramChart').getContext('2d');
|
||||
new Chart(ctx2, {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: formattedLabels,
|
||||
datasets: [{
|
||||
label: 'Memory (%)',
|
||||
data: ramChartData,
|
||||
borderColor: 'rgb(54, 162, 235)',
|
||||
backgroundColor: 'rgba(54, 162, 235, 0.1)',
|
||||
fill: true,
|
||||
tension: 0.3,
|
||||
pointRadius: 0
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
legend: {display: false},
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
scales: {y: {beginAtZero: true}}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.error('Erreur:', error);
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('load', fetchAndDisplayData);
|
||||
24
Inventory/search_servers.php
Normal file
24
Inventory/search_servers.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
header('Content-Type: application/json');
|
||||
include $_SERVER['DOCUMENT_ROOT']."/include/db_connect.inc.php" ;
|
||||
if (isset($_GET['term'])) {
|
||||
$term = $_GET['term'];
|
||||
$query = "SELECT hostname AS serv FROM cmdb_srvall WHERE hostname LIKE '%$term%' UNION SELECT hostname AS serv FROM x_SRVALL WHERE hostname LIKE '%$term%'";
|
||||
$user = "INFRA_dbo";
|
||||
$pwd = "Q3pUz2x9YL2r6k";
|
||||
$server = "DUN-PRD-R1MSSQL.armony.net\PRD";
|
||||
$database = "INFRA";
|
||||
$conn = odbc_connect("Driver={SQL Server};Server=$server;Database=$database;", $user, $pwd);
|
||||
$rs = odbc_exec($conn, $query);
|
||||
while ($row = odbc_fetch_array($rs)) {
|
||||
$servers[] = $row;
|
||||
}
|
||||
$result = [];
|
||||
if (is_array($servers)) {
|
||||
foreach ($servers as $server) {
|
||||
$result[] = $server['serv'];
|
||||
}
|
||||
}
|
||||
echo json_encode($result);
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user