えいのうにっき

a-knowの日記です

Mackerel "kazeburo" plugin を通じてサーバーモニタリングのキモを探る 〜スクリプトプラグイン編〜

去る 10月5日に、Mackerel DAY というイベントが開催された。サーバー監視サービス・Mackerel のリリース3周年を祝っての大型イベントで、豪華登壇陣をゲストに迎え、お昼過ぎから懇親会まで、非常に濃密な時間だった。僕もスタッフとして参加し、また登壇もさせていただいた(僕の登壇スライドはこちら)。

豪華登壇陣、と書いたが、本当に豪華で、非常に多種多様な観点でのお話を聴くことができ、中の人としても・いちユーザーとしても、大変貴重な時間だった。そんななか、ガツンと脳天に響いたセッションが、メルカリ社の SRE チーム所属・プリンシパルエンジニアの id:kazeburo@kazeburo )さんの発表だった。

speakerdeck.com

内容としては、メルカリ社における Mackerel のサービス/ロール設計のお話と、独自に作成しておられるカスタムスクリプトプラグインの紹介というもの。

文字通り、Mackerel をフル活用されているからこその内容を目の前にして、とにかくすごいと思った。僕は居ても立ってもいられなくって、公開されているカスタムスクリプトプラグインをひとつずつ見てみることにした。公開されているものには大別して「LL言語Perl)で書かれているもの」( http://github.com/kazeburo/custom-mackerel-plugins )と「Go言語で書かれているもの」( https://github.com/kazeburo/ )とがあって、今回のこの記事はそのうちの前者について。

ちなみに言語の使い分けについてはこちらのスライドに書かれていて、「コマンドの呼び出しと結果の処理だけで実現できるもの」「HTTPリクエストと JSON 処理があるもの」については LL 言語で書く、という方針のようす(AWS API の利用や DB への接続などをおこなう必要のあるものは Go 言語で、とのこと)。

Mackerel のプラグインは終了コード、もしくは標準出力結果をパースする仕様なので、言語を選ばず書ける(それこそ shellscript でも)のがよいところ。

以下は、ひとつずつ見ていきながら気づいたこととかのメモ。

続きを読む

CloudGarage の無償インスタンスを利用して kubernetes クラスタを構築してみる

定額型パブリッククラウド という触れ込みで先日ローンチされたCloudGarage

cloudgarage.jp

そのフレーズのとおり、「1Core/ 1GB/ 50GB なクラウド VM インスタンスが3インスタンスで 1,480円/月 固定(転送量など込み)」という月額定額制のサービスメニューが用意されていて画期的。すでに趣味用途で AWSGCP などにインスタンスをいくつか立ててる僕にはとても興味深いサービスなわけなんだけど、さらに魅力的なポイントとして、CloudGarage では「Dev Assist Program」なる、開発者向けインスタンス無償提供制度がある。

cloudgarage.jp

この申請に通ると、上述の「1Core/ 1GB/ 50GB なクラウド VM インスタンス x3」が1年間無料で利用できる。そして先日、めでたく僕もこの制度の適用申請が通った。ありがとうございますありがとうございます。

降ってわいたような3つのサーバーインスタンス、さてこいつで何をやろうかなということでまずは、「せっかくある3台のサーバーを活かせるようなことを」ということで、CloudGarage 上に kubernetesk8sクラスタを構築してみることにした。このエントリはその作業メモである。以下目次。

  • 1. まずはインスタンスの作成
  • 2. ログイン・ユーザーの準備
  • 3. /etc/hosts の編集
  • 4. マスターノードのセットアップ
  • 5. コンテナ稼働ノードのセットアップ
  • 6. Pod の作成、起動を試す
  • 7. オマケ
  • まとめ
  • 参考

今回せっかくなので、ほぼ全ての作業を itamae のレシピに落としこみながら進めた。なので、このレシピを使えば誰でも簡単に k8s クラスタを CloudGarage 上に構築できるはず。間違ってるところがあったら Pull Request ください。笑

github.com

続きを読む