IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

VMware 海外動向

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  OpenStack  システムトラブルシュート 

第7回 天気の話をしましょう、Log Insightで! (野田貴子) 2016年8月

fig01

こんにちはー。野田貴子です。今回も海外のVMware関連のコラムを意訳してご紹介します。VMwareの海外動向を理解する上での参考になれば幸いです。

 

IT屋のみなさんは、空調が効いた窓のない職場(自宅?)で仕事漬けになり、社会生活がslack、skype、socialcast、などのソーシャルメディアプラットフォームに制限されていませんか。もし戸外で過ごす気分を味わい、仕事とは関係のないこと、例えば天気について話せたら素敵ではないでしょうか。

この記事では、窓のないオフィスを離れずに、世界中の市の天気情報を取得し、Log Insightで視覚化する方法をお伝えします。次にシアトルの同僚と会話する際には、雨予報を的確に教えてあげて、同僚をびっくりさせてみましょう。

今回は openweathermap.org という一部無料の素晴らしい天気サービスからデータを集めます。これを複数の市の配列に対して行います。このデータはログファイルに書き込まれ、LinuxシステムのLog Insightエージェントによって収集されます。Log Insightでは「World wide current weather(世界の現在の天気)」というダッシュボードと、翌日の天気予報のダッシュボードを作成します。サンプルのコンテンツパックをインポートして手順を省略する場合は、フィールド抽出とダッシュボード生成(ステップ6やステップ7)をスキップできます。

ステップ1: http://openweathermap.org/appid から各自のパーソナルapiキーを取得します(無料アカウントで充分です)。

fig02

ステップ2: openweathermap.org の検索機能を使って収集したい天気情報の位置のリストを書き出します。geo座標や市のコードを使えますが、多くの場合は「市の名前, 国のコード」で事足ります。私の場合は「Yerevan,AM Seattle,US PaloAlto,US Sofia,BG London,UK Frankfurt,DE Sydney,AU」のように検索しました。

ステップ3: curlリクエストでAPIキーのテストをします。以下のコマンドのapiキーをステップ1で取得した各自のキーで置き換えてください。アメリカでは華氏なので、摂氏を意味する「units=metric」の部分を「units=imperia」に変えるといいでしょう。units=を省略すると、ケルビン(絶対温度)が使われます。エラーが起きた場合はダブルクオートや、ステップ1で取得したapiキーを使っているかどうかを確認してください。

root@ugurke:~# curl -s "http://api.openweathermap.org/data/2.5/weather?q=Frankfurt,DE&mode=xml&units=metric&cnt=7&APPID=905730596699e6cd7d4c70a5eb8abb86"
<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: シンプルなシェルスクリプトでデータ取得を自動化します。以下のスクリプトはとても基本的な例ですので、好きに微調整して構いません。APIキーも記述してください。華氏にするにはUNITSで「imperial」を指定します。このスクリプトは各市に対して別々のcurlの呼び出しを行い、XMlでデータを集め、出力結果を /var/log/current.log と /var/log/forecast.log のファイルに追記します。

#!/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

Log InsightがインストールされているLinuxマシンにスクリプトをコピーし、実行可能にし(chmod +x)、それをcrontabに追加します(crontab -e)。私はこの収集を10分おきに実行しているので、crontabは次のようになります。

*/10 * * * * /usr/local/bin/getweatherdata.sh

ステップ5: これでcronが天気情報を取得できるようになったので、次はLog Insightサーバがこのデータを収集できるように設定します。

Log Insightサーバ: グループを作成するか、単に以下のファイル命令をエージェント定義に追加し、Interactive Analyticsで結果を確認します。(このステップを飛ばして直接ステップ8に進み、コンテンツパックをインポートしても構いません。)

[filelog|weather]
directory=/var/log/
include=current.log
tags={"weather":"current"}
[filelog|weather-forecast]
directory=/var/log/
include=forecast.log
tags={"weather":"forecast"}

ステップ6: Log Insightの「Interactive Analysis」で準自動化された機能「field extraction」を使い、天気のダッシュボードで使われたフィールドをマーク、抜き出し、名付けました。XMLはログフォーマットになっていないので、多少の手動調整が必要です。抽出されたフィールドや数値データを含むほとんどのフィールドによって、カラフルで分かりやすいダッシュボードを簡単に作ることができます。以下のスクリーンショットでは気温値が自動抽出されているのがわかります。(このステップを飛ばして直接ステップ8に進み、コンテンツパックをインポートしても構いません)

fig03

ステップ7: 抽出された任意のフィールドをダッシュボードで視覚化できます。この例では曇り度合いのデータを使用しています。

fig04

そして最後に世界中の気象台をダッシュボードにまとめます。

fig05

ステップ8: 作業を省略したい場合、このコンテンツパックをインポートして、上記のサンプルダッシュボードとフィールドをお使いください。Log Insightの評価バージョンとフルバージョンの両方で使えます。Log Insightの「vCenter edition」ではインポートボタンがないため使えません。

fig06

インポート後は複製したエージェントグループをgetweatherdata.shスクリプトを実行しているLinuxシステムに適用してください。

fig07

順調に動けば2つのダッシュボードが現れます。ひとつは現在の天気で、もうひとつは翌日の天気予報です。

fig08

World Weather dashboard(世界の天気ダッシュボード)

fig09

World Weather Forecast(世界の天気予報)

 

改良アイディア:

  • 「シアトルの晴れの日の予報」など、特定の天気予報に対してアラートし、ウェブフックを通して自動で休暇申請をする。
  • ダッシュボードの再デザインやフィールドの再定義をして、最大16日まで予報を拡大する。

参照: 各自のコンテンツパックの構築方法はこちらです https://developercenter.vmware.com/web/loginsight。Steve Flandersのブログもおすすめです: http://sflanders.net/log-insight/

非公式のWorld Weather コンテンツパックのダウンロードはこちらです World Weather Content Pack

※本コラムは以下のブログを意訳したものです。

引用元 

http://blogs.vmware.com/management/2016/06/lets-talk-about-weather-in-log-insight.html

※本コラムはVMware社が公式に発表しているものでなく、翻訳者が独自に意訳しているものです。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  OpenStack  システムトラブルシュート