ZABBIXでお天気グラフを作ってみました。実用的ではないのですが、外部の公開APIから情報をとってきてグラフ化する練習ということで。
こちらをパクらせて参考にやりました。
Zabbix 外部スクリプトで天気を監視(OpenWeatherMap)
https://blog.apar.jp/php/824/
■■流れ
1ZABBIXサーバの /usr/lib/zabbix/externalscripts/ に取得スクリプトを配置
2ZABBIXで”ホスト”登録
3アイテムで都市毎に登録
■■共通次項
アイテムでスクリプトを指定する際に [] の中に都市名を入れる
データの型を文字列にすれば一覧表示に、整数にすればグラフに。
■その1 天気の一覧を取得し表示してみる。
完成イメージ
スクリプト
[root@wiki-web-2 externalscripts]# cat /usr/lib/zabbix/externalscripts/getWeather.php #!/usr/bin/php <?php // API Key $apiKey='c0fb77bc40a18b9a24019dcb41ee57d3'; // OpenWeatherMap API のURL $apiUrl = 'http://api.openweathermap.org/data/2.5/weather?APPID=' . $apiKey . '&q='; // 第1引数で天気を取得する都市を指定 // 都市はZabbixのアイテムキーで指定します $city = $argv[1]; // 天気データの取得(Json形式) $weatherDatas_json = @file_get_contents($apiUrl . $city); // Json形式のデータを配列変数に変換 $weatherDatas = json_decode($weatherDatas_json, true); // 天気アイコンのファイル名の先頭2文字を取得 $weatherIcon = substr($weatherDatas['weather'][0]['icon'], 0, 2); // 天気アイコンのファイル名が取得できない場合は、取得不可を示す「00」をセット if (!$weatherIcon) { $weatherIcon = '00'; } // 天気アイコンのファイル名から天気名に変換するためのリスト $convList = array( '01' => '晴れ', '02' => '晴れ', '03' => '曇り', '04' => '曇り', '09' => '雨', '10' => '雨', '11' => '雷雨', '13' => '雪', '50' => '霧', '00' => '取得不可', ); // 天気アイコンのファイル名を天気名に変換 $weatherName = $convList[$weatherIcon]; // 天気名を表示 // ここで表示された値がZabbixデータベースに記録されます echo $weatherName; [root@wiki-web-2 externalscripts]#
アイテムの設定
■その2 天気の一覧を取得しグラフにする。
完成イメージ
スクリプト
[root@wiki-web-2 externalscripts]# cat getWeather_Number.php #!/usr/bin/php <?php // API Key $apiKey='c0fb77bc40a18b9a24019dcb41ee57d3'; // OpenWeatherMap API のURL $apiUrl = 'http://api.openweathermap.org/data/2.5/weather?APPID=' . $apiKey . '&q='; // 第1引数で天気を取得する都市を指定 // 都市はZabbixのアイテムキーで指定します $city = $argv[1]; // 天気データの取得(Json形式) $weatherDatas_json = @file_get_contents($apiUrl . $city); // Json形式のデータを配列変数に変換 $weatherDatas = json_decode($weatherDatas_json, true); // 天気アイコンのファイル名の先頭2文字を取得 $weatherIcon = substr($weatherDatas['weather'][0]['icon'], 0, 2); // 天気アイコンのファイル名が取得できない場合は、取得不可を示す「00」をセット if (!$weatherIcon) { $weatherIcon = '00'; } // 天気名を表示 // ここで表示された値がZabbixデータベースに記録されます echo $weatherIcon; [root@wiki-web-2 externalscripts]# [root@wiki-web-2 externalscripts]#
■その3 気温の一覧を取得しグラフにする。
完成イメージ
スクリプト
[root@wiki-web-2 externalscripts]# cat getWeather_Number.php #!/usr/bin/php <?php // API Key $apiKey='c0fb77bc40a18b9a24019dcb41ee57d3'; // OpenWeatherMap API のURL $apiUrl = 'http://api.openweathermap.org/data/2.5/weather?APPID=' . $apiKey . '&q='; // 第1引数で天気を取得する都市を指定 // 都市はZabbixのアイテムキーで指定します $city = $argv[1]; // 天気データの取得(Json形式) $weatherDatas_json = @file_get_contents($apiUrl . $city); // Json形式のデータを配列変数に変換 $weatherDatas = json_decode($weatherDatas_json, true); // 天気アイコンのファイル名の先頭2文字を取得 $weatherIcon = substr($weatherDatas['weather'][0]['icon'], 0, 2); // 天気アイコンのファイル名が取得できない場合は、取得不可を示す「00」をセット if (!$weatherIcon) { $weatherIcon = '00'; } // 天気名を表示 // ここで表示された値がZabbixデータベースに記録されます echo $weatherIcon; [root@wiki-web-2 externalscripts]# [root@wiki-web-2 externalscripts]#
こんな感じです。ただこのOpenWeatherMap、天気に関してはいい加減で東京で霧とかたまに出ます。まじかよ、都会の摩天楼怖い。
One thought on “PHPでも勉強するか! その2 ZABBIXでお天気グラフを作る”