zabbixで東京電力の値を監視してみようかと思う。

電気予報として7/1からスタートのこのページ。

http://www.tepco.co.jp/forecast/index-j.html

 

現在の値はこちら。いろいろとれるみたいだけれど、5分ごとの更新情報に現れる値をzabbixでとってみようと
twitterでつぶやいてた人がいたので簡単にシェルスクリプトで実装。

# cat /usr/local/zabbix/sbin/ele_forecast.sh

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/sh
 
#source ~/.bashrc
JUYO_URL='http://www.tepco.co.jp/forecast/html/images/juyo-j.csv'
DATE_FMT='+%Y/%-m/%-d,%-H:'  # 分は5分おきと1時間おきがあるので含めない。
 
WGET='wget -q -O - '
 
case "$1" in
min)
  MIN=$((`date -d -${2}min +%M`/5*5))
  DATE=`date -d -${2}min ${DATE_FMT}`
  ;;
hour)
  MIN=00
  DATE=`date -d -${2}hour ${DATE_FMT}`
  ;;
 
*)
  echo $"Usage: $0 {min 1-59|hour 1-23} \$2 equal before time"
  exit 1
esac
 
${WGET} ${JUYO_URL} | fgrep "${DATE}${MIN}" | tail -1 | cut -d ',' -f 3

使った感じはこんなもんですね。第一引数に時間か分を入れて、第二引数にはどれくらいさかのぼるか。

# ./ele_forecast.sh hour 1
3568
]# ./ele_forecast.sh hour 2
3754
# ./ele_forecast.sh hour 3
3859
# ./ele_forecast.sh hour 4
3863
# ./ele_forecast.sh hour 5
3749

こちらは分

# ./ele_forecast.sh min 13
3210
# ./ele_forecast.sh min 32
3296
# ./ele_forecast.sh min 40
3339

正しい動きかどうかは、cut のところを消して確かめてみてくださいな。※試した時のデータはこの記事の一番下に書きました。

んでは、このアイテムを登録します。
# vi /etc/zabbix/zabbix_agentd.conf

UserParameter=denki.value[*],/usr/local/zabbix/sbin/ele_forecast.sh $1 $2

再起動して

# /etc/init.d/zabbix_agentd_ctl restart

確かめます。

# /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -p 10050 -k denki.value[min,30]
3163

でも、エラーが出ちゃったのでいろいろ書き直し。
source ~/.bashrc の部分は、zabbixユーザーでzabbix_getを起動しないとだめなので一時的にコメントアウト。なくても動くと思うけど、だめならすべてのコマンドを絶対パスに。
あと、min の時に date -d -${2}min の部分が抜けてて、日付変わってアウトとか。
そもそも、東京電力の更新が遅いので、min だと10分から20分くらいは前のデータを取らないとNGになることがあるかもです。

 30270:20110703:235807.420 Zabbix Agent started. Zabbix 1.8.4 (revision 16604).
 30271:20110703:235807.421 zabbix_agentd collector started
 30272:20110703:235807.423 zabbix_agentd listener started
 30273:20110703:235807.424 zabbix_agentd listener started
 30274:20110703:235807.424 zabbix_agentd listener started
 30275:20110703:235807.425 zabbix_agentd active check started [127.0.0.1:10051]
/usr/local/zabbix/sbin/ele_forecast.sh: line 3: /root/.bashrc: Permission denied
/usr/local/zabbix/sbin/ele_forecast.sh: line 3: /root/.bashrc: Permission denied

で、アイテムを作りました。
とりあえず、日付が変わったところがどうなるかわからないのと、値が出てくるのが様子見なので、30分前のデータを5分間隔0:10~23:59の間っていう形で登録。
これ、更新頻度が通常と違う時間帯を入力するところですね。間違えました。

アイテム作成

ああっ。。
単位が3.5K万Kwっていう頭悪い感じに。
夜遅いので、続きはまた今度にしよう。。。

7/4追記
http://kodai74.blogspot.com/2011/07/zabbix.html?spref=tw
KodaiさんがPython でYahooのAPIを使ったもの作ってました。
いいなぁ。xmlを扱うにもシェルスクリプト並みのこの手軽さがPythonの魅力かと。

後でうちにも導入しようかなと思います。
使用率については確かに、計算しないと出せないですね。

7/5追記。
3.5k万kw という表記ですが、乗数を10000 x 1000 加えることによって単位はGwになりましたが、正常になりました。
ついでに、30分前の値をとるところは15分前にしてテスト継続で、更新間隔を1800秒(30分)にした0:00~1:00 という部分も。
日付が変わっても、1時ちょっとすぎまでは更新しないみたいなので。

設定しなおした画像

とりあえず、1日取得したグラフがこんな感じです。
7月4日のグラフ

0:00~1:00付近が途切れているのは、ファイルの内容に更新がないからです。

続きです。

zabbixで東京電力の使用率を監視

このスクリプトを作るときに元となったデータの抜粋。

2011/7/3,14:30,3720
2011/7/3,14:35,3719
2011/7/3,14:40,3721
2011/7/3,14:45,3724
2011/7/3,14:50,3726
2011/7/3,14:55,3719
2011/7/3,15:00,3719
2011/7/3,15:05,3728
2011/7/3,15:10,3724
2011/7/3,15:15,3737
2011/7/3,15:20,3745
2011/7/3,15:25,3717
2011/7/3,15:30,3714
2011/7/3,15:35,3720
2011/7/3,15:40,3716
2011/7/3,15:45,3714
2011/7/3,15:50,3726
2011/7/3,15:55,3703
2011/7/3,16:00,3696
2011/7/3,16:05,3710
2011/7/3,16:10,3716
2011/7/3,16:15,3723
2011/7/3,16:20,3721
2011/7/3,16:25,3729
2011/7/3,16:30,3731
2011/7/3,16:35,3754
2011/7/3,16:40,3744
2011/7/3,16:45,3739
2011/7/3,16:50,3745
2011/7/3,16:55,3731
2011/7/3,17:00,3751
2011/7/3,17:05,3742
2011/7/3,17:10,3745
2011/7/3,17:15,3728
2011/7/3,17:20,3731
2011/7/3,17:25,3742
2011/7/3,17:30,3745
2011/7/3,17:35,3743
2011/7/3,17:40,3751
2011/7/3,17:45,3764
2011/7/3,17:50,3751
2011/7/3,17:55,3753
2011/7/3,18:00,3749
2011/7/3,18:05,3746
2011/7/3,18:10,3740
2011/7/3,18:15,3752
2011/7/3,18:20,3755
2011/7/3,18:25,3767
2011/7/3,18:30,3766
2011/7/3,18:35,3786
2011/7/3,18:40,3790
2011/7/3,18:45,3817
2011/7/3,18:50,3821
2011/7/3,18:55,3838
2011/7/3,19:00,3863
2011/7/3,19:05,3899
2011/7/3,19:10,3896
2011/7/3,19:15,3895
2011/7/3,19:20,3900
2011/7/3,19:25,3887
2011/7/3,19:30,3891
2011/7/3,19:35,3884
2011/7/3,19:40,3885
2011/7/3,19:45,3892
2011/7/3,19:50,3866
2011/7/3,19:55,3875
2011/7/3,20:00,3859
2011/7/3,20:05,3866
2011/7/3,20:10,3852
2011/7/3,20:15,3842
2011/7/3,20:20,3824
2011/7/3,20:25,3808
2011/7/3,20:30,3794
2011/7/3,20:35,3777
2011/7/3,20:40,3765
2011/7/3,20:45,3769
2011/7/3,20:50,3768
2011/7/3,20:55,3764
2011/7/3,21:00,3754
2011/7/3,21:05,3730
2011/7/3,21:10,3711
2011/7/3,21:15,3710
2011/7/3,21:20,3678
2011/7/3,21:25,3671
2011/7/3,21:30,3647
2011/7/3,21:35,3637
2011/7/3,21:40,3599
2011/7/3,21:45,3596
2011/7/3,21:50,3584
2011/7/3,21:55,3583
2011/7/3,22:00,3568
2011/7/3,22:05,3558
2011/7/3,22:10,3530
2011/7/3,22:15,3530
2011/7/3,22:20,3512
2011/7/3,22:25,3521
2011/7/3,22:30,3491
2011/7/3,22:35,3474
2011/7/3,22:40,3447
2011/7/3,22:45,3439
2011/7/3,22:50,3415
2011/7/3,22:55,3378
2011/7/3,23:00,3360
2011/7/3,23:05,3349
2011/7/3,23:10,3339
2011/7/3,23:15,3296
2011/7/3,23:20,3288
2011/7/3,23:25,3280
2011/7/3,23:30,3238
2011/7/3,23:35,3210
2011/7/3,23:40,3186
2011/7/3,23:45,3163