NEWS
[gelöst]Wie Grafana snapshot erstellen?
-
Hallo wie kann ich einen snapshot von einem grafana chart erstellen um diesen danach mit Telegram versenden zu können? Wenn ich auf folgendes mache passiert das:
In einem Chart auf Share --> Link --> Direct Link rendered image --> dann öffnet sich eine neue Seite mit einem png Bild. Dieser Link zeigt aber immer das gleiche Bild an, auch wenn ich auf Seite neu laden drücke. Erst ein neuer Link zeigt wieder den aktuellen Zeitraum an.
In einem Chart auf Share --> Snapshot --> local snapshot --> daraufhin bekomme ich einen Link der mit localhost:3000 beginnt angezeigt, wenn ich diesen im Browser einfüge, kommt ein Seite laden Fehler. Wenn ich localhost durch die Grafana ip ersetze komme ich auf das normale Dashboard.
In einem Chart auf Share --> Snapshot --> snapshot.raintank.io --> daraufhin bekomme ich einen Link der mit snapshot.raintank.io beginnt angezeigt, wenn ich diesen im Browser einfüge, komme ich auf das normale Dashboard (kein Bild) und bei den Linien wo ich die Farbe manuell geändert habe, werden in der Farbe schwarz angezeigt.
Lange Rede kurzer Sinn, kann ich zum Beispiel mit dem exec Block in Blockly (mit diesem Befehl mache ich snapshots von meinen Kameras: wget --output-document /home/iobroker/xxx.jpg http://192.168.178.xxxxxxxxxxxxxxxxxxxx), einen Befehl ausführen der mir einen Snapshot von einem Chart speichert um diesen, dann mit Telegram versenden zu können? Ich habe dazu schon einiges gelesen, leider hat es mir nicht weiter geholfen, oder ich hab es nicht kapiert. Vor allem ob ich phantomjs benötige oder nicht?! Könnt ihr mir weiterhelfen?
-
Ich habe mir jetzt einen Link zusammengebastelt der funktioniert und einen API Key erstellt. Wenn ich in putty folgenden curl Befehl eingebe wird ein gerendertes Bild von dem Grafana Chart abgespeichert.
curl -H "Authorization: Bearer eyJrIjoidm4xSTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==" "http://xxxxxxxxxxxxxx:3000/render/d-solo/wP1rmPnZk/temperatur?orgId=1&refresh=1m&from=now-7d&to=now&panelId=2&width=1920&height=1080&tz=Europe%2FBerlin" > /home/iobroker/temperatur2.png
Über den exec Block in Blocky geht das so leider nicht. Hat einer von euch eine Idee wieso?```
-
@saeft_2003 hast du dem javascript adapter exec rechte gegeben
-
Ja habe ich. Ein exec block mit dem Befehl wget — docmunet..... funktioniert um Screenshots von meinen Kameras zu speichern.
Gibt es noch einen anderen Weg den Befehl ausführen zu lassen?
-
wenn du das fixer script angewendet hast, könntest du das exec() blockly mal mit sudo testen
man könnte auch den terminal adapter installieren und darin die befehle testen um fehlermeldungen zu sehen - oder du arbeitest mit ergebnissen im exec-blockly um evtl. fehlermeldungen zu analysieren
-
ok danke ich werde es heut abend testen
-
ich vermute das es ein Rechte Thema ist. In Putty kann ich den Befehl nur als root ausführen, als normaler Benutzer kommt selbst mit sudo vor dem Befehl --> keine Berechtigung.
Im Terminal adapter hätte ich den ganzen Befehl eintippen müssen, oder gibt doch eine Möglichkeit etwas rein zu kopieren?
Ich konnte mich noch nicht weiter aufschlauen was genau das sudo fixer script ist. Würde mir das helfen?
-
du schreibst in das root directory - das wird evt. das problem sein - curl allein ist eigentlich mit jedem user ausführbar
am ende deines befehles wähle mal ein anderes verzeichnis - eines mit rechten für jederman
zur not mach dir eines :
cd /opt
mkdir testbild
chmod 777 testbildändere deinen befehl am ende um:
statt " > /home/iobroker/temperatur2.png" nehme "> /opt/testbild/temperatur2.png" -
Ich weiß noch wie ich den wget Befehl erstellt habe um Bilder von meinen Kameras zu speichern, konnte ich nicht in das Verzeichnis /opt/iobroker/ schreiben. Deswegen habe ich dort /home/iobroker/ verwendet.
Deswegen sollte /home/iobroker/ auch mit curl gehen, oder? Aber ich probiere heute Abend dein Tipp mal aus. Danke.
-
@saeft_2003
eigentlich schon - aber ein versuch schadet ja nicht - ich sehe sonst in diesem befehl keine berechtigungsprobleme -
oder du hast die gleichen Probleme wie ich.. der iobroker user darf nicht in das verzeichniss speichern
musst du dem rechte geben
-
ich wollte nicht die rechte auf den ordner /home/iobroker ändern - deshalb einen neuen ordner mit vollen rechten für alle - zum test
-
@saeft_2003 kann es sein das du das hier nicht deaktiviert hast?
wenn das so eingestellt ist, sollte auch
funktionieren und holt sich dann den aktuellen Stand -
@liv-in-sky sagte in Wie Grafana snapshot erstellen?:
du schreibst in das root directory - das wird evt. das problem sein - curl allein ist eigentlich mit jedem user ausführbar
am ende deines befehles wähle mal ein anderes verzeichnis - eines mit rechten für jederman
zur not mach dir eines :
cd /opt
mkdir testbild
chmod 777 testbildändere deinen befehl am ende um:
statt " > /home/iobroker/temperatur2.png" nehme "> /opt/testbild/temperatur2.png"Das war die Lösung! Neuen Ordner mit den Rechten 777 angelegt und schon geht der curl Befehl in Blockly. Vielen Dank für den Tipp!!!
@arteck ja sieht wohl so aus als hätte ich das gleiche Problem wie du, aber die Lösung war dann doch relativ einfach.
@crunchip doch das habe ich deaktiviert
Vielen Dank an alle!
-
@saeft_2003 sagte in Wie Grafana snapshot erstellen?:
doch das habe ich aktiviert
nicht aktivieren, du musst es ausschalten
-
sorry ich meinte deaktiviert.
-
@saeft_2003 ist mir grad so eingefallen, du warst es doch mit der Grafana version 6.2.2 da hatte ich dir ja geschrieben, das ein paar Sachen, zwecks Sicherheit iframe...etc geändert wurde...wahrscheinlich muss noch etwas an der Einstellung bei dir geändert werden
-
ja das war ich, im log hatte ich gesehen das er die Organisation nicht findet. Deswegen habe ich diese nochmal geändert und seitdem funktioniert iframe wunderbar
-
Hallo,
versuche gerade exakt das selbe, möchte mir über Telegram ein gerendertes Bild aus Grafana schicken, sobald ich "Klimaverlauf" meinem Telegram Bot schreibe, bisher leider ohne Erfolg.
Im Text2Command habe ich eingerichtet, dass sobald ich Klimaverlauf schreibe, ein bestimmter Datenpunkt auf true geändert wird und somit mein Blockly Script ausgeführt wird.
Das Skript sieht so aus.
Der Exec Befehl sieht so aus:
curl -H "Authorization: Bearer eyJrIjoiVlJyYmoyNXpja2U2OVk1dnNvaktuZDk3TEFyODXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=" http://192.168.XXX.XX:8082/proxy.0/grafana/render/d-solo/nISKbEZRk/raumklima?orgId=1&refresh=1m&panelId=12&width=1000&height=500&tz=Europe%2FBerlin > /opt/grafana/klimaverlauf.png
Das Grafana Verzeichnis hat 777 Rechte, dort wird auch eine Datei mit dem Namen Klimaverlauf.png erstellt, sobald ich das Skript triggere, allerdings ist die Datei 0kb groß.
Im Log finde ich folgende 2 Meldungen:web.0 2019-09-15 13:17:20.114 error [proxy] Cannot get "http://192.168.XXX.XX:3000": Error: socket hang up telegram.0 2019-09-15 13:17:10.267 error Cannot send photo [chatId - 283259026]: Error: ETELEGRAM: 400 Bad Request: file must be non-empty
Hat jeman eine Idee, woran es liegt? Hängt das möglicherweise mit dem Proxy zusammen, über den Grafana läuft?
-
Ich kann dir heute Abend mal mein Skript posten das bei mir funktioniert. Die Frage mit dem Proxy kann ich dir leider nicht beantworten...