PHPでも勉強するか! その2 ZABBIXでお天気グラフを作る

 
ZABBIXでお天気グラフを作ってみました。実用的ではないのですが、外部の公開APIから情報をとってきてグラフ化する練習ということで。
こちらをパクらせて参考にやりました。
 
Zabbix 外部スクリプトで天気を監視(OpenWeatherMap)
https://blog.apar.jp/php/824/
 
 
 
■■流れ
1ZABBIXサーバの /usr/lib/zabbix/externalscripts/ に取得スクリプトを配置
2ZABBIXで”ホスト”登録
3アイテムで都市毎に登録
 
 
■■共通次項
アイテムでスクリプトを指定する際に [] の中に都市名を入れる
データの型を文字列にすれば一覧表示に、整数にすればグラフに。
 
 
■その1 天気の一覧を取得し表示してみる。
完成イメージ
02_一覧_グラフ
 
 
スクリプト
 

[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]#

 
 
アイテムの設定
02_一覧_設定
 
 
 
■その2 天気の一覧を取得しグラフにする。
完成イメージ
01_天気_グラフ
 
スクリプト

[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]#

 
01_天気_設定
 
 
 

■その3 気温の一覧を取得しグラフにする。
完成イメージ
03_温度_グラフ
 
スクリプト

[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]#

 
03_気温_設定
 
 
 
こんな感じです。ただこのOpenWeatherMap、天気に関してはいい加減で東京で霧とかたまに出ます。まじかよ、都会の摩天楼怖い。
 
 
  
 

コメントを残す

One thought on “PHPでも勉強するか! その2 ZABBIXでお天気グラフを作る”