App::Monitor::Simpleをcpanに上げた

昔書いた記事

http://d.hatena.ne.jp/tori243/20120609/1339255200


最近cronで使う機会増えてて、cpanあったほうが楽だなーと思ってcpanizeしました。
ついでにMinilla化したのはいいんですが、なんか怖くて普通にtarballでアップロードしました。。。


今回、いらない依存を削除したんですけど
なんでAnyEvent使ってたのか思い出せない。。*1

*1:普通にAnyEvent使いたかっただけだろうなー

YAPC::Asia 2013 に参加してなんか書いてたというお話

なんだかんだで今年で4回目のYAPC::Asia。


なんか、いろいろ下書きしたんですが
グダグダな記事になりそうだったので一言でまとめますと、
最高
でした!!!
会場、ネットワーク環境、トーク(はずれなし)、懇親会(しかも無料!DeNA++)、どれをとっても最高。
としか言い用がありません。今年も存分に楽しませて頂きました。


Perl置かれている現状や来年のYAPC::Asiaなど、心配事は多々あるわけですが
自分はグダグダ言わずにコード書いて
Perlに貢献していくしかないかなーなどと思っています。


というわけでYAPC会場で暇を見つけてこんなの書いてました。
redis-stats


redis-stats > fluentd > GrowthForecast
というところまでやりたかったんですが、
redis-stats書くまでしか行けませんでした。書くの遅。


今回1000人超規模というとても大きなイベントになり
運営されていたスタッフの方々は例年にもまして大変だったと思います。
本当にお疲れ様でしたそしてありがとうございました!

VM::EC2でIAMロール認証を行う

VM::EC2でもIAMロール認証したくて、
VM::EC2にプルリクでもしようかなとコード眺めてたところ
「あれ、別にコード変えなくても今のままで行けるんじゃね?」
と気付いてしまった。

use strict;
use warnings;
use VM::EC2;

# dummy instance
my $ec2_dummy = VM::EC2->new(
    -access_key => 'a', # 空だと怒られる。。。
    -secret_key => 'b', # 空だと怒られる。。。
);
# get iam token
my $token = $ec2_dummy->instance_metadata->iam_credentials;
# get ec2 instance
my $ec2 = VM::EC2->new(
    -security_token => $token,
);
# api access...
print $ec2->describe_instances();


一度ダミーインスタンスを作って、iam_credentialsを取得。
そのトークンを用いて再認証したらいけた。


これでEC2サーバにキーを置かなくてもIAMロール+VM::EC2でAPIアクセス出来ますね!

Redisのメモリ設定とファイル設定のdiff取るスクリプト書いた

※2013/07/25 スクリプトと概要をUpdateしました

次期バージョンであるRedis 2.8ではこの問題を少しでも解決しようと、 CONFIG REWRITE というコマンドで、redis.confの書き換えを行えるらしい、 が、結局それを忘れたら同じことなのでこの問題の解決にはなるかは微妙なところだ。 メモリ上にしか反映されていない設定があるかどうかをなんらかの方法でチェックすることができれば監視するなどできると思うのだが…。

http://unknownplace.org/archives/twilio-redis-incident.html


書き捨てっぽいですが、差分をとるスクリプトをペロッと書いてみました。

概要

以下のようなことをしています。

  1. 値が空のキーはデフォルト値を設定
  2. 単位(K/M/G)を最小単位に戻す
  3. メモリ上のキーを正とします*1
    • メモリにのみキーが存在する場合、ファイルのキーにデフォルト値を追加設定
    • ファイルにのみキーが存在する場合、ファイルのキーを削除
  4. 上記ハッシュをテキスト化してdiff取る
  5. 差分がないと「0」、差分があると「1」をステータスコードとして返します


チェックスクリプトとしてお使いください〜

*1:そうしないとチェックしようがないため

redis-topにMax値との比率を出すオプションを追加しました

CONFIG GET で取れる値(maxmemoryやmaxclientsなど)を使って使用率が確認できるとより便利かなぁと思います

Redisの監視/分析系ツールまとめ

なるほど。そうしましょう!

しました

https://github.com/toritori0318/p5-App-RedisTop
まだGithubのみ。


※2013/7/17 追記
さらに--slowlogオプションも追加しました。



オプションで--memoryperと--connperと--slowlogを追加しています。デフォルトでは表示されません。
ただ、maxmemoryとmaxclientsは
redis.confに明示的に指定しておかないとCONFIG GETで値取れないんですよねー*1
そこだけ注意しましょう。


しばらく様子見て問題無さそうならCPAN上げようかと思います

*1:--memoryや--connとあえて別にしているのもその理由

Yogafire 0.0.4 release!

ChangeLog

instance-type で表示していた価格

http://aws.amazon.com/ec2/pricing/pricing-on-demand-instances.json から動的に取得するようにしました。
これで常に最新価格情報を表示してくれるようになった!

instance-type に 「view-detail」「region」「platform」オプション追加

regionを個別に指定できるようにしました。
またplatformは「linux/mswin」のいずれかを指定出来ます。
また view-detail を追加し、更に詳細な情報を表示するようにしました。
具体的には「ebs_optimized」「instance_storage」「price_month」を表示項目に追加しました。

default view

detail view

補足

検索フィルタも機能追加しようとしていましたが、
結構面倒な上そんなに需要ないかなと思い実装していません。
時間があれば実装するかも。。。

Yogafire 0.0.3 release!

ChangeLog

  • vpc-info / vpc-graph追加
  • cmd / get / put コマンドで concurrencyオプション追加
  • ロギング整理

vpc-infoコマンド追加

yoga vpc-info

vpcを選択すると、vpcに関連する情報をダラダラと表示します。
例としてVPC Wizardの「vpc with public and private subnets」で作ったVPCで試してみました。こんな感じ。

vpc-graphコマンド追加

yoga vpc-graph

vpcを選択すると、vpcに関連するリソースのリレーション図をテキストで表示します。


さらに、オプションを指定すると詳細に表示できたりします。

yoga vpc-graph --route-table --detail

cmd / get / put コマンドで concurrencyオプション追加

並列オプションを指定できるようにしました。わーい

# 3並列でuptimeをリモート実行
yoga cmd 'www*' 'uptime' -c 3
# 5並列でファイルをput
yoga put 'db*' ./hoge.conf /path/to/conf/ -c 3

直近のTodo

  • AutoScale設定ができるようにする。ただしVM::EC2のAutoScale対応が中途半端なのでパッチ書くことになりそう。もしくはapi-tools使うか…

ぼんやりと

  • Chef連携出来ないかな〜。
  • APIを更に整理した Yogaflame モジュール考察中。