印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux Zabbix で電力使用状況をグラフ化してみたら UserParameter の謎仕様にぶち当たった

東京電力の電力使用状況を Zabbix でグラフ化する。

■ ■ ■

はじめに

東京電力では,電力の供給状況と使用状況を公開している (でんき予報)。これは,2011年に起きた 東日本大震災 の影響で,電力不足に陥ったことから始まったサービスである。あの 輪番停電 はきつかった。ある地域一帯が順番に停電していくのである。

でんき予報では,データを CSV の形式でも公開しているが,かなり使いづらい。そのため,有志の方が使いやすい形にして提供してくれている (東京電力電力供給状況API)。今回はこれを Zabbix でグラフ化する。

動作環境

動作環境は,Vine Linux 6.3, wget 1.14, Zabbix 2.4.8 である。

実装方法

データの取得

東京電力電力供給状況API からデータを取得する。次のコマンドで quick.txt が取得できることを確認する。

$ wget -qN http://tepco-usage-api.appspot.com/quick.txt

quick.txt のデータ形式は以下の通り。

5分ごとに更新される速報データのうち、最も新しいデータを返します。データの形式は、「HH:MM,XXXX,YYYY」です。HH:MMは時刻(24時間制)、XXXXは電力消費量(万kW)、YYYYは供給可能電力(万kW)です。5分に1回アクセスしてもいいですよ。

東京電力電力供給状況API

上手くいったら,適当なディレクトリを決めて,crontab に登録する。

*/5 * * * * cd /path/to/tepco && wget -qN http://tepco-usage-api.appspot.com/quick.txt

「*/5」とすると5分毎に起動してくれる。

Zabbix Agentd の設定

前回と同様に (nlog(n): Freetel の通信量を Zabbix 2.4 でグラフ化),ファイルの値を Zabbix Agentd で拾って Zabbix Server に飛ばすことにする。

/usr/local/etc/zabbix_agentd.conf に次の行を追加する。

UnsafeUserParameters=1
UserParameter=tepco.usage,cat /path/to/tepco/quick.txt | gawk 'BEGIN{FS=","};{print $2}'
UserParameter=tepco.capacity,cat /path/to/tepco/quick.txt | gawk -F , '{print $3}'

すでに UserParameter を使っているなら「UnsafeUserParameters=1」は2度宣言しなくてよい。CSV ファイルのフィールド区切り記号が半角カンマ「,」なので,これを gawk に教えてやる必要がある。「FS=","」で指定してもいいし (FS はフィールドセパレータの意味),「-F」スイッチで指定してもよい。上の例では $2 と $3 の取得方法をあえて変えてあるが,好みによってどちらかに統一しておくのがよい。

UserParameter のナゾ仕様

上のようにすれば UserParameter が取得できるのだが,実はハマった。nlog(n): Freetel の通信量を Zabbix 2.4 でグラフ化 したときは,引数を持たせたので,それにならうなら次のようになる。

UserParameter=tepco.usage[*],cat /path/to/tepco/quick.txt | gawk 'BEGIN{FS=","};{print $$2}'

「$2」は Zabbix の2番目の引数を意味するので,gawk では「$2」とするところを「$$2」と書く必要があるというものだ。しかし,今回は引数を持たせる必要がないので,「[*]」を削除した。すると,値が取得できなくなってしまったのである。UserParameter に引数を持たせない場合は,次のように「$2」と書かなければならない (「$$2」のように重ねない)。

UserParameter=tepco.usage,cat /path/to/tepco/quick.txt | gawk 'BEGIN{FS=","};{print $2}'

これはひどい。引数があるかないかで,後に続く「$」の意味が変わってしまうという仕様はいただけない。常に「$$」のように重ねて書くと決まっていた方が使いやすいと思うのだが…。ドキュメントには明示的に書かれていないような気がする (4 User parameters [Zabbix Documentation 2.4])。

動作確認には,zabbix_get コマンドを使った。

$ zabbix_get -s localhost -k tepco.usage

PHP フロントエンドはレスポンスが悪いからだ。

実行結果

次のようなグラフが得られた。

電力消費量と供給可能電力の推移
電力消費量と供給可能電力の推移


電力消費量は日中は高く,夜間は少ないというグラフになっている。夜中の3時や4時が一番少ないというのは,このサイトへのアクセス数の傾向と似ている。人が活動するときは電力も使うし,インターネットも使うのだ。

毎日0時台に電力消費量が一定になってしまっているところが気になる。東京電力のデータを見ると一定にはなっていないので,API を提供してくれている中の人に問い合わせ中である。

「万kW」という何とも酷い単位

それにしても「万kW」という単位も色々と問題がある。「万」は4つ区切りで「k」は3つ区切りだからである。英語ページ (TEPCO : Electricity Forecast) では,苦し紛れに「x10 MW」という単位を使っているが,区切りは4のままなので変態である。例えば「3,256 万キロワット」は「3,256 x10 MW」という表現になっているが,3つ区切りで書けば「32,560 MW」または「32.560 GW」とすべきであり,もう何が何だか。

先の Zabbix のグラフは単位に「x10 MW」を使っている。Zabbix は自動的に 1000 を K に変えてくれるので,「4,010x10 MW」は「4.01Kx10 MW」と表現されていて,M の上に K がつくという変態表記になってしまっている。日本語で「万kW」と表現する場合は,Zabbix に日本語フォントを入れる必要がある (Zabbix 2.0 のグラフの文字化けを直す、「alternatives」での日本語フォント設定方法 - 双六工場日誌, Zabbixグラフの日本語文字化けを直す方法 | Check!Site)。

Posted by n at 2016-09-29 21:43 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?