そもそも ElasticCache for Redis という呼び方が合っているのか解らないかわはらです。どうも。
はじめに
sensuをAWSで運用しようとした場合にsensuが利用する各種ツールをAWSの各サービスで置き換えられないかと思ったので試す- まずは(というかこれしかないかw)
RedisをElasticCache for Redisに置き換えてみた RedisをElasticCache for Redisに置き換えることでsensuのコアコンポーネント(sensu-serverやsensu-api)のスケールと切り分けてスケールアウトを計画出来るのが嬉しい...かもしれない
まず結論から
- とりあえず動いてるけど...というレベル
- redis-commander を使って GUI で見ることで
sensuからRedisってこんな使い方されてんだなーという収穫はあった
設定
ElasticCache for Redis のセットアップ
VPC内でElasticCacheを利用したいのでCache Subnet Groupsで VPC のSubnet設定するLaunch Cache Cluster Wizardを利用してノード(キャッシュインスタンス)作成を開始する- ポイントは
EngineでRedisを選択することと 1. で作成したVPCサブネットを選択する Launch Cache Clusterをクリックしてインスタンスを起動する- インスタンスが起動するまで暫し待つ
sensu 側の設定
sensu-server の Redis ホストの設定を ElasticCache の ENDPOINT に置き換えるだけ。
--- config.json.original 2014-03-30 13:53:58.110841065 +0900 +++ config.json 2014-03-30 13:54:10.974513172 +0900 @@ -7,7 +7,7 @@ "vhost": "/sensu" }, "redis": { - "host": "localhost", + "host": "sensu-test.abcdefg.0001.use1.cache.amazonaws.com", "port": 6379 }, "api": {
修正したら sensu-server と sensu-api を再起動する。ElasticCache for Redis にうまく接続出来ない場合には sensu-server も sensu-api も起動しない。もし、起動しない場合には ElasticCache for Redis への接続を確認する。
せっかくなので redis-commander で可視化
Redis にもコマンドラインは用意されているが世の中には便利なツールもあるもので redis-commander という Node.js で実装された Web ベースのツールを使えば GUI から Redis 上のデータにアクセスことが出来る。
セットアップ
起動
以下のようなコマンドで実行する。
redis-commander --redis-host sensu-test.xxxxx.0001.use1.cache.amazonaws.com &
redis-commander はホストの 8081 ポートを利用するので SecurityGroup で事前にポートを開放する設定を行うのをお忘れなく...。
画面
ブラウザからアクセスすると以下のように表示される。

ほうほう、とりあえず sensu からアクセスは出来ている。
redis-commander で見る Redis の使われ方
とりあえず見えるようになったので Redis が sensu からどんな風に使われているかを見てみた。(各 key を見てみる)
client
以下のように監視対象が保存されている。

タイプは string となっている。
clients
以下のように監視対象のクライアントリストが保存されている。

タイプは set となっている。
exection
おそらくチェックを行った時間をタイムスタンプで記録されている。

タイプは string となっている。
history
チェックの結果が 0 / 1 / 2 のそれぞれのフラグで記録される。

タイプは list となっている。
lock
何に使ってるんだろう...lock:master ってなんや?

ソースコードの中から lock:master を追っていくと setup_master_monitor と request_master_election というメソッドに辿りついた。さらに setup_master_monitor を追うと bootstrap というメソッドから呼ばれていることが解る。どうやら sensu-server が起動する際にセットするフラグのようだ。
また lock:master がセットされるとインスタンス変数の @is_master が真となりその後の処理の条件分岐で利用されている。
タイプは無難な string となっている。
stash
stash は特殊はキーで sensu-dashboard で Client や Check に対して Silence 等の設定を行った場合にのみ生成される。
以下のように sc02 に対して Silence を設定した場合に...

以下のように stash に Value がセットされる。

タイプは string となっている。
stashes
stashes は stashe の一覧。

タイプは set となっている。
まとまってないまとめ
sensuのRedisをElasticCache for Redisに置き換えることは出来そう- 但し、複数の
sensu-serverからつないだ場合にはどうなるのかは引き続き調査