会社で使おうと思っていたTomcatのスレッド数をグラフ化するMunin pluginがあるのですが、XML::Simpleに依存していて「Munin pluginのためにわざわざPerlモジュールインストールするのもなぁ」と思ったので、ついかっとなってXMLをパースするところを正規表現で書き直してみました。ついでにmaxThreadsも表示するようにしたり、微調整もしています。プラグインはgithubに上げてあります。
なんでXML::Simpleを使っていたかというとTomcatのstatus画面がXMLで出力されているからなのですが、頑張ればこのぐらいのXMLは正規表現でパースできるということが実践できて良かったです。
↓は実際のスレッド数のグラフ。


Tomcatハンドブック 第2版
著者/訳者:Jason Brittain Ian F. Darwin
出版社:オライリージャパン( 2008-11-21 )
大型本 ( 560 ページ )
GrowlというMacの通知インターフェースをPythonから使ってみたというお話。
Growl Python bindingをインストール
まずはGrowl本家からGrowl SDKをダウンロードしてダブルクリックし、
$ cd /Volumes/Growl\ 1.2.1\ SDK/Bindings/python
$ sudo python setup.py install
でインストールします。そしてシステム環境設定 -> Growl のネットワークタブをクリックして
- 受信される通知を聞く
- リモートアプリケーション登録を許可
の2つを有効にします。そしてGrowlを再起動しておきます。
スクリプトを書いて実行
あとは下記のようなコードを書いて
として実行するとGrowlから通知が来ます。

#!/usr/bin/env python
# coding: utf8
import Growl
g = Growl.GrowlNotifier(
applicationName = 'GrowlPython',
notifications = [ 'Demo' ],
defaultNotifications = [ 0 ],
hostname = 'localhost',
password = '',
)
g.register()
g.notify(
noteType = 'Demo',
title = 'hello',
description = u'Growlへ通知!',
sticky = False
)
余談
最初はpypiにあるgrowl-pyというPure Pythonなモジュールを使いたかったのですが、どうもメッセージに日本語を入れるとうまく通知されなかったので純正のものを使いました。

初めてのPython 第3版
著者/訳者:Mark Lutz
出版社:オライリージャパン( 2009-02-26 )
大型本 ( 808 ページ )
gitでのタグの作り方のメモです。
tagを新しく作る
$ git tag -a 1.0.0 -m 'v1.0.0'
remoteにpushする
tagを表示する
tagをremoteから取得する
$ git fetch --tags
or
$ git pull --tags
tagを削除する
remoteにも反映させる。(タグ名に’:'をつける)
参考
sshで ~/.ssh/known_hosts にないマシンにアクセスする場合
The authenticity of host 'your-host (127.0.0.1)' can't be established.
RSA key fingerprint is 7f:cd:9a:d8:1d:9a:47:3b:97:e7:8e:c3:81:c8:2e:97.
Are you sure you want to continue connecting (yes/no)?
と聞かれます。社内用のサーバなどの場合、そんなに厳しく接続先のマシンをチェックしなくてもよいのであれば、sshクライアント側の ~/.ssh/config に下記の設定を書くことでこれを聞かれないようにできます。
host 192.168.1.*
StrictHostKeyChecking no
~/.ssh/config ファイルのパーミッションは 600 じゃないと怒られるので
$ chmod 600 ~/.ssh/config
としておきます。これで大量のサーバに最初に初めてssh接続した時の “yes” を入力するだけの簡単な仕事から解放されます!
iPhoneでAppStoreでアプリを探していて「これ良さそうだけど、インストールはあとでやりたい」と思うことはありませんか?例えば容量が大きくてWiFiじゃないとダウンロードできないとか、電波が弱くてダウンロードするのに滅茶苦茶時間がかかる場合とか。
自分はもともと「AppStoreでAmazonのカート的な機能があったらいいのになぁ」とよく思っていたのですが、ちょっとした工夫で気に入ったアプリをストックしておいてあとでまとめてインストールする方法を考えたので、今日はその紹介をしたいと思います。
すごくざっくり言うと「AppStoreの友人に知らせる機能を使って自分のGmailアカウントにメールを送る」というただそれだけです。具体的には以下のような流れになります。Gmailを使うことが前提ですが、アドレスのエイリアスを作れて振り分けできればGmail以外でもいけます。
- まず連絡先に youraccount+iphoneapp@gmail.com というアドレスを登録しておきます(youraccountの部分は自身のものに置き換えてください)
- Gmailのフィルタの設定でyouraccount+iphoneapp@gmail.comにメールが来たら適当なラベル(例えばiphoneapp)をつける設定をします
- AppStoreでストックしておきたいiPhoneアプリがあったら「友人に知らせる」をクリックして1.で登録したアドレスにメールを送ります
- Gmail上のiphoneappラベルにメールが来ているので、リンクをクリックしてアプリをインストール
どうでしょう?これで気に入ったiPhoneアプリを忘れずに「あとでインストール」することができます。若干回りくどいですが自分はこれでアプリのインストールを忘れずにするようになりました。
Unixには watch という、n秒ごとに定期的にコマンドを実行してその出力を表示するコマンドがあります。
例えば netstat -na した結果を wc で数えて現在のコネクション数を1秒ごとに表示するには
$ watch -n 1 'netstat -na | wc -l'
とやります。このコマンドを知る前までは
$ while true; do netstat -na | wc -l; sleep 1; done
とやっていてタイプするのが面倒だったので、かなり楽になりました。
補足ですが、時系列でコマンドの出力を表示させたい場合もあるので、while true; do netstat -na | wc -l; sleep 1; done のやり方も場合によっては全然有効だと思います。
リソース監視ソフトウェアにMuninというものがありますが、個人でも仕事でも使っていて割りと好きなものの一つです。どういうところがいいかというと
- インストールが簡単ですぐ動かせる
- Munin自体は静的なHTMLファイルを生成するだけなので、Webサーバは何でもよい。自分の好きなWebサーバを使えばよい
- リソース情報の収集は単に /etc/munin/plugins 配下のコマンドを呼び出しているだけなので、好きな言語でプラグイン(コマンド)を作れる
かなぁと。
ただ一方で、管理するサーバの台数が100台規模になってくるとグラフの生成に時間がかかる(ものによっては10分以上)という問題があるので、最近は代替できるソフトウェアを模索中です。
コメント