ZABBIXでスイッチのポート別の瞬間負荷をモニタ

ウチのスイッチはSNMP対応なので、ZABBIXで監視可能ってことで設定してみたんですが、Template_SNMPv2_Deviceテンプレートから一括登録したアイテムだと累積のオクテット数しか取得できない模様。SNMPはMIBツリーというプロパティ一覧ツリーがあって、どの項目から値を取得するかを明示できる仕組みになっているので、他の項目をZABBIX上のアイテムとして登録してやればその値を監視できます。なので、TWSNMPというフリーのSMNPマネージャーでそれらしい値が採れる項目を探してみたんですが見つからず。

うーん、これじゃあまり役に立たないなぁ、と思いながらアイテム設定画面を眺めていたところ、「保存時の計算」という項目に「無し」、「差分/時間」、「差分」という選択肢があるのを発見。これを「差分」にしてやれば、前回取得時からの増加分をデータとして記録してくれそうなので、瞬間風速を採れるのではっ?

てことで適用してみたのが下のグラフ。TeraStationがつながっているポートを対象にし、PCから2GBのファイルをコピーし、その後で書き戻しをしてみたもの。赤が送信(ifOutOctets)、緑が受信(ifInOctets)。逆っぽいですがスイッチからみた送受信なのでこれでいいんでしょう。ちなみに取得周期が60秒なので、1分毎の瞬間風速ということになります。

zabbix_2

どうやら、これでポート別の稼働状況を視覚化できるっぽいです。一安心。まぁ、できたからってどうということもないんですが(^^;)。しいていえば、NASや無線LANアクセスポイントなどSNMPで監視ができないデバイスが不正使用されてないか(自分が寝てる時間に送受信量がハネあがったりしてないか)がチェックできるとかですかね。

サーバー監視ツール ZABBIX

zabbix今月のSoftware Design(2008/11号)でZABBIXというサーバー監視ツールが特集されていたので、導入してみました。

ZABBIXの主な特徴は、

  • RDBMSにログを蓄積し、Webインターフェイスでグラフ化などができる
  • HDD、メモリなどの利用状況や、デーモンのプロセス数などが監視可能。URL指定でWebページの稼働チェックも。
  • もちろんSNMPもOK
  • 特定状況(トリガ)に応じてメールを送信するなどのアクションを定義可能
  • クライアント(エージェントと呼ぶ)はマルチOS対応

など。

とりあえず自宅のメインサーバーと、実家にあるバックアップサーバー、そしてWindows系のサーバー2台にエージェントを導入し、会社のサーバーはURL指定で稼働チェックしてみるように設定しました。あとGbEハブもSNMPに対応してるので設定。

 

■設定覚え書き

記事の通りでは上手くいかないところがあったのでいくつか覚え書き。

記事にあるEPELリポジトリは追加せずとも、日本のユーザ会のサイトにCentOS用rpmがおいてあったので、そちらを利用しました。EPELだと現在1.4.6が入るんですが、記事中にもある日本語パッチが1.4.5用しかなかったので。

また初回に管理ページにログインしようとすると、ヘッダーがすでに出力されてるぜ系のエラーが出たんですが、/etc/zabbix/zabbix.conf.phpの中(最初はコメント文しか入っていない)を空にしてやったら治りました。同時に[ERROR: Unknown database type.]というエラーも出てたんですが、一緒に治っちゃったぽいです。

また、Windows版も「公式からソースをもってきて展開するとバイナリが入ってる」との記述だったんですが、単純に1.6をもってきたらUnable to add performance counter エラーで起動せず。1.4.6から抜き出したバイナリならOKでした。1.4.3あたりで治ったらしいバグなんですが、再発したんですかね。

遠隔のNAT下サーバーも適切にポートをあけてやったらちゃんとつながりました。会社で建ててるサーバーもできれば組み込みたいんですが、ポートあけられないので、SSHポートフォワーディングでなんとかできないかなぁと思案中。

Squirrel MailログインページをiPhone向けにカスタマイズ

iPhone OSのファームウェア2.1で、auの絵文字入りメールが全文文字化けするようになってしまいました。以前は絵文字部分だけが化けてたので内容は読み取れたのですが、今回は全文化けてしまうのでどうにもなりません。IMAPもMobileMeもダメです。

で、対策されるまでの一時しのぎで、文字化けメールが来た時はSafariからPHPベースのWebメールASPであるSquirrel Mailを使って読んでいるんですが、このログインページがデフォルトだと写真のように表示され、フォームの選択がやりづらい。ダブルタップでも拡大してくれず、ピンチで手動ズームする必要があります。

対策前

そこで、例によってmetaタグを追加して、iPhone/iPod touchで適当な倍率で表示されるようにしてみました。

なお使用中のバージョンは1.4.8です。

手を加えたのは、functions/page_header.phpです。30行目付近にページ先頭部分のHTMLが定義されているので、赤字部分を追加するだけです。PCでは解釈されず無視されるので影響はないはずです。

    echo ‘<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>’ .
         “\n\n” . html_tag( ‘html’ ,” , ”, ”, ” ) . “\n<head>\n” .
         “<meta name=\”viewport\” content=\”width=device-width, hight=device-height, initial-scale=0.8, \
user-scalable =yes\”>\n” .

         “<meta name=\”robots\” content=\”noindex,nofollow\”>\n”;

initial-scaleは0.8位だと縦画面でちょうど良い感じになりました。横画面メインの方は適宜調節してみて下さい。

対策後

こんな感じになりました。たかだかピンチ1回の手間ですが、省けるものは省いた方が気分が良いです(ピンチは片手持ちでできないので結構手間ですしね)。

iPhoneからAsteriskで発信するAsteriskC2D

AppStoreにAsteriskC2D[iTunesで開く]というアプリがあります。説明によるとiPhoneからAsteriskでダイヤルできるようなことが書いてあります。まさかSIPクライアント!と期待するワケですが、残念ながらダイヤルしてくれるだけ。実際の通話は別のSIP端末でする必要があります。

なにが便利かというと、iPhoneの電話帳に登録済みの番号へ固定電話(Asterisk)からかけたい、なんて時にiPhone上の番号を見ながら電話機のテンキーを叩かなくていい、って位ですね。\115とは言え、有料アプリ買ってまでしたいことかどうかは微妙です。

でも物好きなので試してみましたw。AppStoreの説明読んでも具体的にどう機能するのかさっぱりだし、探しても日本語の情報(どころか英語も)が見つからなかったので書いておきます。

■動作の仕組み

Asterisk(とWebサーバー)が動いているマシンに、専用のPerlスクリプトをインストールし、iPhoneからはhttpでそれを叩いているようです。Perlスクリプトは(必要ライブラリからして)Asteriskにtelnetして操作をしているようです。公式サイトによれば、元々はMac用のクライアントが主みたいですね。ブラウザ上で表示している番号などに簡単に発信するためのソフトのようです。ただし、iPhoneの場合は連絡先に登録した番号を呼び出せるだけ。まぁ、OSとしてコピペがない以上、どうしようもないんでしょうね。

■実際の操作手順

iPhoneにAsteriskC2Dアプリをインストールすると、設定画面にAsteriskC2Dという項目が追加されるので、そこから設定を済ませておきます。Extension欄に通話に使いたい電話機のSIP番号を指定します。UsernameとPasswordはLDAPを使う場合のもので、使わないのであれば、後述の設定をしておけば設定しなくて良いのかも知れません。

次にAsteriskC2Dアプリを立ち上げます。押せるのはContactsボタンのみ。押すと文字通り連絡先画面が開き、番号を選ぶと最初の画面に戻ってきます。

この状態で既に発信作業は行われており、間髪をおかずしてExtensionで指定した電話機が鳴ります。芸が細かいことに、発信者番号は発信先のものが表示されます。つまり、Aさんに発信した場合、あたかもAさんからかかってきたように見えるわけです。

電話を取ります。するとその時点で発呼がかかるようで、受話器からは呼び出し音が聞こえ、相手が出ると通話が開始できる、という流れです。

■サーバースクリプト導入のTips

サーバー側の設定は公式サイトに解説ページがあります。ただ少しいじる必要がありました。まずウチはLDAPを使っておらず、またCPANのライブラリもサクっとインストールできなかったので、LDAP関連の部分を無効化しました。

#use Net::LDAP;

設定部分直後の下記3行もコメントアウト 。

#my $ldap = Net::LDAP->new($LDAPServer, debug=>0) ||die "$@\n";
#my $ldapbind = $ldap->bind("uid=$in{‘username’},$LDAPSearch", password => $in{\’password’});
#if ($ldapbind->is_error()) {print "NO! username/password incorrect\n"; die "username/password incorrect: $in{‘username’} -> $in{‘password’}";}

また、番号の先頭に無駄に9を追加するので、 下記の行もコメントアウト。

#if ((substr($exten,0,1) ne ‘9’) && (length($exten) > 4) ) { $exten = ‘9’.$exten; }

あと、このスクリプト自体が勝手に呼ばれないよう、Apacheのアクセス制限で、LAN以外からはdenyするようにしておきます。同時にディレクトリ名やファイル名も適当に変えておくといいでしょう。

このスクリプトは以下のようなURIで簡単に電話がかけられるので、他にも応用が利くかも知れません。

AsteriskC2D.pl?deskphone=[使いたい電話機のSIP番号]&toCall=[発信したい電話番号]

rep2をiPhoneに最適化しよう

ASP型2chリーダーのrep2は、PCとケータイで2chの未読やお気に入り管理を共通管理できて重宝しています。そのrep2のケータイ用UIをiPhoneに最適化しようってスレ「p2をiPhoneに対応させようぜ」が当の2chのiPhone板に立っていて、非常に活発に改良が進んでいます。

現状の画面はこんな感じ。

IMG_0010 IMG_0009
お気に入りスレ一覧 レス表示

 

■試験導入

今のところ、ケータイ用ビュー(&b=k)を上書きする形でパッチが配布されているのと、まだ開発途上ということなので、ウチでは本環境をいじらずに済ませるべく、以下の手順で導入してみました。

  1. 既存インストールフォルダ(例. rep2)を、丸ごとコピーする(例. rep2i)
  2. rep2i/data/フォルダを削除し、rep2/dataからシンボリックリンクを張る(例. ln -s rep2/data rep2i/data)
  3. 最新パッチをrep2i側に上書きコピーする

これで一応、動いています。まぁ、iPhoneがあれば、わざわざ通常のケータイからアクセスすることはないとは思いますが。

■お気に入りスレ一覧へ簡単に戻れるようにする

σ(^^)は基本的にPCでお気に入りスレ一覧を管理してあり、ケータイからはそこの最新レスを読むだけなので、スレ一覧画面が基本画面となります。しかし、現状ではレス表示画面からはトップ画面にしか遷移できません。ブラウザの「戻る」だと、レスが何ページにも及んだ時に手間になります。トップ画面へはお気に入りスレ一覧から戻れるので、とりあえず、レス表示画面下のTOPボタンのリンク先をお気に入り一覧に書き換えてみました。

補足:以下、2008年9月末時点のバージョンに即して修正しました。

iphone/read_footer_k.inc.phpの75行目付近

書き換え前:

<li class=”home”><a href=”index.php?&b=k”>TOP</a></li>

書き換え後:

<li class=”home”><a href=”subject_i.php?spmode=fav&sb_view=shinchaku“>お気に入り一覧</a></li>

これで移動中の2ch閲覧がかなり快適になりました。電車の暇潰しに最高です(^^)v。