Metriken in Stud.IP nutzen und auswerten

Metriken in Stud.IP
Jan-Hendrik Willms
(Uni Oldenburg)
Inhalte
•
Was sind Metriken und was soll das überhaupt?
•
Metrics-API
•
Beispielplugin zur Übertragung
•
Auswertungen
•
Diskussion
Was sind Metriken und
was soll das überhaupt?
TIC #4452: Leichtgewichtige Metriken
•
„Grundsätzlich geht es […] darum, beliebige Umstände
messen oder zu zählen. Auf diese Weise kann man besser
verstehen, was gerade im System passiert oder wie
verschiedene Metriken aussahen, bevor es zu einem
Zwischenfall kam.“
•
„… nur anonyme Messwerte…“
Ticket #4452 im Trac
TIC #4452 im Forum
Funktionsweise
•
Metrics-API-Aufruf in Stud.IP
•
Übergabe an MetricsPlugin
•
Senden der Werte an Datenbank
•
Auswertung der Daten
Metrics-API
Metrics-API
// Zählen von Werten
Metrics::count($stat, $increment, $sampleRate = 1)
// Inkrementelles Zählen von Werten
Metrics::increment($stat, $sampleRate = 1)
// Dekrementelles Zählen von Werten
Metrics::decrement($stat, $sampleRate = 1)
// Feste Werte
Metrics::gauge($stat, $value, $sampleRate = 1)
// Zeitliche Dauer erfassen
Metrics::startTimer()
Metrics::timing($stat, $milliseconds, $sampleRate = 1)
Beispielplugin zur Übertragung
Beispielplugin zur Übertragung
class InfluxdbMetricsPlugin extends StudipPlugin implements MetricsPlugin
{
private static function send($stat, $data, $sampleRate)
{
$config = InfluxdbMetricsSettings::get();
}
try {
if (!$fp = @fsockopen('udp://'.$config['host'], $config['port'])) {
return;
}
fwrite($fp, json_encode([[
'name'
=> $stat,
'columns' => ['value', 'timestamp'],
'points' => [[$data, time()]],
]]));
fclose($fp);
} catch (Exception $e) {}
} Auswertungen
Auswertungen
•
Beliebige Möglichkeiten, solange Daten verfügbar sind
•
„Grafana“ als Tool in Oldenburg (und Osnabrück?)
verwendet
•
Beliebige Auswertungen der vorhandenen Daten
möglich
•
Echtzeit-Statistiken/Graphen
Auswertungen
Live-Demo
Diskussion
Links
•
Grafana
•
InfluxDB
•
Beispiel-Plugin auf github