前回の続きです。
使用量は出たんですけれど、ピーク容量が変わるんで、いったいどれだけ危ないのかが不明です。
そこで、提供されているCSVの3行目がピーク時供給力なので、現在の値から割ってみようかと。
2回もwgetするのは無駄な感じですが、ファイルに落としたり変数に入れるのもどうかなーって思ったので
とりあえず動くソースにしました。いい意見募集中です。
ファイル名は前回と同じで、引数にrate (さかのぼる分数) で取得できるようにしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #!/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|rate) 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|rate 1-59|hour 1-23} \$2 equal before time" exit 1 esac PEEK=`${WGET} ${JUYO_URL} | head -3 | tail -1 | cut -d ',' -f 1` INSTANT=`${WGET} ${JUYO_URL} | fgrep "${DATE}${MIN}" | tail -1 | cut -d ',' -f 3 | tr -d '\r'` case "$1" in min|hour) echo ${INSTANT} ;; rate) if [ ! -z ${INSTANT} ];then echo "scale=2; ${INSTANT} * 100/${PEEK}" | bc fi ;; *) echo $"Usage: $0 {min 1-59|rate 1-59|hour 1-23} \$2 equal before time" exit 1 esac |
tr -d '\r' はなぜか ^M の改行コードが入っていたので、とらないとecho の時に改行されちゃうので削除用です。
bcなんて初めて使いましたけど、scale=2 のここを変えれば、小数点以下を変えられるとか。
参考URLです。
http://www.booran.com/menu/scr/math.html
http://x68000.q-e-d.net/~68user/unix/pickup?tr
設定です。
こんな感じで設定しました。15分前の値をとってきて、0:00-1:00は30分おき。 大体、10分前でもいいみたいですけどね。6-8分で取得できない場合もあるんで大事を取って15分←慎重すぎる。
明日また、取得したグラフは貼り付けたいと思います。
7/7 追記
グラフを張り付けようと思ったらこんな時間に。そして変なグラフになってて不思議に。
zabbix で監視して検知できるので、メール出すようなトリガー作りますよ・・・・?っていろんな人が思うかも。
0:00~1:15まで更新が行われないのは仕様かと思ってましたが、もしかして障害だったとか??(邪推)
0:00 で止まって、4:00 ってlinux系のシステムだと、日時CRONが走る時間で解消しているので、
ログとかがたまりすぎてディスク容量の圧迫で新しいファイルを生成できなかったんじゃないかと推測。
確か、tmpwatchがゴミを消す時間だから、消した後にファイルちょっと置けて、しばらく更新できてたけど夜中だから発見遅れたとかじゃないでしょうか。
そういえば、7/6 の昼データで、15分前のデータも取れない時があったらしく、ポリシーを20分前にしています。昼休みと若干ずれているのはそのせいです。