mixi engineer blog

*** 引っ越しました。最新の情報はこちら → https://medium.com/mixi-developers *** ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

Amazon EC2 リザーブドインスタンスの利用状況をDatadogで監視する(AWS Summit Tokyo 2017 で発表してきました)

はじめまして。北村です。
 
先日行われた AWS Summit Tokyo 2017 で、Datadog 様の EXPO セッション枠の一部を頂いて SNS「mixi」における Datadog 活用事例について紹介させていただきました。

speakerdeck.com

今回は、その発表の中で紹介させていただいた EC2 リザーブドインスタンスの管理・購入を支援する以下の自作ツールについて紹介をしたいと思います。

github.com

ツールの概要

先にツールの概要を解説しますと AWS の API から得られた EC2 インスタンスの稼働状況とリザーブドインスタンス契約情報を集計し

  • 稼働中のインスタンス数
  • 有効なリザーブドインスタンス数
  • オンデマンドインスタンス数
  • 未使用状態のリザーブドインスタンス数

以上の推移を、Datadog 上でリアルタイムで可視化するというインスタンス集計プログラムとなります。

ここで、Datadog について簡単に紹介しますと「クラウド型のサーバ監視ツール」となっております。AWS 移行のタイミングで SNS「mixi」には導入しており、日々活用させていただいています。

www.datadoghq.com

Datadog は「多機能かつ柔軟なグラフ機能、ダッシュボード機能を持つこと」に加えて「カスタムメトリクスと呼ばれるユーザ定義のメトリクスを利用することで、自由な数値を簡単に可視化ができること」が非常に魅力的なサービスです。
今回のツールでも、その機能を利用し、集計した各数値をカスタムメトリクスで Datadog に送信することで可視化を実現しています。
 

f:id:mixi_engineers:20170612112154p:plain

 
Datadog で描画したサンプルグラフ(数値はダミーです)がこちらとなっています。
 

f:id:mixi_engineers:20170608135048p:plain

これは、t2.medium のインスタンス数の推移を可視化させた例となっており、以下の推移が分かると思います。
  • Running Instances (稼働中のインスタンス数)
  • Reserved Instances(リザーブドインスタンス数)
  • Unused Reserved Instances(未利用状態のリザーブドインスタンス数)
  • On-demand Instances(オンデマンドインスタンス数)
グラフ中央付近のタイミングで13台のリザーブドインスタンスを購入しているのですが、それによって各値が変動していることも分かると思います。

ツール作成のモチベーション

AWS で EC2 を利用されている方ならば、リザーブドインスタンスの利用検討を少なからずしているのではないかと思います。
オンデマンドインスタンスをリザーブドインスタンスに切り替えることで、最低1年の利用コミットが発生してしまいますが、オンデマンドインスタンスよりも最大75%引きの値段でEC2を利用することができるからです(詳しくは AWS のサイトを参照していただければと思います)。
 
SNS「mixi」は長年オンプレミスで運用してきましたが、2015年よりほとんどのサーバを AWS に移行を行いました。
オンプレミスからの移行ということもあり EC2 が非常に多く、リザーブドインスタンスを積極的に活用することで大きなコスト削減を実現しています。
 
しかしながら、移行が進むにつれてインスタンス数が増え、インスタンスタイプも増えてくるとリザーブドインスタンス契約の管理が煩雑になってきて
  • 一体どれだけのオンデマンドインスタンスが存在しているのか?
  • リザーブドインスタンス契約数は適切であるのか?
  • 余っているリザーブドインスタンスはないのか?
を把握するのが苦しくなってきました。
 
中には AutoScaling であったり、平日昼間、逆に夜中にしか稼働させていないサーバも混在しており、1日の EC2 の台数の上下が激しくなっています。
これもリザーブドインスタンス契約の判断を複雑にしています。
 
リザーブドインスタンスの利用状況はAWSコンソールの「EC2レポート」を参照すると把握することができるのですが、以下のデメリットがあります。
  • リアルタイムではない(1〜3日の遅延)
    以下は「EC2レポート」で直近のインスタンス使用状況を表示させた例となっています。直近の2日間は値が完全に取れていないことが分かります。このため、リザーブドインスタンスの過不足状態を確認するまで時間がかかってしまいます。

    f:id:mixi_engineers:20170612113459p:plain

  • 時間毎の詳細な利用状況が分からない(利用状況が1日でまるめられてしまう)
    • なので、未使用リザーブドインスタンスがあったとしても、まるまる1日余っているのか、一定時間だけ余っているのか分からない状態になっています
    • AWS Detailed Billing Reports を参照すると分かりますが、別途集計処理が必要になってしまいます
 
そこで、AWS の API よりインスタンスの利用状況を取得、集計し、リアルタイムで Datadog で可視化してしまおう!というのが、今回の紹介させていただいたツール作成のモチベーションでした。
 
このツールを活用することで SNS「mixi」では複数のリザーブドインスタンス契約の管理に加え、リザーブドインスタンス契約判断を行っています。

おわりに

AWS Summit Tokyo 2017 のセッションでは以上のツール紹介に加えて、なぜ Datadog を選択し導入したのかについても紹介させていただきました。
当日は多くの魅力的なセッションがあるなか、足を運んでいただいた方もいらっしゃり、大変ありがたかったです!
 
また、最後になりましたが Datadog 様には、このような機会を与えてくださり、ありがとうございました。Datadog 様からは Datadog ロゴが刺繍されたパーカーをプレゼントしていただきました。American Giant というサンフランシスコのアパレルスタートアップ製のパーカーで自分も大好きなメーカーです。
セッション当日は、嬉しくて、パーカーを着るには暑い日でしたが汗をかきながら着用して発表させていただいたのもいい思い出です。
 

f:id:mixi_engineers:20170608135654j:plain

 
最後まで読んで頂きありがとうございました!