tlberlus
Goto Top

Reports - Grafische Darstellung

Hallo Zusammen,

ich habe mir via Powershell eine CSV-Datei erstellt, die aus unseren Reports den Gesamtbedarf an Speicherplatz unserer Server errechnet. Diese Daten werden + Datum in eine txt-Datei geschrieben.
11.8;1483
12.8;1469
...

Damit diese Daten übersichtlicher gestaltet werden, hatte ich vor, sie in ein Liniendiagramm (z.B. auch als Bild-Datei) einzubauen und danach als Monats-Übersicht per Mail zu verschicken.

Die Frage: Wie erstelle ich mir am Besten dieses Diagramm?

P.S. Da Excel auf dem Server nicht installiert ist, kann ich vermutlich mit Powershell nichts in diese Richtung machen.

Grüße,

Tiberius

Content-ID: 279872

Url: https://administrator.de/contentid/279872

Ausgedruckt am: 22.11.2024 um 00:11 Uhr

Dirmhirn
Dirmhirn 11.08.2015 um 15:32:39 Uhr
Goto Top
Google mal nach ASCII Art *gg*
TlBERlUS
TlBERlUS 11.08.2015 um 15:40:22 Uhr
Goto Top
Zitat von @Dirmhirn:

Google mal nach ASCII Art *gg*

Sehr schick, allerdings ein wenig mehr aufwand als ich hoffte face-smile
aqui
aqui 11.08.2015 aktualisiert um 15:59:24 Uhr
Goto Top
Ggf. hilft das: http://www.gnuplot.info

Oder den Klassiker RRD Tool:
http://www.heise.de/make/artikel/Kurvenzeichner-2714517.html
Mit einem kleinen Raspberry Pi bekommst du das dann wunderbar über ein GUI angezeigt. Statt Speicherdaten hier mal das Wetter:
http://raspberry.tips/hausautomatisierung/wetteraufzeichnung-mit-raspbe ...
Per SNMP kannst du dir den Speicherstatus auslesen und alles automatisiert darstellen ohne den Umweg CSV.
colinardo
Lösung colinardo 11.08.2015, aktualisiert am 12.08.2015 um 11:54:47 Uhr
Goto Top
Hallo Tiberius,
kann man z.B. über das Google-Charts-API machen, damit kann man sich Charts generieren lassen. Das generierte Bild lädt dann das Powershell-Skript aus dem Web.

Hier ein Beipspiel:
für eine CSV-Datei die so formatiert ist:
Tag;Wert
12.8;4200
13.8;700
14.8;3200
15.8;1500
16.8;1500
17.8;1400
18.8;1320
19.8;100
In Zeile 1 gibst du den Pfad für das Bild an das erstellt wird, und in Zeile 2 den Pfad zur CSV-Datei
(Erfordert durch Verwendung von Invoke-Webrequest mind. PS Version 3.0)
$imagepath = 'C:\chart.png'  
$csv = 'C:\data.csv'  
Add-Type -AssemblyName System.Drawing

$data = Import-csv $csv -Delimiter ';'  
# Werte in Zahlen formatieren
$data | %{$_.Wert = [double]$_.Wert}
# Maximum für die Skalierung ermitteln
$max = $data.Wert | sort -Descending | select -First 1
# Werte an Skalierung anpassen
$data | %{$_.Wert = ($_.Wert / $max)*100 -replace ',','.'}  
# Daten in das Google-Format für die POST-Parameter bringen
$tage = $data.Tag -join '|'  
$werte = $data.Wert -join ','  

# Parameter für den Google-Chart setzen
$body = @{
    cht='lc' # Charttyp: Linien-Chart  
    chtt='Mein Chart' # Titel  
    chs='500x400' # Größe   
    chxt='x,y' # sichtbare Achsen  
    chxl="0:|$tage" # Werte der X-Achse  
    chd="t:$werte" # Werte der Y-Achse  
    chxr="1,0,$max,200" # Skalierung  
    chg="$(100/($data.length-1)),$(100/($max/200))" # Gitternetz anpassen  
}
# Google Chart-API Abfrage via POST senden
$net = Invoke-WebRequest -Uri 'https://chart.googleapis.com/chart' -Method Post -Body $body  
# PNG-Bild aus den zurückgelieferten Daten erzeugen
$img = [System.Drawing.Image]::FromStream($net.RawContentStream)
# Bild speichern
$img.Save($imagepath)
# Bild anzeigen
start-process $imagepath
Das Ergebnis sieht dann so aus:

158ff3fd4787936fa550c3655a76ce42

Klar ist jetzt noch keine Schönheit, aber das lässt sich mit den vielfälltigen Optionen noch verschönern.

Die weiteren Optionen zur Formatierung für die Charts findest du hier:
https://developers.google.com/chart/image/docs/making_charts

Grüße Uwe

Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
aqui
Lösung aqui 11.08.2015, aktualisiert am 12.08.2015 um 11:54:49 Uhr
Goto Top
Und Google kennt dann natürlich auch seine komplette Speicheranforderung und Planung face-wink
Ein Schelm wer Böses dabei denkt....
Dennoch aber eine pfiffige Lösung...keine Frage.
TlBERlUS
TlBERlUS 12.08.2015 um 11:54:43 Uhr
Goto Top
Danke für die Antworten!

Ich werde das wohl über Powershell machen, um es einheitlich zu halten.
Aber jetzt habe ich was neues zum Spielen für meinen Raspberry gefunden.

Grüße,

Tiberius