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
© Copyright 2024 ExpyDoc