diff --git a/Hyper-V/Migration.php b/Hyper-V/Migration.php new file mode 100644 index 0000000..5343224 --- /dev/null +++ b/Hyper-V/Migration.php @@ -0,0 +1,175 @@ + + + + + + + + + + Web Infra Reports IT + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +

VM Storage (migration phase)

+ + +
+ + + +
+ + + + + + + + + + + + "; + echo ""; + if(strpos($row['Owner'],"SYN") !== false || strpos($row['Owner'],"MIG") !== false){ + echo ""; + }else{ + echo ""; + } + echo ""; + if($row['WWPNs'] != ""){ + echo ""; + echo ""; + + }else{echo "";} + echo ""; + } + foreach ($clusters as $row) { + $lunsVNX = Invoke_WebInfraTools("select * from storage_lun where baie = 'VNX' and hostname = '".$row['hostname']."' order by name"); + $lunsSVC = Invoke_WebInfraTools("select * from storage_lun where baie = 'SVC' and hostname = '".$row['hostname']."' order by name"); + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + } + echo ""; + ?> + +
VMLegacy HostDestination HostVHDX StorageVNX LunsSVC Luns
".$row['Name']."".$row['Owner']."".$row['Owner']."".str_replace(".vhdx,"," : ",str_replace("|","GB
",$row['VHDXs']))."GB
"; + foreach($lunsVNX as $lun){ + if($lun['hostname'] == $row['Name']){ + echo explode("_",$lun['name'])[1]." : ".$lun['size']."GB
\n"; + } + } + echo "
"; + foreach($lunsSVC as $lun){ + if($lun['hostname'] == $row['Name']){ + echo $lun['name']." : ".$lun['size']."GB
\n"; + } + } + echo "
".$row['hostname']." (Cluster)"; + foreach($lunsVNX as $lun){ + if($lun['hostname'] == $row['hostname']){ + echo explode("_",$lun['name'])[1]." : ".$lun['size']."GB
\n"; + } + } + echo "
"; + foreach($lunsSVC as $lun){ + if($lun['hostname'] == $row['hostname']){ + echo $lun['name']." : ".$lun['size']."GB
\n"; + } + } + echo "
+
+
+
+ +
+
+
+ ".$er." issues - ".$outdated." outdated - ".$excluded.' excluded)'; + ?> + + + + + diff --git a/Hyper-V/VMs-Backups.php b/Hyper-V/VMs-Backups.php index 94e1a97..c24128e 100644 --- a/Hyper-V/VMs-Backups.php +++ b/Hyper-V/VMs-Backups.php @@ -31,10 +31,8 @@ 'OK' order by lastresult,name"); + //$answers += Invoke_infra("SELECT * FROM VMs_Backup where Owner like 'DUN-VMH%' and name not like 'WS%' and owner not like '%WKG%' and Exclusion <>'' order by name"); ?> @@ -47,7 +45,7 @@
-

+

@@ -71,57 +69,93 @@
- - - - - - - + + + + + + + + + - - + 'OK' or lastresult is null) order by lastresult,name"); foreach ($answers as $row) { - $ok = 1; - if($row['LastBackup'] == 0){ - echo ''; - echo ''; - echo ''; - echo ''; + $er++; + $date1 = date_create($row['LastKnownGood']); $diff = date_diff($date1, date_create(date("Y-m-d"))); + if ($diff->format("%R%a") >= 2 || $row['LastKnownGood'] == ''){ + echo ""; }else{ - echo ''; - $date1 = date_create($row['LastGoodBackup']); - $diff = date_diff($date1, date_create(date("Y-m-d"))); - if ($diff->format("%R%a") > 3 || $row['LastGoodBackup'] == ""){ - echo ''; - $ok = 0; - }else{ - echo ''; - } - if($row['Result'] === "0"){ - echo ''; - }else{ - $ok = 0; - if($row['Result'] == " : FAILED"){ - echo ''; - }else{ - echo ''; - } - } - if ($diff->format("%R%a") > 3 || $row['LastGoodBackup'] == ""){ - echo ''; - $ok = 0; - }else{ - echo ''; - } - echo ''; - echo ''; - echo '' ; + echo ""; } - if($ok ==0){$er++;} + if($diff->format("%R%a") == "-0"){$LastGood = "NEVER";}else{$LastGood = $row['LastKnownGood']." (".$diff->format("%R%a")."J)";} + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + + echo ""; } - ?> + + // Backup OK + $outdated = 0; + $answers = Invoke_infra("SELECT * FROM VMs_Backup where Owner like 'DUN-VMH%' and name not like 'WS%' and owner not like '%WKG%' and owner not like '%VMH-WM%' and Exclusion ='' and LastResult = 'OK' order by name"); + foreach ($answers as $row) { + $date1 = date_create($row['LastKnownGood']); $diff = date_diff($date1, date_create(date("Y-m-d"))); + if(date('w') >= 2 && date('w') <= 6 ){ + if ($diff->format("%R%a") >= 2){ + echo ""; + }else{ + echo ""; + } + }else{ + if((date('w') < 2 || date('w') == 7)){ + if($diff->format("%R%a") <= 3){ + echo ""; + }else{ + echo ""; + } + } + } + if($diff->format("%R%a") == "-0"){$LastGood = $row['LastKnownGood'];}else{$LastGood = $row['LastKnownGood']." (".$diff->format("%R%a")."J)";} + echo ""; + echo ""; + echo ""; + if (date('w') >= 2 && date('w') <= 6 && $diff->format("%R%a") < 1){ + echo ""; + }else{ + echo ""; + $outdated++; + } + echo ""; + echo ""; + echo ""; + echo ""; + } + + // Backup OK + $excluded = 0; + $answers = Invoke_infra("SELECT * FROM VMs_Backup where Owner like 'DUN-VMH%' and name not like 'WS%' and owner not like '%WKG%' and owner not like '%VMH-WM%' and Exclusion <> '' order by name"); + foreach ($answers as $row) { + $excluded++; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + } + ?>
VMLast BackupLast Good BackupOSHost
VMLast BackupLast ResultLast Good BackupSizeHostPolicy
'.$row['VM'].'Excluded via VMM'.$row['OS'].''.$row['Host'].'
'.$row['VM'].''.$row['VM'].'OK SNAPSHOT FAILED ERROR '.$row['Result'].''.$row['LastGoodBackup'].''.$row['LastGoodBackup'].''.$row['OS'].''.$row['Host'].'
".$row['Name']."".$row['LastBackup']." ".$row['TimeStamp']."".$row['LastResult']."".$LastGood."".$row['LastSize']."".$row['Owner']."".$row['Policy']."
".$row['Name']."".$row['LastBackup']." ".$row['TimeStamp']."".$row['LastResult']."".$LastGood."".$LastGood."".$row['LastSize']."".$row['Owner']."".$row['Policy']."
".$row['Name']."Tag NoBackupTag NoBackupTag NoBackupTag NoBackup".$row['Owner']."".$row['Policy']."

@@ -131,6 +165,9 @@
+ ".$er." issues - ".$outdated." outdated - ".$excluded.' excluded)'; + ?> @@ -158,11 +195,6 @@ window.addEventListener("resize", tableresize); - document.getElementById("ERR").innerHTML = ""; - - - - + document.getElementById("ERR").innerHTML = ""; + - - \ No newline at end of file diff --git a/Storage/Dashboard.php b/Storage/Dashboard.php new file mode 100644 index 0000000..334fbb5 --- /dev/null +++ b/Storage/Dashboard.php @@ -0,0 +1,257 @@ + + + + + + + + + Web Infra Reports + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +

SVC Storage Dashboard

+ + + 5100 + //Silver => 5030 + + $GB = 1024*1024*1024; + $TB = $GB * 1024; + //get full data + $json = json_decode(PostJson("$bdnuss/Storage/SVC/SVC_INVENTORY.php",''),true); + + // Sum LUN Size by Bay + $lunsGold = 0 ; $lunsSilver = 0 ; + try{ + foreach($json['Data']['VolumeCopies'] as $data){ + if(strpos($data['mdisk_grp_name'],"5100") !== false){ + $lunsGold += $data['capacity'] ; + }else{ + $lunsSilver += $data['capacity'] ; + } + } + }catch(Exception $e){} + + // Get Full Capacity + $goldCapacity = 0 ; $silverCapacity = 0 ; $GoldCompression = 0;$SilverCompression = 0; + foreach($json['Data']['Pools'] as $data){ + if(strpos($data['name'],"5100") !== false){ + $goldCapacity += $data['capacity'] ; + if($data['used_capacity'] > 0){ + $GoldCompression += ($data['real_capacity'] / $data['used_capacity']); + } + }else{ + $silverCapacity += $data['capacity'] ; + if($data['used_capacity'] > 0){ + $SilverCompression += ($data['real_capacity'] / $data['used_capacity']); + } + } + } + + // Datas + $goldCapacity = $goldCapacity / 2; + $silverCapacity = $silverCapacity / 2 ; + $GoldFree = $goldCapacity - $lunsGold ; + $SilverFree = $silverCapacity - $lunsSilver ; + $goldPercentUsed = round($lunsGold / $goldCapacity * 100 ,2) ; + $silverPercentUsed = round($lunsSilver / $silverCapacity * 100 ,2) ; + $GoldCompression = round($GoldCompression / 2,2); + $SilverCompression = round($GoldCompression / 2,2); + + // Unnasigned Luns + $unnasigned = 0 ; + $cuc = "bg-success"; + $lLUN = ""; + foreach($json['Data']['Volumes'] as $volume){ + if($volume['protocol'] != "scsi"){$unnasigned++;$cuc = "bg-warning";$lLUN .= $volume['name']."
";} + } + + // Orphan Hosts + $orphanHosts = 0 ; + $chc = "bg-success"; + $lHOST = ""; + foreach($json['Data']['Hosts'] as $host){ + if($host['protocol'] != "scsi"){$orphanHosts++;$chc = "bg-warning";$lHOST .= $host['name']."
";} + } + if($json['Data']['Hostclusters']){ + foreach($json['Data']['Hostclusters'] as $host){ + if($host['protocol'] != "scsi"){$orphanHosts++;$chc = "bg-warning";$lHOST .= $host['name']."
";} + } + } + ?> + + +
+ +
+
+ Gold (V5100) +
+
+
+
+ Total Capacity : TB +
+
+ Used (raw) : TB (% ) +
+
+ Free (raw) : TB +
+
+
+
+
+ Compression : :1 +
+
+ Free (estimated) : TB +
+
+
+
+ = 75){$pbc = "bg-warning";} + if($goldPercentUsed >= 90){$pbc = "bg-danger";} + ?> +
+
+
+
+
+
+ +
+
+ Silver (V5030) +
+
+
+
+ Total Capacity : TB +
+
+ Used (raw) : TB (% ) +
+
+ Free (raw) : TB +
+
+
+
+
+ Compression : :1 +
+
+ Free (estimated) : TB +
+
+
+
+ = 75){$pbc = "bg-warning";} + if($silverPercentUsed >= 90){$pbc = "bg-danger";} + ?> +
+
+
+
+
+
+ +
+
+
+
+
IO_grp 0
+
+
+ Hosts :
+ Volumes : +
+
+
+
+
+
+
IO_grp 1
+
+
+ Hosts :
+ Volumes : +
+
+
+
+
+
+
IO_grp 2
+
+
+ Hosts :
+ Volumes : +
+
+
+
+
+
+
Unnasigned LUNs
+
+
+ +
+
+
+
+
+
+
Hosts w/o LUNs
+
+
+ +
+
+
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/Storage/Dashboard2.php b/Storage/Dashboard2.php new file mode 100644 index 0000000..397ea20 --- /dev/null +++ b/Storage/Dashboard2.php @@ -0,0 +1,210 @@ + + + + + + + + + Web Infra Reports + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +

SVC Storage Dashboard

+ + + 5100 + //Silver => 5030 + + $GB = 1024*1024*1024; + $TB = $GB * 1024; + //get full data + $json = json_decode(PostJson("$bdnuss/Storage/SVC/SVC_INVENTORY.php",''),true); + + // Sum LUN Size by Bay + $lunsGold = 0 ; $lunsSilver = 0 ; + foreach($json['Data']['VolumeCopies'] as $data){ + if(strpos($data['mdisk_grp_name'],"5100") !== false){ + $lunsGold += $data['capacity'] ; + }else{ + $lunsSilver += $data['capacity'] ; + } + } + + // Get Full Capacity + $goldCapacity = 0 ; $silverCapacity = 0 ; $GoldCompression = 0;$SilverCompression = 0; + foreach($json['Data']['Pools'] as $data){ + if(strpos($data['name'],"5100") !== false){ + $goldCapacity += $data['capacity'] ; + $GoldCompression += ($data['real_capacity'] / $data['used_capacity']); + }else{ + $silverCapacity += $data['capacity'] ; + $SilverCompression += ($data['real_capacity'] / $data['used_capacity']); + } + } + + // Datas + $goldCapacity = $goldCapacity / 2; + $silverCapacity = $silverCapacity / 2 ; + $GoldFree = $goldCapacity - $lunsGold ; + $SilverFree = $silverCapacity - $lunsSilver ; + $goldPercentUsed = round($lunsGold / $goldCapacity * 100 ,2) ; + $silverPercentUsed = round($lunsSilver / $silverCapacity * 100 ,2) ; + $GoldCompression = round($GoldCompression / 2,2); + $SilverCompression = round($GoldCompression / 2,2); + + // Unnasigned Luns + $unnasigned = 0 ; + $cuc = "bg-success"; + foreach($json['Data']['Volumes'] as $volume){ + if($volume['protocol'] != "scsi"){$unnasigned++;$cuc = "bg-warning";} + } + ?> + + +
+ +
+
+ Gold (V5100) +
+
+
+
+ Total Capacity : TB +
+
+ Used : TB (% ) +
+
+ Free : TB +
+
+ Compression : :1 +
+
+
+
+ = 75){$pbc = "bg-warning";} + if($goldPercentUsed >= 90){$pbc = "bg-danger";} + ?> +
+
+
+
+
+
+ +
+
+ Silver (V5030) +
+
+
+
+ Total Capacity : TB +
+
+ Used : TB (% ) +
+
+ Free : TB +
+
+ Compression : :1 +
+
+
+
+ = 75){$pbc = "bg-warning";} + if($silverPercentUsed >= 90){$pbc = "bg-danger";} + ?> +
+
+
+
+
+
+ +
+
+
+
+
IO_grp 0
+
+
+ Hosts :
+ Volumes : +
+
+
+
+
+
+
IO_grp 1
+
+
+ Hosts :
+ Volumes : +
+
+
+
+
+
+
IO_grp 2
+
+
+ Hosts :
+ Volumes : +
+
+
+
+
+
+
Unnasigned LUNs
+
+
+ +
+
+
+
+
+ +
+
+ + + diff --git a/Storage/test.php b/Storage/test.php new file mode 100644 index 0000000..73e1b77 --- /dev/null +++ b/Storage/test.php @@ -0,0 +1,41 @@ + + + 5100 + //Silver => 5030 + + $GB = 1024*1024*1024; + $TB = $GB * 1024; + //get full data + $json = json_decode(PostJson("$bdnuss/Storage/SVC/SVC_INVENTORY.php",''),true); + + // Sum LUN Size by Bay + $lunsGold = 0 ; $lunsSilver = 0 ; + foreach($json['Data']['VolumeCopies'] as $data){ + if(strpos($data['mdisk_grp_name'],"5100") !== false){ + $lunsGold += $data['capacity'] ; + }else{ + $lunsSilver += $data['capacity'] ; + } + } + + // Get Full Capacity + $goldCapacity = 0 ; $silverCapacity = 0 ; + foreach($json['Data']['Pools'] as $data){ + if(strpos($data['name'],"5100") !== false){ + $goldCapacity += $data['capacity'] ; + }else{ + $silverCapacity += $data['capacity'] ; + } + } + + // Datas + $goldCapacity = $goldCapacity / 2; + $silverCapacity = $silverCapacity / 2 ; + $GoldFree = $goldCapacity - $lunsGold ; + $SilverFree = $silverCapacity - $lunsSilver ; + $goldPercentUsed = round($lunsGold / $goldCapacity * 100 ,2) ; + $silverPercentUsed = round($lunsSilver / $silverCapacity * 100 ,2) ; +?> \ No newline at end of file diff --git a/navbar.html b/navbar.html index bc6e045..0b81491 100644 --- a/navbar.html +++ b/navbar.html @@ -55,7 +55,16 @@
  • - Hyper-V Clusters - VMs Backups - + - Migration FollowUp +
  • + + +
  • + + Storage +