Mackerel Meetup #10 Tokyo のLT枠で「mkr + peco + tmux + ssh」というタイトルで話をしました。当日の発表スライドを以下に貼っておきます。
話の内容は、tmux + ssh + Mackerel API を組み合わせたとにかくモダンなサーバオペレーション - ゆううきブログ の続きになります。このエントリにあるように普段から
$ tssh $(roles bookmark proxy) # サービス名: bookmark, ロール名: proxy
のようなコマンドを叩いて、指定したロール配下のホストに、tmuxのpaneを使って同時にsshログインしています。
しかし、ロールの数が増えてくると、そもそもロールの名前を正確に覚えていないということがしょっちゅう起きます。 そこで、peco*1 を挟んでやることで、ロール名の候補に対して絞り込みをかけて、ロールを決定したのちに上記コマンドを実行するということができます。
bindkey '^w' peco-mkr-roles function peco-mkr-roles() { local selected_role=$(mkr services | jq -rM '[.[] | .name as $name | .roles // [] | map("\($name) \(.)")] | flatten | .[]' | peco) if [ -n "${selected_role}" ]; then local BUFFER="tssh \`roles "${selected_role}"\`" // zle accept-line // 好みでコメントアウトを外す fi zle clear-screen } zle -N peco-mkr-roles
このようにMackerelを用いて、単に監視をするだけでなく、APIを介してさまざまなツールを組み合わせ、プログラマブルにインフラストラクチャを制御することができます。
参考リンク
- opstools/tssh at master · yuuki/opstools · GitHub
- tmux + ssh + Mackerel API を組み合わせたとにかくモダンなサーバオペレーション - ゆううきブログ
- Add services subcommand by yuuki · Pull Request #97 · mackerelio/mkr · GitHub
追記
マージされたので、mkrを更新すると上記のfunctionが動きます。