Fabric で fabfile.py のコメントを使ったタスクの簡易Usage
最近、Fabric関連のエントリが流行っているようなので、ネタかぶりしない範囲で小ネタをちょっと書いて見ます。
Fabricは、単純にタスクを実行するだけはなく、実行するタスクに引数を渡すことができます。
以下は引数の渡し方についてのPython製デプロイツール Fabricを初めて使う際に役立つTipsからの引用です。
タスクに引数を渡したい場合がありますよね。 解決策 $ fab hoge:fuga でhoge関数の第一引数に’fuga’を渡すことができます。 $ fab hello:name=Jeff とかね。 最初に提示したチュートリアル(Overview and Tutorial)に載っているから詳しくはそっち参考にしてね。
この引数指定機能は非常に便利なのですが、時間が経つと各タスクにどういう引数があったのか忘れてしまい、都度ソースを確認してしまうことがしばしば…。
それでなんとかできないかと思っていたのですが、あるときにタスクにコメントを書いてみたところ、これが fab --list の出力結果に表示される機能があることを発見。この機能を使うと fab --list で表示できる簡易マニュアルを書くことができます。
そこにタスクの引数を書いておけば、簡易Usage機能のように使えます。
具体的にはこんな感じ。*1
def deploy_vmwaretools(): """ fab deploy_vmwaretools:host=192.168.1.1 """ archive_name = 'VMwareTools-9.0.0-782409.tar.gz' put(archive_name, '/tmp') (いろいろ作業) def initial_setting(type='ubuntu12.04'): """ fab initial_setting:host=192.168.1.1,type=ubuntu12.04 """ set_vim() (いろいろ作業)
$ fab --list Available commands: deploy_vmwaretools fab deploy_vmwaretools:host=192.168.1.1 initial_setting fab initial_setting:host=192.168.1.1,type=ubuntu12.04 restart (以下略)
ほかにもコメントの使い方はありそうですが、これで僕のような忘れっぽい人は少し幸せになれると思います。
*1: host, hostsは特別な引数で host=host1、hosts="host1;host2" のような形式で実行対象ホストを指定することができます。
Zabbix向けのHadoopメトリクス取得用スクリプトとテンプレート
先週からZabbix向けのHadoopメトリクス取得用スクリプトとテンプレートをこっそり公開していました。
プログラムとしてはかなり荒削りな状態なので、これまでGithubに上げただけにしていましたが、それだけではあまり意味が無いので、今さらブログで取り上げてみる次第です。
URLは以下。
今上がっているものは、HadoopとHBaseのメトリクスを取得する外部チェックスクリプトとZabbixテンプレート生成スクリプト、生成済みテンプレートのセットです。
監視の観点では、しきい値の設定やグラフの設定など、まだ追加しないといけない要素があるのですが、まずは基本のところのみ上げています。
こちらはすべて /jmx のJMXサーブレットのインターフェースを使用します。
/metrics のメトリクスサーブレットを使うスクリプトもアップしていますが、これは参考扱いで。
これらのインターフェースの違いについては、以下を参照してください。
まずはアップしてある監視テンプレートをZabbixサーバにインポートして、どのようなアイテムが登録されているのか見てもらえると取れるメトリクスの雰囲気がつかめるのではないかなと思います。
普段ごりごりプログラムを書いている人から見ると、スクリプトには変なところも多々あると思いますが、その際はお手柔らかにご指導いただけると嬉しいです。
また、HBaseの情報取得は試験中としていますが、これは 0.94 になってメトリクスが非常に増えていて、その扱いが判断しきれていないことが主な理由です。今アップしているテンプレートは、手元の環境で取れたメトリクスすべてから生成していますが、その状態だとRegionserver向けの監視アイテムだけで722個。情報の取捨選択は悩ましいところです…。
これはちゃんと精査して、環境に合わせたテンプレート生成を行わないとなかなか実用にならないと思いますが、今のところは使う方が必要、不要をより分けていただければと思います。
hbstudy 43 で聞いたioDrive SDK のこと。
シャッツキステから帰るタイミングを逸したので、先週の金曜日に参加したhbstudy 43のことも書いてみます。
イベントのサイトはこちら。
http://connpass.com/event/2030/
NAND Flash祭りということで、Fusion-ioとViolin Memoryの(おそらく初の)共演だったのですが、個人的に気になったのは、最後のFusion-io長谷川さんのセッション。これまでのHWの常識をくつがえすようなことをさらっと言っていた気がしますw
もうかなりうろ覚えですが、自分のその時のTweetを引用します。
これは、HWレベルでトランザクションが実装されて、データ書き込みを行うアプリケーション側でのデータ整合性を保った永続化を気にする必要がなくなったとのことでした。もともと高速に書き込みができるioDriveなのに、その書き込みの手間が単純に半分、コードも簡易になるとの説明だったと思います。
- コンテキストスイッチのボトルネックを回避するため、Writeシステムコールを呼ばずに自動的に不揮発性の領域にデータを書き込む方向。 #hbstudy
これは、メモリ領域に書き込むと、明示的なWrite()を行わなくてもバックグラウンドでデータの永続化を行うというような説明がされていたと思います。データ永続化のボトルネックが、ユーザモードとカーネルモードの切り替えのところになる、というのはこれまでの常識の範囲外だと思います。
ほかにも、変態的(褒め言葉)みたいなことをいろいろ言っていたと思いますが、今後、資料も順次公開されて行くと思うので、そちらを楽しみに待ちたいと思います。
時間もいいところなので、投げっぱなしですが、このエントリはここまでで。
qpstudy 2013.04 での人生初のじゃんけん大会とメイド喫茶の紹介をしてきた。
昨日は、qpstudy 2013.04 に、スタッフとして参加して、主に受付をやってきました。
参加したみなさまお疲れさまでした。今回は、スタッフ的には反省点の多い回でもあったので、後日、全力でスタッフ反省会を行いたいと思います…。
LT大会にて人生初のじゃんけん大会
さて、今回のテーマは、『qpstudy3周年記念LT大会 〜新人さん、業界にようこそ!〜 with ビール』ということで、新人さんに向けた内容という以外は特にテーマを設けず、フリーのLT大会でした。
LTは、スタッフの想定以上に盛り上がり、時間が足りなくなったので、会場を提供していただいたニフティさんには時間延長の対応をしていただきました。ニフティさんマジニフティ!!
また、僕も最後に飛び込みでのLT、というか、人生初のじゃんけん大会にチャレンジさせていただきました。じゃんけん大会の景品は、手前味噌ながら「インフラエンジニアかるた&CD ポスター付きセット」5人分。
じゃんけん大会は、最初の一回で勝者5名が一度に決まり、無事に持参した品は引き取られていきました。もらった方は、職場の新人インフラエンジニアと一緒に遊んでいただけると嬉しいです。
- インフラエンジニアかるたはPVがあるので、かるたの内容はそちらをご覧ください。Comic ZINで委託販売しているので、興味がある方は手に取ってみてください。
じゃんけん大会では、一緒にサーバ擬人化ユーザ会のサイトとかるたでコラボさせてもらったCrystal Dew Worldのことも紹介させてもらいました。
また、新人インフラエンジニア向けということで、じゃんけん大会に入る前にシャッツキステも紹介してきました。やはり、この厳しい世の中、インフラエンジニアが過酷な現実と向き合っていくためには、シャッツキステが不可欠です(キリッ
ちなみに、去年も新人インフラエンジニアに捧げるメイド喫茶紹介で、3回のブログ連載をやっていて、そちらでも紹介していたりします。
qpstudy撤収完了後、何人かを引き連れて実際にシャッツキステに行きました。今後も案内は継続するつもりなので、行きたい方は僕まで声をかけてください。*1
いろいろなロールモデルに触れる機会としての勉強会
今回のLT大会は、新人さん向けがテーマでしたが、自分としてもいろいろ得るものがありました。
特にいろいろな背景を持った人の話を聞くことで、自分が今やっている仕事や今後のキャリアについて考える材料を得ることができたのが一番の収穫です。
最近、インフラエンジニアのキャリアに関する話題が出てきて、自分でも最近気になっているのですが、こういう勉強会では、自分の職場では出会えないキャリアや考え方を持っている人と直接話しができますし、LTでも新人向けということでキャリアを意識した話が多かった気がします。
- http://opendatabaselife.blogspot.jp/2013/04/blog-post.html
- http://debiancdn.wordpress.com/2013/04/10/16622/
こういう雑多な話がしやすいのは、qpstudyのいいところだと思っているので、これからも続けていけるといいなと思っています。
まとまりませんが、ここまでで。
CDH 4.1 と今後のHadoopのメトリクスインターフェースに関するメモ書き
以下のJIRAの議論を見ると、Hadoopの各種メトリクスを取得するインターフェースは、現在はJMXおよびJMXサーブレット(http://namenode.example.com:50070/jmx などからJMXの値が取得できるインターフェース)*1が基本となってきているみたい。
https://issues.apache.org/jira/browse/HADOOP-7144
以前のメトリクスは「org.apache.hadoop.metrics」が基本だった。それに以下のようなインターフェースがあった。
「org.apache.hadoop.metrics」の後継となる「org.apache.hadoop.metrics2」では機能として重なっている「/metrics」のサーブレットは開発されない方向。そのほかmetrics2は現状では微妙なところ。
現時点では、CDH4 + MRv1を使っていると、以下が一番情報が取れる。
でもHBaseのメトリクスは、JMX中心になる流れじゃなくて、「org.apache.hadoop.metrics2」を使うのかな。最新の実装が終えていないので、こちらは自分でよくわからないところ。
https://issues.apache.org/jira/browse/HADOOP-9180
https://issues.apache.org/jira/browse/HBASE-4050
ちなみに、JournalNodeもJMXサーブレットにて情報取得可能。また、Namenode HAを組むとNamenodeのJMXメトリクスに「IPC~」のメトリクスが追加されるので、そこでJournalNodeへの書き込み遅延などが監視可能。
ZKFCのデーモンには、まだこのようなインターフェースは実装されていなさそう。まあ、プロセスが落ちてなければ問題ないということか。
Bashのシグナルトラップ
毎回書くのもアレなので、よく使うシグナルトラップのテンプレートを作ってGistにアップ。
Exitの前に子プロセスをKillするのが便利でよく使っている。
噂の婚活githubリポジトリのboyfriend_requireを真剣に検討してみた
今日、Twitterをちらちら眺めていたら、githubで婚活をしている女子がいるとの情報を発見。
https://github.com/norinori2222/boyfriend_require
最近、周りも色気づいてきて結婚が気になる昨今、女子からの要望にどこまで自分が答えられるか探るべく、githubで公開されている「boyfriend_require」の項目をちゃんと考えてみました。結局、要求にはとどかず、pull requestも送れませんでしたが、せっかくなのでブログに載せます。
要求項目と回答
- 1.たばこを吸わない人(必須)
- ○
- 2.アルコールを飲んでも性格が変わらない人(必須)
- ○
- 3.中学、高校、大学時代の友人と現在も交流が続いている人が5人以上いる人 (Facebookを含む)
- ○
- 4.職場並びに仕事関係者以外で1年以上付き合いのある友人が20人以上いる人(Facebookを含む)
- ○
- 5.ご近所の人(老若男女)と30分以上楽しく会話ができる人
- 最近はそんなに近所付き合いがないですが、まあ○で。
- 6.小学生以下の子供と一緒に遊ぶことが好きな人
- 性的な意味ではなく○
- 7.野菜と納豆が好きな人
- ○
- 8.外国人と気さくに20分以上話せる人(日本語でもOK)
- ○
- 9.問題があっても他人のせいにしない人
- これは自分だけでは判断しがたいですね。。。絶対そうとは言えないので×。
- 10.レジャーの計画(旅行、趣味)を立てて実行に移すことができる人
- ○
- 11.大金持ち、美男美女、芸能人、著名人を見て、嫉妬しない人(必須)
- これは難しいですな…。お金に困らないで生活していた人は正直うらやましいので×。
- 12.他人と比較して卑屈にならず、かつ優越感に浸らない人
- これも絶対そうとは言えないので、×ですね。。。
- 13.昨日までの自分を超えるための努力を惜しまない人
- いろいろとやってみる方だけど、昨日までの自分を超えるためにやっているわけじゃないから×。
- 14.ソーシャルゲーム(GREE、Mobage)に対して嫌悪感がない人
- 質問趣旨がよくわからないところもあるけど、○で。
- 15.WindowsよりもMacまたはLinuxが好きな人
- Mac、Linuxを使っているけど、Windowsも嫌いじゃないので×。
- 16.何があっても暴力を振るわない人(必須)
- 基本的には暴力は振るわないけど、許せないことがあった時に喧嘩したこともあるから×。
- 17.お母さんと比較しない人
- ○
- 18.あいさつができる人(おはよう、おやすみ、いただきます、こちそうさま、ありがとうは必須)
- ○
- 19.現在の状況はどうであれ自分は幸せだと思う人
- ○
- 20.家事全般を押し付けない人
- ○
- 21.自分の価値観を押し付けない人
- 自分では○だと思っているけど、好きなことははっきり言うから、そう感じる人もいるかも。とりあえず、答えは○で。
- 22.男尊女卑思考ではない人
- ○のつもり。
- 23.お金について隠さずオープンにできる人
- ○
- 24.7つの習慣またはピータードラッカーに共感を持ち、自身の生活に取り入れている人
- 読んだけど、生活に取り入れるってほどでもないので×。
- 25.身分立場損得関係なく他人と接することができる人
- ○のつもり。
- 26.何があっても感情的に怒らない人(必須)
- 何があってもってのは無理かなぁ。めったにないけど、怒るときには怒るので×。
- 27.仕事以外に趣味を1つ以上極めている人
- 仕事に限らず、何かを極めてるとは言えないので×。
- 28.クラシックまたはジャズピアノを弾いている人、もしくは興味がある人
- アコーディオンは弾いてる。ピアノにも興味はあるので○。
- 29.冬の間は暖房をつけなくても平気な人
- これは×です。炭もてわたるもまたつきづきし。
- 30.ゲームは1日1時間。テレビは1日30分以下の人
- ×。これだとアニメが消化できないよ!
(エンジニア、プログラマの人は以下追加)
- 31.きれいなソースが書ける人(必須)*きれいなソースを見ると泣いて喜びます
- ×だなー
- 32.自宅サーバーがある人(必須)*Linux希望!
- ○
- 33.自宅サーバーで遊ばせてくれる人(必須)
- ○
- 34.githubで何か公開している人(必須)
- ○
ということで、非エンジニアの質問は19/30、エンジニアへの質問を含めると22/34。それに対して応募条件は以下。
パートナーの条件の必須項目をすべて満たし、かつ28/30(エンジニアは30/34)以上当てはまる方
残念ながら応募要件には到達できませんでした。。。こう書いてみると、昔に流行ったmixiのバトンを彷彿とさせますね。
このリポジトリ作った人は、本当に相手を見つける気があるのかなー。細かいところで条件や基準の矛盾があるのはさておいても。このチェックリストに合致する性格の人も、世の中にはいるんでしょうけどね。
独り身のまま、30も過ぎてくると、一人遊びがうまくなってきて一人で楽しめるようになっちゃうのが、あれなのかなと思ったり。まあ、またそれも人生。