2011年7月28日木曜日

Zabbix API用のjQueryプラグインを公開しました

MozabyはPhoneGap + JavaScriptで開発しているのですが、そのソースコードのうちZabbix APIにアクセスする部分のソースをjQueryのプラグインとして公開しました。

ソースはGitHubで公開しています。

プラグインだけだとイメージが湧きにくいですし、サンプルコードとしても利用できるので、一緒に簡単なデモアプリもつけてみました。デモアプリはブラウザからZabbix APIのリクエストを投げて、結果をそのまま表形式で画面上に表示します。

もともとはこのプラグインとは関係なく、Zabbix APIで何ができて、どんなデータが返ってくるのかを調べるために作ったのですが、このプラグイン公開にあたって書き直してみました。

デモアプリの使い方

まずはデモアプリの使い方です。githubからダウンロードしたtar.gzもしくはzipファイルを解凍して、できたディレクトリをそのままZabbixのWebインターフェースと同じサーバ上にアップロードしてください。(ZabbixのWebインターフェースと同じサーバ上でないと、ブラウザのSame Originポリシーに引っかかって動作しません。)

ブラウザからApache経由でアクセスできる必要があるので、RedHat系のサーバではデフォルトの/var/www/html以下にまるごと置いてしまうのが早いと思います。

アップロードしたら、必要に応じてdemo/main.jsに書いてあるZabbix APIのURLを変更します。

// Zabbix server API url
var url = 'http://localhost/zabbix/api_jsonrpc.php';

設定は以上です。あとはブラウザからdemo/index.htmlにアクセスしてください。

トップはログイン画面になっているので、APIアクセス権のあるユーザでログインしてください。Zabbix側の設定で"APIアクセス"にチェックがついているユーザグループに所属しているユーザでしかAPIにはアクセスできないので注意が必要です。

ログインが成功したら、ドロップダウンから実行できるAPIコマンドが選べますので、試しにhostとgetを選択して"Send Request"ボタンを押すと、

このように下に結果が表示されるようになっています。

JSON形式で返されたデータを1回だけループで回してテーブル表示にしているので、ネストしたデータはJSONデータがそのまま表示されますが、とりあえずどのようなデータが返ってきているかは分かると思います。

また、メソッドのドロップダウンの下にある"Parameters"をクリックすると、詳細なパラメータを設定することができます。

現時点ではcreateやupdate系のメソッドはリストには出てくるのですが中身は実装していません。今後少しずつ追加していくと思います。

jQueryプラグインの使い方

jQueryプラグインとして利用するときは、htmlファイルにダウンロードしたファイルのjqzabbixディレクトリ以下にあるjquery-1.4.2.jsとjqzabbix.jsを読み込むように指定します。

<script type="text/javascript" charset="utf-8" src="jquery-1.4.2.js"></script>
<script type="text/javascript" charset="utf-8" src="jqzabbix.js"></script>

まずはオプションを指定してオブジェクトを生成します。オプションには以下のものが指定できます。指定しない場合は以下のデフォルト値が利用されます。

server = new $.jqzabbix({
    url: 'http://localhost/zabbix/api_jsonrpc.php',  // Zabbix APIのURL
    username: 'Admin',  // ログインユーザ名
    password: 'zabbix',  // ログインパスワード
    basicauth: false,  // Basic認証を利用するかどうか
    busername: '',  // Basic認証のユーザ名
    bpassword: '',  // Basic認証のパスワード
    timeout: 5000,  // リクエストのタイムアウト時間(ミリ秒)
    limit: 1000,  // 一度に取得するデータの上限値(個々のリクエストのオプションで上書き可能)
})

host.getなどのリクエストを行う前に認証を行う必要があり、認証の前にAPIのバージョンを取得する必要があります。これらのメソッドはあらかじめ用意してありますので、以下のように実行してください。

server.getApiVersion();
server.userLogin();

これでserverオブジェクトのプロパティにAPIのバージョンと認証idが保存されますので、あとは通常のAPIリクエストを実行できるようになります。

このプラグインは内部でjQueryの$.ajax()を非同期で実行するようになっていますので、メソッド実行の返り値ではリクエストが成功したかどうかは分かりません。上記のメソッドは引数としてZabbix APIのオプションパラメータ、成功時の関数、失敗時のコールバック関数を指定することができます。例えば、

var success = function() { alert('success!'); }
var error = function() { alert('error!'); }

server.userLogin(null, success, error)

とすれば、成功時には"success!"のポップアップが、失敗時には"error!"のポップアップが出るようになります。これらのsuccess, errorコールバック関数は$.ajax()関数で指定するsuccess, errorコールバック関数と同様、引数にdataとtextStatusを受け取ることができます。

ここまでくれば、以下のようにAPIのリクエストを実行できます。

server.sendAjaxRequest(method, params, success, error)

methodはhost.getのようなZabbix APIで決められているメソッドを、paramsは同じく決められたパラメータを、successとerrorは上で説明したのと同じ成功時と失敗時に実行されるコールバック関数です。Zabbix APIのメソッドとパラメータの詳細はZabbix APIのドキュメントを参照してください。

最初にMozabyのソースの一部だと書きましたが、実は今のバージョンのMozabyはこのプラグインを使っていません。もともとMozabyを開発し始めたときはJavaScriptを勉強し始めたときだったので、あまりオブジェクト指向っぽい書き方はできていませんでした。今後こちらのプラグインを使うように移行しようと考えつつ開発を行っています。

現状はとりあえず動くものができたので公開します、という段階なので、まだ大きな修正を行う可能性があります。ある程度仕様が固まったら1.0のタグを打って、Mozabyのサイトに掲載しようと思っています。

意見や要望があればコメント、もしくはTwitterで@kodai74までお願いします。

2011年7月25日月曜日

リガのユーゲントシュティール建築群

リガ市内には古いユーゲントシュティール建築がたくさん残っています。ユーゲントシュティールというとなじみがないですが、これはアールヌーヴォー建築のドイツ語です。

ユーゲントシュティール建築が残る通りとして一番有名なのが、リガの旧市街地から少し離れたところにあるアルベルタ通りです。

ユーゲントシュティール建築というのは、簡単に言うと建物の装飾として人の顔や体の彫刻をあしらっているものです。こんな感じで入り口の上に顔があったり、人が柱を支えているような装飾になっていたりします。

http://farm7.static.flickr.com/6067/6090596990_db36bbf8d9.jpg

これは少し分かりづらいですが、建物の上の方に人の顔の彫刻がたくさんあります。真ん中あたりにある、縦に細長くなった人の顔などは少し異様な雰囲気です。

http://farm7.static.flickr.com/6083/6090597524_e6ab9410c8.jpg

人だけではなく、ライオンやドラゴンなどの彫刻もあります。

http://farm7.static.flickr.com/6187/6090592564_2d67561310.jpghttp://farm7.static.flickr.com/6183/6090052471_69cc6424cb.jpg

アルベルタ通りには外国の大使館も多くあります。こういうオシャレなところに大使館があるのは優雅な感じがしていいですね。残念ながら日本大使館はここではなく、もう少し市内から離れたところにある近代的なビルの中に入っています。

http://farm7.static.flickr.com/6085/6090050241_9d074cffe6.jpg

リガ旧市街地からアルベルタ通りにいく間には、アレクサンドラ・ネフスキー教会という大きなロシア正教会があります。こちらも見応えのあるきれいな教会です。同じ名前の教会がエストニアのタリンにもあるのですが、そちらとは違った外観です。

http://farm7.static.flickr.com/6187/6090054137_c3b235a2a5.jpg

ちょうど通りかかった時に何やらイベントがあったのか人がたくさん集まっていました。

http://farm7.static.flickr.com/6188/6090054681_e698400c03.jpg

リガ旧市街地でも、ところどころでユーゲントシュティール建築を見ることもできるので、リガ市内観光のときは探してみると面白いと思います。

http://farm7.static.flickr.com/6086/6108352627_958d88ab1a.jpg

2011年7月24日日曜日

ルンダーレ宮殿とバウスカ城に行ってきました

今日は日本から来ている知り合いと一緒にルンダーレ宮殿(Rundāles pils)に行ってきました。

ルンダーレ宮殿はラトビアのリガからバスを乗り継いで1時間30分から2時間くらいのところにある宮殿です。"バルトのヴェルサイユ"とよばれる豪華なバロック様式の建築です。

ヴェルサイユ宮殿を参考に設計されたらしいのですが、大きさは全然小さいです。でも内装などはとても豪華で見応えがありました。

リガからルンダーレ宮殿にいくためには、まずリガのバスステーションからバウスカ(Bauska)行きのバスにのります。1時間に1〜2本出ていて、バウスカまでは1時間程度です。バウスカに着いたら、同じバスターミナルからルンダーレ宮殿方面のバスに乗り、Pils Rundālesというバス停で降ります。

ルンダーレ宮殿行きというバスは出ていないので、バスターミナルの窓口か、その辺の人に聞いた方が良いと思います。バウスカからルンダーレ宮殿行きのバスは乗車の際に運転手にお金を払います。本数は1時間に1〜2本程度ありますが、帰りのバスはあまり遅くまではないので、早めに行くのが良いと思います。

これがルンダーレ宮殿の外観です。現在は博物館として公開、保護されているのでとても奇麗に保たれています。

http://farm7.static.flickr.com/6207/6090561244_a1bca97832.jpg

入り口で入館料(ルートによって異なる。全部見て6Ls)とカメラの撮影料(1Ls)を払い、あらかじめ決められたルートに従って内部を回るようになっています。

これが最初に入る黄金の間です。金色の装飾とか、天井画が迫力あります。

DSC00020

その奥にある白の間。天井と壁のレリーフが豪華です。

http://farm7.static.flickr.com/6195/6090562656_a3ab0292ac.jpg

白の間に隣接してある磁器の間。ここに置かれている磁器は中国製と日本製のものだと書いてありました。

http://farm7.static.flickr.com/6181/6090019149_1940aa604f.jpg

他にもたくさんの部屋があり、それぞれが異なる絵や磁器、装飾で飾られています。代表的な部屋はこんな感じです。

http://farm7.static.flickr.com/6194/6090020569_fd6232612f.jpg

上の部屋の左奥の隅にある、床から天井あたりまで伸びた四角いものは暖炉のようです。ほとんどの部屋にこれと同じものが置かれています。一番したの部分で火を焚いて、煙は外に出るようになっているのだと思いますが、詳しい説明を見つけることができませんでした。

この暖炉、磁器でできていて絵が書いてあるのですが、近づいてみると意外と雑なのが面白かったです。

http://farm7.static.flickr.com/6192/6090563938_4d14c40bb1.jpg

赤い壁の部屋があったり

http://farm7.static.flickr.com/6064/6090021113_36e4d78616.jpg

昔のチェスやトランプ、ビリヤード台などが飾られている部屋もありました。

http://farm7.static.flickr.com/6210/6090566074_cfcfa9ccbb.jpg

このトランプ、近づいてみると遊び心のある模様になっていておしゃれです。

http://farm7.static.flickr.com/6182/6090566562_2209b1eec9.jpg

こちらは寝室です。他にもいくつか寝室があるのですが、意外とサイズはそれほど大きくなく、これもセミダブルくらいの大きさです。

http://farm7.static.flickr.com/6076/6090023029_cbe4bb9925.jpg

他にも書ききれないくらいたくさんの部屋があります。それぞれの部屋ごとにテーマがあったりしますので、ひとつひとつじっくり見て回っていると1時間や2時間はあっというまに過ぎてしまうと思います。

一通り回って地下に降りた展示室では、ルンダーレ宮殿の地下室から見つかった棺も見ることができます。

http://farm7.static.flickr.com/6061/6090023625_e85efd7c64.jpg

一通り宮殿内部を見て回ったあとは、宮殿前の庭園に出ることができます。

http://farm7.static.flickr.com/6080/6090569026_2a08afd340.jpg

庭園も奇麗に手入れされていて、ちょうどバラの花がたくさん咲いている時期でした。

http://farm7.static.flickr.com/6068/6090569720_541f309074.jpg

このあとは帰りのバスに乗ってバウスカまで行き、バウスカ城にも行ってきました。

バウスカはとても小さな町なので、見所はルンダーレ宮殿とバウスカ城くらいだと思います。川と自然も多い町なので、ルンダーレ宮殿見学で疲れていなければ、町からバウスカ城まで散歩してみるのも良いと思います。

これがバウスカ城。あまり原型をとどめておらず、廃墟のようになっています。

http://farm7.static.flickr.com/6062/6090026999_d7801f9aff.jpg

城壁の内部

http://farm7.static.flickr.com/6206/6108795622_5ce39f1ebc.jpg

細い階段を上って、残っている塔の上に上ることができます。

http://farm7.static.flickr.com/6196/6108795870_1ec1ce1af2.jpg

塔の中から上を見上げたところ。

http://farm7.static.flickr.com/6085/6090027737_d4eca1c158.jpg

塔の上からの風景

http://farm7.static.flickr.com/6086/6108796184_f276b47ca4.jpg

となりには博物館も併設されているようだったのですが、時間も遅くなってきていたことと、そろそろ歩き疲れてきていたので今回は入りませんでした。

リガ市内から往復4時間程度で行けて、ルンダーレ宮殿は見応えも十分あるので、リガ観光のひとつとしてお勧めです。リガ市内やバルト3国の主要都市では教会の観光がほとんどになってしまうので、ラトビア観光で時間に余裕があれば、ぜひ訪れてみてください。

2011年7月14日木曜日

Mozabyのリリースから1ヶ月経過した状況

iPhone用ZabbixビューワアプリMozabyを6/8にリリースしてから1ヶ月が経ちました。

リリースする前はバグが出たらどうしようとか、問い合わせが多く来てしまったらどうしようという不安もあったのですが、今のところ特に大きな問題もなく順調に推移しています。

iPhoneアプリをリリースするという経験ができたこともあり、せっかくなので発売から1ヶ月経った状況と感想をまとめておこうと思います。細かい数字を出すかどうか少し考えたんですが、隠すほどの売り上げでもないですし、具体的に出すことで何かの参考になるんじゃないかと思い記載することにしました。

前提として、Mozabyは2.99ドル(350円)の有償アプリです。アプリ、WebサイトApp Storeはすべて英語のみで、世界すべてのマーケットで販売しています。

販売数

まずは販売数ですが、6/8から7/7までに105本の購入がありました。購入頂いた方、どうもありがとうございました!正直、これは想定していたよりも多かったです。

販売数はZabbix SIAのサイトに掲載してから伸びが見られたので、やはり本家サイトに掲載してもらう影響は大きいですね。MozabyのサイトのトラフィックもZabbix SIAからのものが多くなっています。

マーケット

同じ期間のマーケット別販売状況は以下のようになっています。Zabbixのユーザが多く、かつiPhoneがある程度普及している国を表していることになると思います。

  • 日本 17
  • アメリカ 15
  • オランダ 9
  • ブラジル 8
  • ロシア 7
  • イギリス 6
  • フランス 4
  • 南アフリカ 4
  • デンマーク 3
  • ドイツ 3
  • ベルギー 2
  • カナダ 2
  • スイス 2
  • イタリア 2
  • トルコ 2
  • アルゼンチン 2
  • ハンガリー 1
  • スペイン 1
  • スウェーデン 1
  • オーストラリア 1
  • エストニア 1

日本以外ではアジアの国はなく、それほどZabbixは使われていないんだろうと思います。

また、発売当初は日本のユーザの購入が多かったのですが、後半は海外からの購入の方が多くなってきています。これは日本語の情報が少ないことが影響しているのかもしれません。

サポート状況

これまでに6件のサポート、4件の今後の機能追加に関する質問がありました。すべて英語での問い合わせで、ほとんどのメールがgmailからのものだったので、個人で使っている人が多いと見てます。

サポートの問い合わせはすべてZabbix側の設定の問題だったので、ドキュメントの分かりづらいところを修正したのみで、バグフィックスのリリースを出す状況にはなっていません。

機能の追加に関してはAcknowledgement(障害対応コメント)、グラフ、プッシュ通知、iPad版に関するものでした。このうちAcknowledgementとグラフの機能は現在開発中です。

1ヶ月経過した感想

とりあえず、サポートやバグ報告がそれほど多くなかったことが一安心というのが正直なところです。おかげで開発に時間を割くことができました。

これはリリースしてから思ったことですが、安易に無償アプリでリリースすると問い合わせ対応に追われる可能性があります。無償アプリの場合は「とりあえずダウンロードしてみる」ことができるので、有償でリリースした場合に比べてダウンロード数はかなり多くなると思いますし、本当にそのアプリが欲しいと思っている以外の人もダウンロードを行う可能性が高くなります。

特に個人の開発者は時間の制約が大きいと思うので、これからアプリを出してみようかなと思っている人はこの点も考慮しておくのが良いと思います。特に海外の人は日本人よりもサポート問い合わせやバグレポートを積極的に行う傾向があります。

Mozabyの場合はZabbixユーザのベースがあるため、欲しいと思う人は自分でApp Store内を検索するだろうと思っています。いまのところiPhoneのZabbixアプリはMozabyだけなので、とりあえずは機能の実装が一段落するまではこのまま緩やかにユーザが増えていくのが望ましいかなと考えています。

これから有償アプリを開発しようかと考えている人が気になるのがアプリの売り上げだと思います。上記の販売数から察してもらうと分かると思うのですが、正直iPhoneアプリは単価が安いので大した売り上げにはなりません。

一時期iPhoneアプリで一儲け的な話があちこちでありましたが、アプリマーケットができた当初は別として、今はゲームや人気のユーティリティなど購入対象が幅広く、かつApp Storeでトップ10に入るくらいのレベルでないと一儲けとはいえない状況だと思います。

iPhoneアプリをリリースするためには、Appleのデベロッパープログラム(年間10,800円)、開発用のMac、テスト用のiPhone、サポートサイト用のドメインとWebサーバの費用、それに加えて開発とサポートの手間がかかることを考えると、継続的に利益を出すだけでも苦労するんじゃないかと思います。そのような状況なので当然ながら企業としてiPhoneアプリだけで利益を上げることは至難の業だと思います。

少なくとも現時点でMozabyは販売したばかりですし、マーケットに競合アプリがないので多少の売り上げはありますが、数ヶ月すれば今より販売数は少なくなるでしょうし、他にZabbixアプリが出れば環境も大きく変わるでしょう。

逆に、個人で少しづつ開発したものが簡単に世界に販売できて、それなりのフィードバックをもらえるというのはかなり良い経験になると思いますし、そのようなプラットフォームは他にはあまりないと思います。こういったことを勉強だと思って少しづつでも時間を割ける人はぜひ挑戦してみると良いんじゃないでしょうか。

今後の予定

上にも書きましたが、Acknowledgementとグラフ機能は現在開発中です。開発状況は少しづつMozabyのサイトで公開していこうと思っています。

Zabbix API自体がまだ不安定な要素があることが心配ですが、複雑な仕組みを入れずアプリをシンプルに保つことができれば対応はそれほど難しくないと思っています。機能追加の開発を進めつつ、今年中にはリリースされるであろう2.0への対応も行っていきたいと思います。

Mozabyに対する要望や質問があれば、Twitterで@kodai74までコメント頂ければと思います。

ZabbixビューワアプリMozabyの情報はこちらからどうぞ。

2011年7月4日月曜日

Zabbixで電力会社の電力使用状況を監視する

Twitterでつぶやいている人がいたので、Zabbixで電力会社の電力使用状況を監視するスクリプトを作成してみました。

データはYahoo Japanの電力使用状況APIを利用して取得しています。

Zabbix上で監視した結果はこのような感じ。上が取得した生データ(ヒストリデータ)、下がグラフにしたところです。YahooのAPIでは最大供給量と使用量しか取得できないので、計算アイテムを使って使用率を算出しています。

スクリプトはZABBIX-JPのデモサイトにも登録してあります。ログインして[監視データ]-[最新データ]画面や[監視データ]-[グラフ]画面で実際の動きを見ることができます。

今回、スクリプトは勉強もかねてPythonを使ってみました。はじめてPythonを使ったので、こんな書き方でいいのかどうか分からないのですが、とりあえず動いています。

スクリプトとZabbix用のテンプレートファイルはgithubのリポジトリで公開していますので、ご自由に利用ください。

利用する場合はYahooのアプリケーションIDを取得し、スクリプト内の"applicationid="の項目に設定する必要があります。また、スクリプトは外部チェックで動作させるように引数の処理を設定していますので、/etc/zabbix/externalscriptsにファイルを置き、付属のテンプレートxmlファイルをインポートすれば動作するはずです。