Bestehende Codebasis als Ausgangsstand aufgenommen. - .gitignore: Kundendaten (uploads_*), Smarty-Compile-Cache (templates_c), Laufzeit-Temp und Datenbank-Dumps ausgeschlossen; Verzeichnisstruktur ueber .gitkeep erhalten - .gitattributes: Zeilenenden normalisiert (LF im Repo), Binaerformate markiert - db-backup.php: MySQL-Zugangsdaten kommen jetzt wie im Rest der Anwendung aus der externen Konfiguration statt hartkodiert aus der Datei; Passwort wird ueber eine temporaere Optionsdatei statt per Kommandozeile uebergeben, Fehler von mysqldump/gzip werden gemeldet, Aufraeumen aelterer Backups berechnet Jahr und Monat konsistent Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
304 lines
13 KiB
PHP
304 lines
13 KiB
PHP
<?php
|
|
|
|
error_reporting(E_ERROR | E_WARNING | E_PARSE);
|
|
// Standard inclusions
|
|
include("incs/pChart/pData.class");
|
|
include("incs/pChart/pChart.class");
|
|
|
|
|
|
$dbconn = mysqli_connect("localhost","m0","ENTFERNT");
|
|
mysqli_select_db($dbconn,"systemstats");
|
|
|
|
$qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(datetime, '%d.%m.%y') AS datetime, MAX(percent) AS value FROM hdd WHERE datetime > DATE_SUB(NOW(), INTERVAL 31 DAY) GROUP BY DATE_FORMAT(datetime, '%d.%m.%y') ORDER BY DATE_FORMAT(datetime, '%y%m%d') ASC") or die(mysqli_error($dbconn));
|
|
// Dataset definition
|
|
$DataSet = new pData;
|
|
// Compute the points
|
|
$DataSet->AddSerie("Serie1");
|
|
|
|
while($res = mysqli_fetch_assoc($qry))
|
|
{
|
|
$DataSet->AddPoint($res["value"],"Serie1",$res["datetime"]);
|
|
}
|
|
$DataSet->SetSerieName("SysHDD (RAID)[MAX]","Serie1");
|
|
|
|
$qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(datetime, '%d.%m.%y') AS datetime, MAX(percent) AS value FROM hdd1 WHERE datetime > DATE_SUB(NOW(), INTERVAL 31 DAY) GROUP BY DATE_FORMAT(datetime, '%d.%m.%y') ORDER BY DATE_FORMAT(datetime, '%y%m%d') ASC") or die(mysqli_error($dbconn));
|
|
// Compute the points
|
|
$DataSet->AddSerie("Serie2");
|
|
|
|
while($res = mysqli_fetch_assoc($qry))
|
|
{
|
|
$DataSet->AddPoint($res["value"],"Serie2",$res["datetime"]);
|
|
}
|
|
$DataSet->SetSerieName("dumpHDD (sdc1)[MAX]","Serie2");
|
|
|
|
$qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(datetime, '%d.%m.%y') AS datetime, MAX(percent) AS value FROM hdd2 WHERE datetime > DATE_SUB(NOW(), INTERVAL 31 DAY) GROUP BY DATE_FORMAT(datetime, '%d.%m.%y') ORDER BY DATE_FORMAT(datetime, '%y%m%d') ASC") or die(mysqli_error($dbconn));
|
|
// Compute the points
|
|
$DataSet->AddSerie("Serie3");
|
|
|
|
while($res = mysqli_fetch_assoc($qry))
|
|
{
|
|
$DataSet->AddPoint($res["value"],"Serie3",$res["datetime"]);
|
|
}
|
|
$DataSet->SetSerieName("camHDD (sdc2)[MAX]","Serie3");
|
|
|
|
$qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(datetime, '%d.%m.%y') AS datetime, MAX(percent) AS value FROM hdd3 WHERE datetime > DATE_SUB(NOW(), INTERVAL 31 DAY) GROUP BY DATE_FORMAT(datetime, '%d.%m.%y') ORDER BY DATE_FORMAT(datetime, '%y%m%d') ASC") or die(mysqli_error($dbconn));
|
|
// Compute the points
|
|
$DataSet->AddSerie("Serie4");
|
|
|
|
while($res = mysqli_fetch_assoc($qry))
|
|
{
|
|
$DataSet->AddPoint($res["value"],"Serie4",$res["datetime"]);
|
|
}
|
|
$DataSet->SetSerieName("backUpHDD (sdc3)[MAX]","Serie4");
|
|
|
|
// Initialise the graph
|
|
$Test = new pChart(1200,400);
|
|
$Test->drawGraphAreaGradient(90,90,90,90,TARGET_BACKGROUND);
|
|
// Graph area setup
|
|
$Test->setFontProperties("incs/font/pf_arma_five.ttf",10);
|
|
$Test->setGraphArea(60,40,1050,350);
|
|
$Test->drawGraphArea(200,200,200,FALSE);
|
|
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,200,200,200,TRUE,45,2);
|
|
$Test->drawGraphAreaGradient(40,40,40,-50);
|
|
$Test->drawGrid(4,TRUE,230,230,230,10);
|
|
// Draw the line chart
|
|
$Test->setShadowProperties(3,3,0,0,0,30,4);
|
|
$Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription());
|
|
$Test->clearShadow();
|
|
$Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,0,-1,-1,-1,TRUE);
|
|
// Write the title
|
|
$Test->setFontProperties("incs/font/MankSans.ttf",18);
|
|
$Test->setShadowProperties(1,1,0,0,0);
|
|
$Test->drawTitle(0,0,"Festplattennutzung [%]",255,255,255,1200,30,TRUE);
|
|
$Test->clearShadow();
|
|
// Draw the legend
|
|
$Test->setFontProperties("incs/font/tahoma.ttf",10);
|
|
$Test->drawLegend(1050,50,$DataSet->GetDataDescription(),0,0,0,0,0,0,255,255,255,FALSE);
|
|
$Test->Render("hdd.png");
|
|
|
|
|
|
$DataSet = new pData;
|
|
// Compute the points
|
|
$DataSet->AddSerie("Serie1");
|
|
$DataSet->AddSerie("Serie2");
|
|
$DataSet->AddSerie("Serie3");
|
|
$DataSet->AddSerie("Serie4");
|
|
|
|
$qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(datetime, '%d.%m.%y') AS datetime, MAX(value) AS value FROM memory WHERE datetime > DATE_SUB(NOW(), INTERVAL 31 DAY) GROUP BY DATE_FORMAT(datetime, '%d.%m.%y') ORDER BY DATE_FORMAT(datetime, '%y%m%d') ASC") or die(mysqli_error($dbconn));
|
|
// Dataset definition
|
|
|
|
|
|
while($res = mysqli_fetch_assoc($qry))
|
|
{
|
|
$DataSet->AddPoint($res["value"]/10,"Serie1",$res["datetime"]);
|
|
}
|
|
|
|
$qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(datetime, '%d.%m.%y') AS datetime, MAX(value) AS value FROM swap WHERE datetime > DATE_SUB(NOW(), INTERVAL 31 DAY) GROUP BY DATE_FORMAT(datetime, '%d.%m.%y') ORDER BY DATE_FORMAT(datetime, '%y%m%d') ASC") or die(mysqli_error($dbconn));
|
|
// Dataset definition
|
|
|
|
// Compute the points
|
|
while($res = mysqli_fetch_assoc($qry))
|
|
{
|
|
$DataSet->AddPoint($res["value"]/10,"Serie2",$res["datetime"]);
|
|
}
|
|
$DataSet->SetSerieName("MAX Memory [%]","Serie1");
|
|
$DataSet->SetSerieName("MAX Swap [%]","Serie2");
|
|
|
|
$qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(datetime, '%d.%m.%y') AS datetime, AVG(value) AS value FROM memory WHERE datetime > DATE_SUB(NOW(), INTERVAL 31 DAY) GROUP BY DATE_FORMAT(datetime, '%d.%m.%y') ORDER BY DATE_FORMAT(datetime, '%y%m%d') ASC") or die(mysqli_error($dbconn));
|
|
// Dataset definition
|
|
|
|
|
|
while($res = mysqli_fetch_assoc($qry))
|
|
{
|
|
$DataSet->AddPoint($res["value"]/10,"Serie3",$res["datetime"]);
|
|
}
|
|
|
|
$qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(datetime, '%d.%m.%y') AS datetime, AVG(value) AS value FROM swap WHERE datetime > DATE_SUB(NOW(), INTERVAL 31 DAY) GROUP BY DATE_FORMAT(datetime, '%d.%m.%y') ORDER BY DATE_FORMAT(datetime, '%y%m%d') ASC") or die(mysqli_error($dbconn));
|
|
// Dataset definition
|
|
|
|
// Compute the points
|
|
while($res = mysqli_fetch_assoc($qry))
|
|
{
|
|
$DataSet->AddPoint($res["value"]/10,"Serie4",$res["datetime"]);
|
|
}
|
|
$DataSet->SetSerieName("AVG Memory [%]","Serie3");
|
|
$DataSet->SetSerieName("AVG Swap [%]","Serie4");
|
|
|
|
// Initialise the graph
|
|
$Test = new pChart(1200,400);
|
|
$Test->drawGraphAreaGradient(90,90,90,90,TARGET_BACKGROUND);
|
|
// Graph area setup
|
|
$Test->setFontProperties("incs/font/pf_arma_five.ttf",10);
|
|
$Test->setGraphArea(60,40,1050,350);
|
|
$Test->drawGraphArea(200,200,200,FALSE);
|
|
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,200,200,200,TRUE,45,2);
|
|
$Test->drawGraphAreaGradient(40,40,40,-50);
|
|
$Test->drawGrid(4,TRUE,230,230,230,10);
|
|
// Draw the line chart
|
|
$Test->setShadowProperties(3,3,0,0,0,30,4);
|
|
$Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription());
|
|
$Test->clearShadow();
|
|
$Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,0,-1,-1,-1,TRUE);
|
|
// Write the title
|
|
$Test->setFontProperties("incs/font/MankSans.ttf",18);
|
|
$Test->setShadowProperties(1,1,0,0,0);
|
|
$Test->drawTitle(0,0,"RAM Nutzung [%]",255,255,255,1200,30,TRUE);
|
|
$Test->clearShadow();
|
|
// Draw the legend
|
|
$Test->setFontProperties("incs/font/tahoma.ttf",10);
|
|
$Test->drawLegend(1050,50,$DataSet->GetDataDescription(),0,0,0,0,0,0,255,255,255,FALSE);
|
|
$Test->Render("memory.png");
|
|
|
|
|
|
|
|
|
|
$DataSet = new pData;
|
|
// Compute the points
|
|
$DataSet->AddSerie("Serie1");
|
|
$qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(datetime, '%d.%m.%y') AS datetime, MAX(value) AS value FROM sysload WHERE datetime > DATE_SUB(NOW(), INTERVAL 31 DAY) GROUP BY DATE_FORMAT(datetime, '%d.%m.%y') ORDER BY DATE_FORMAT(datetime, '%y%m%d') ASC") or die(mysqli_error($dbconn));
|
|
// Dataset definition
|
|
while($res = mysqli_fetch_assoc($qry))
|
|
{
|
|
$DataSet->AddPoint($res["value"]/4,"Serie1",$res["datetime"]);
|
|
}
|
|
$DataSet->SetSerieName("MAX Systemlast [%]","Serie1");
|
|
$DataSet->AddSerie("Serie2");
|
|
$qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(datetime, '%d.%m.%y') AS datetime, AVG(value) AS value FROM sysload WHERE datetime > DATE_SUB(NOW(), INTERVAL 31 DAY) GROUP BY DATE_FORMAT(datetime, '%d.%m.%y') ORDER BY DATE_FORMAT(datetime, '%y%m%d') ASC") or die(mysqli_error($dbconn));
|
|
// Dataset definition
|
|
while($res = mysqli_fetch_assoc($qry))
|
|
{
|
|
$DataSet->AddPoint($res["value"]/4,"Serie2",$res["datetime"]);
|
|
}
|
|
$DataSet->SetSerieName("AVG Systemlast [%]","Serie2");
|
|
// Initialise the graph
|
|
$Test = new pChart(1200,400);
|
|
$Test->drawGraphAreaGradient(90,90,90,90,TARGET_BACKGROUND);
|
|
// Graph area setup
|
|
$Test->setFontProperties("incs/font/pf_arma_five.ttf",10);
|
|
$Test->setGraphArea(60,40,1050,350);
|
|
$Test->drawGraphArea(200,200,200,FALSE);
|
|
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,200,200,200,TRUE,45,2);
|
|
$Test->drawGraphAreaGradient(40,40,40,-50);
|
|
$Test->drawGrid(4,TRUE,230,230,230,10);
|
|
// Draw the line chart
|
|
$Test->setShadowProperties(3,3,0,0,0,30,4);
|
|
$Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription());
|
|
$Test->clearShadow();
|
|
$Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,0,-1,-1,-1,TRUE);
|
|
// Write the title
|
|
$Test->setFontProperties("incs/font/MankSans.ttf",18);
|
|
$Test->setShadowProperties(1,1,0,0,0);
|
|
$Test->drawTitle(0,0,"Systemauslastung [%]",255,255,255,1200,30,TRUE);
|
|
$Test->clearShadow();
|
|
// Draw the legend
|
|
$Test->setFontProperties("incs/font/tahoma.ttf",10);
|
|
$Test->drawLegend(1050,50,$DataSet->GetDataDescription(),0,0,0,0,0,0,255,255,255,FALSE);
|
|
$Test->Render("load.png");
|
|
|
|
|
|
|
|
$DataSet = new pData;
|
|
|
|
$ii = mysqli_query($dbconn, "SELECT name FROM temps GROUP BY name") or die(mysqli_error($dbconn));
|
|
while($i = mysqli_fetch_assoc($ii))
|
|
{
|
|
$DataSet->AddSerie($i["name"]);
|
|
$qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(datetime, '%d.%m.%y') AS datetime, MAX(value) AS value FROM tempvals JOIN temps ON temps.id=tempid WHERE datetime > DATE_SUB(NOW(), INTERVAL 31 DAY) AND name = '".$i["name"]."' GROUP BY DATE_FORMAT(datetime, '%d.%m.%y'), name ORDER BY DATE_FORMAT(datetime, '%y%m%d') ASC") or die(mysqli_error($dbconn));
|
|
// Dataset definition
|
|
while($res = mysqli_fetch_assoc($qry))
|
|
{
|
|
$DataSet->AddPoint($res["value"],$i["name"],$res["datetime"]);
|
|
}
|
|
}
|
|
|
|
// Initialise the graph
|
|
$Test = new pChart(1200,400);
|
|
$Test->drawGraphAreaGradient(90,90,90,90,TARGET_BACKGROUND);
|
|
// Graph area setup
|
|
$Test->setFontProperties("incs/font/pf_arma_five.ttf",10);
|
|
$Test->setGraphArea(60,40,1050,350);
|
|
$Test->drawGraphArea(200,200,200,FALSE);
|
|
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,200,200,200,TRUE,45,2);
|
|
$Test->drawGraphAreaGradient(40,40,40,-50);
|
|
$Test->drawGrid(4,TRUE,230,230,230,10);
|
|
// Draw the line chart
|
|
$Test->setShadowProperties(3,3,0,0,0,30,4);
|
|
$Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription());
|
|
$Test->clearShadow();
|
|
$Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,0,-1,-1,-1,TRUE);
|
|
// Write the title
|
|
$Test->setFontProperties("incs/font/MankSans.ttf",18);
|
|
$Test->setShadowProperties(1,1,0,0,0);
|
|
$Test->drawTitle(0,0,"MAX Temp [°C]",255,255,255,1200,30,TRUE);
|
|
$Test->clearShadow();
|
|
// Draw the legend
|
|
$Test->setFontProperties("incs/font/tahoma.ttf",10);
|
|
$Test->drawLegend(1050,50,$DataSet->GetDataDescription(),0,0,0,0,0,0,255,255,255,FALSE);
|
|
$Test->Render("temp.png");
|
|
|
|
|
|
$DataSet = new pData;
|
|
|
|
$ii = mysqli_query($dbconn, "SELECT name FROM fans GROUP BY name") or die(mysqli_error($dbconn));
|
|
while($i = mysqli_fetch_assoc($ii))
|
|
{
|
|
$DataSet->AddSerie($i["name"]);
|
|
$qry = mysqli_query($dbconn, "SELECT DATE_FORMAT(datetime, '%d.%m.%y') AS datetime, MAX(value) AS value FROM fanvals JOIN fans ON fans.id=fanid WHERE datetime > DATE_SUB(NOW(), INTERVAL 31 DAY) AND name = '".$i["name"]."' GROUP BY DATE_FORMAT(datetime, '%d.%m.%y'), name ORDER BY DATE_FORMAT(datetime, '%y%m%d') ASC") or die(mysqli_error($dbconn));
|
|
// Dataset definition
|
|
while($res = mysqli_fetch_assoc($qry))
|
|
{
|
|
$DataSet->AddPoint($res["value"],$i["name"],$res["datetime"]);
|
|
}
|
|
}
|
|
|
|
// Initialise the graph
|
|
$Test = new pChart(1200,400);
|
|
$Test->drawGraphAreaGradient(90,90,90,90,TARGET_BACKGROUND);
|
|
// Graph area setup
|
|
$Test->setFontProperties("incs/font/pf_arma_five.ttf",10);
|
|
$Test->setGraphArea(60,40,1050,350);
|
|
$Test->drawGraphArea(200,200,200,FALSE);
|
|
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,200,200,200,TRUE,45,2);
|
|
$Test->drawGraphAreaGradient(40,40,40,-50);
|
|
$Test->drawGrid(4,TRUE,230,230,230,10);
|
|
// Draw the line chart
|
|
$Test->setShadowProperties(3,3,0,0,0,30,4);
|
|
$Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription());
|
|
$Test->clearShadow();
|
|
$Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,0,-1,-1,-1,TRUE);
|
|
// Write the title
|
|
$Test->setFontProperties("incs/font/MankSans.ttf",18);
|
|
$Test->setShadowProperties(1,1,0,0,0);
|
|
$Test->drawTitle(0,0,"MAX Lüftergeschw. [%]",255,255,255,1200,30,TRUE);
|
|
$Test->clearShadow();
|
|
// Draw the legend
|
|
$Test->setFontProperties("incs/font/tahoma.ttf",10);
|
|
$Test->drawLegend(1050,50,$DataSet->GetDataDescription(),0,0,0,0,0,0,255,255,255,FALSE);
|
|
$Test->Render("fan.png");
|
|
|
|
|
|
$ii = mysqli_query($dbconn, "SELECT value FROM miscstats WHERE statname='System uptime in sec'") or die(mysqli_error($dbconn));
|
|
$i = mysqli_fetch_assoc($ii);
|
|
$upsec = $i["value"];
|
|
$upday = floor($upsec/86400);
|
|
$upsec = $upsec - $upday * 86400;
|
|
$uphour = floor($upsec/3600);
|
|
$upsec = $upsec - $uphour * 3600;
|
|
$upmin = floor($upsec/60);
|
|
$upsec = $upsec - $upmin * 60;
|
|
|
|
$ii = mysqli_query($dbconn, "SELECT value FROM miscstats WHERE statname='System idletime of uptime in sec'") or die(mysqli_error($dbconn));
|
|
$i2 = mysqli_fetch_assoc($ii);
|
|
$bored = round(100* ($i2["value"]/($i["value"]*4)),1);
|
|
|
|
echo "MaX ist seit $upday Tagen $uphour h $upmin Min und $upsec s wach.<br />";
|
|
echo "Ihm war $bored% der Zeit langweilig.<br />";
|
|
|
|
|
|
echo "<img src='hdd.png' />";
|
|
echo "<img src='memory.png' />";
|
|
echo "<img src='load.png' />";
|
|
echo "<img src='temp.png' />";
|
|
echo "<img src='fan.png' />";
|
|
|
|
?>
|