In den letzten Jahren haben wir in diesem Blog immer wieder das Thema Wetter behandelt. Wir haben sowohl die Wetterdaten in vC Ops “Ist das Wetter normal?” analysiert als auch in einer frühen Version von Log Insight (1.5 beta) angezeigt – “Ich habe das Wetter geloggt” . Seit dem sind 3 Jahre vergangen und sowohl die Datenquellen als auch die Tools haben sich weiter entwickelt. Erstaunlicherweise ist das Thema Wetter aber immer noch aktuell. Ein Bisschen Regen kann ganz Europa verändern, zum Beispiel am Tag der Brexit-Abstimmung.
In diesem Artikel beschreibe ich die Installation und Benutzung eines neuen Wetter – Content Packs für Log Insight (v. 3.3). Die benötigten Wetterdaten werden mit Hilfe eines Skripts von der Seite www.openweathermap.org geholt, in ein Logfile geschrieben und im Log Insight angezeigt. Die Benutzung des Content Packs erfolgt auf eigene Gefahr und sollte nur auf Test-Sytemen erfolgen.
1. Wir brauchen einen API Schlüssel von http://openweathermap.org/appid. Ein kostenlose Anmeldung ist ausreichend.
2. Nun können wir uns Wetterdaten auf openweathermap.org anschauen und Städte notieren, die wir in unsere Liste aufnehmen wollen. Wir brauchen jeweils den Namen der Stadt und den zweistelligen Ländercode. Meine Liste sieht so aus: “Yerevan,AM Seattle,US PaloAlto,US Sofia,BG London,UK Frankfurt,DE Sydney,AU”
3. Ein kleiner Test auf der Shell – bitte den API Schlüssel mit dem eigenen ersetzen:
root@ugurke:~# curl -s "http://api.openweathermap.org/data/2.5/weather?q=Frankfurt,DE&mode=xml&units=metric&cnt=7&APPID=905730596699e6cd7d4c70a5eb8abb86"
Die Ausgabe sollte in etwa so aussehen:
<current><city id="2925533" name="Frankfurt am Main"><coord lon="8.68" lat="50.12"></coord><country>DE</country><sun rise="2016-06-22T03:15:43" set="2016-06-22T19:39:05"></sun></city><temperature value="19.58" min="16.67" max="22.22" unit="metric"></temperature><humidity value="83" unit="%"></humidity><pressure value="1005" unit="hPa"></pressure><wind><speed value="1.03" name="Calm"></speed><gusts value="2.57"></gusts><direction value="288" code="WNW" name="West-northwest"></direction></wind><clouds value="12" name="few clouds"></clouds><visibility></visibility><precipitation value="19.56" mode="rain" unit="1h"></precipitation><weather number="503" value="very heavy rain" icon="10d"></weather><lastupdate value="2016-06-22T06:16:02"></lastupdate></current>
4. Wenn der Test erfolgreich war, können wir es automatisieren. Im folgenden ist ein Skript, das die Liste der Städte durchläuft und für jede Stadt die realtime und die “forecast” Daten holt. Diese werden in zwei Log Files geschrieben. Sie müssen den API Schlüssel im Skript anpassen. Das Skript sollte unter /usr/local/bin/getweatherdata.sh gespeichert werden und ausführbar sein.
#!/bin/bash # Add your own API key from http://openweathermap.org/appid APIKEY=905730596699e6cd7d4c70a5eb8abb86 MODE=xml #json or xml UNITS=metric #metric or imperial COUNT=1 #forecast days # Add City,CountryCode to the list of cities for CITY in Yerevan,AM Seattle,US PaloAlto,US Sofia,BG London,UK Frankfurt,DE Sydney,AU do CURRENT=`curl -s "http://api.openweathermap.org/data/2.5/weather?q=$CITY&mode=$MODE&units=$UNITS&cnt=7&APPID=$APIKEY"` FORECAST=`curl -s "http://api.openweathermap.org/data/2.5/forecast/daily?q=$CITY&mode=$MODE&units=$UNITS&cnt=$COUNT&APPID=$APIKEY"` echo $CURRENT >> /var/log/current.log echo $FORECAST >> /var/log/forecast.log done
Nun tragen wir das Skript auch in die crontab ein (mit crontab -e)
*/5 * * * * /usr/local/bin/getweatherdata.sh
5. Die Daten werden also in die Logfiles geschrieben, jetzt werden wir den Content Pack installieren und die Agentkonfiguration anpassen. Unter diesem Link finden sie den Conten Pack. Sobald dieser entzippt ist, kann er über > Content Packs > Import Content Pack importiert werden. Wenn sie “nur” eine vCenter Edition von Log Insight haben, wird dies nicht möglich sein. (Der Knopf ist nicht da).
6. Nach dem Import muss die Konfiguration des Agenten aus dem Content Pack geklont und zugewiesen werden:
Zuweisung des Agenten zu der Gruppe:
7. Sollten Sie Erfolg haben, werden sie in einigen Minuten zwei neue Dashboards sehen:
Etwas Hintergrund: Die Daten liegen im XML-Format vor. Wir haben keinen dedizierten Parser für XML-Dateien, deshalb habe ich mit ein Paar Klicks die relevanten Felder in den Logs markiert und auf dem Server extrahiert. Diese extrahieren Felder (z.B. Temperatur) sind meist numerisch und können somit sehr gut für Visualisierungen benutzt werden. Siehe die Definition des Temperatur-Felds im folgenden Screenshot:
Oder eine ähnliche Definition, andere Visualisierung für die “Wolkigkeit”:
Zum Schluss:
- Sie können nun auch Alarme für bestimmte Wetterbedingungen erzeugen. Zum Beispiel bei drohenden Sonnenschein einen Alert über Webhook verarbeiten und automatisiert einen Urlaubsantrag stellen
- Die “forecast” Daten habe ich auf einen Tag eingeschränkt, die openweathermap.org API liefert aber bis zu 16 Tagen
- Das Skript könnte optimiert werden: mit einer Liste der Städte-IDs bräuchte man gar keine Schleife
- Das Skript räumt die Logs nicht auf… diese werden immer grösser
- Wenn Sie wissen wollen, was ich alles nicht befolgt habe und besser machen könnte, schauen sie hier nach: https://developercenter.vmware.com/web/loginsight
- Weather Content Pack download link (nach dem Download entzippen)
English version: http://blogs.vmware.com/management/2016/06/lets-talk-about-weather-in-log-insight.html