nOpsのCloudInventoryを使ってAWSの構成情報をクエリの形で抽出してみました。

どうもさいちゃんです。今回はnOpsでコスト管理を行っていくときにぜひ使って欲しい「CloudInventory」という機能についてご紹介します。マルチアカウント運用でのコストのお悩みを解決したい方にオススメの記事です。
2022.07.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

nOpsはAWS環境の構成やコストの可視化や評価を行うことのできるクラウド管理プラットフォームです。

nOpsにはコストの削減をに使える機能がいくつかありますが、今回は私の個人的オススメ機能の「CloudInventory」についてご紹介します。

CloudInventoryとは

nOpsの機能の一つで、欲しい情報をダイレクトに手に入れることができてオススメの機能です。

nOpsではCost Controlダッシュボードからコストの可視化を行い、色々な方向からフィルターをかけてさらに細かくコストに関しての情報を絞り込むことができます。
例えば「東京リージョンにあるEC2インスタンスが前月と比べてどれだけコストの増加があるのか。」という場合は、リージョンと各サービスのフィルターをかけて、その情報だけにフォーカスしていくことができるという形です。

  • コストの変化を追いたい場合
  • コストの増加原因に心当たりがある(アカウント、サービスなど)
  • リソースをアカウントやタグで絞り込んで見つけたい場合

上記のようなケースではフィルター機能は便利ですが、もっとダイレクトに情報を得たい時がありますよね。

例えば「CPUの使用率が過去3か月間に30%以下だったインスタンスだけを見たい」といったような場合です。 こう言った場合に活用できるのがCloudInventoryです。

前置が長くなりましたが、CloudInventoryは条件文を書くことでクエリの形で情報をを抽出し確認することができる機能です。 細かい情報をダイレクトかつ迅速にゲットすることができるので非常に便利です。

使ってみた

実際にCloudInventoryでクエリを使ってリソースの検索を行ってみます。 CloudInventoryはReportの項目にあるので、まずはCloudInventoryのページに移動します。 実際の画面はこんな感じで、赤枠部分に条件文を書き込んでいく形式です。 どういったものが条件文として有効なのかはnOps ドキュメント:How to use nOps Search DSLに詳しく記載がありますのでこちらをご覧ください。

試しにCP使用率が過去3か月間の間で30%以下だったインスタンスのリストを表示してみます。
type=ec2 and utilization.months.months_3.cpu.cpu_usage<30.00
このような条件で検索してみると画像のように結果が表示されます。 赤枠の部分をクリックすることで、古いインスタンスから順にソートすることや、コストがよりかかっているインスタンスから順にソートすることも可能です。

すぐ使えそうな条件文

いくつかすぐに使えそうな条件文をご紹介します。

  • 2022年以降に立ち上げられたインスタンス
    type=ec2 and launch_time>2022-01-01

  • 暗号化されていないEBSボリューム
    type=ebs and encrypted=false

  • 指定したVPCに含まれるインスタンスのリスト
    vpc_id in ["vpcID"] and type=ec2

これらの条件文は、検索バー横のSave usから保存することができます。
Rule NameとRule Labelを設定して保存しましょう。 ダッシュボード横のフィルター機能の部分に先ほどの条件文がルールとして保存されます。
これで簡単に絞り込んだ結果のみを表示することができます。

よく使う条件文は保存をしておくのも良いかもしれません。

まとめ

インスタンスをクエリの形で簡単に検索することができる機能は非常に便利でした。
うまく使えば定期的に不要なリソースの洗い出しをすることができるかなり有効な機能です。
フィルター検索と併せてこちらの機能も使ってぜひコスト削減に役立ててみてください。