【ITニュース解説】I built Goliat: an open-source, self-hosted Azure inventory and FinOps dashboard
2026年10月30日に「Dev.to」が公開したITニュース「I built Goliat: an open-source, self-hosted Azure inventory and FinOps dashboard」について初心者にもわかりやすく解説しています。
ITニュース概要
「Goliat」は、Azureの複数サブスクリプションを横断し、リソースの在庫管理とコスト分析(FinOps)を一元的に行うオープンソースのセルフホスト型ダッシュボードだ。セキュリティを重視し、Azure Functionなどでデータを収集、PostgreSQLで管理しダッシュボードに表示する。
ITニュース解説
システムエンジニアを目指す初心者にとって、クラウドサービスの活用は避けて通れないテーマだ。特にマイクロソフトが提供するクラウドサービス「Azure」は多くの企業で利用されており、その管理能力は非常に重要になる。しかし、Azureで管理するシステムやデータが増え、複数の契約(サブスクリプション)を扱うようになると、「今、どのサーバーが動いているか?」「特定のサービスにどれくらいの費用がかかっているか?」といった基本的な問いに答えるだけでも、複雑な操作や多くの手間がかかる課題に直面することが少なくない。Azureの管理画面(ポータル)は個々のリソース管理には便利だが、全体像を把握したり、横断的に情報を集めたりするのには限界があるのが実情だ。
こうしたクラウド管理の悩みを解決するために開発されたのが「Goliat」というツールだ。Goliatは、Azure上に散らばる膨大なリソース情報やコスト情報を一元的に集約し、見やすいダッシュボードで提供することで、Azure管理の効率を大幅に向上させることを目指している。このツールの大きな特徴は、オープンソースである点だ。これは、誰でも自由にGoliatのプログラムコードを見て、学び、自分のニーズに合わせて改良できることを意味する。さらに「セルフホスト型」であるため、自分のAzure環境の中にGoliatを構築して運用でき、重要なデータが外部に流出する心配がなく、セキュリティ面を自分でコントロールできる安心感も大きい。
Goliatが提供する主要な機能は、大きく分けて二つの柱から成り立っている。一つは「インベントリ」機能だ。インベントリとは、持っているものの一覧という意味で、GoliatはAzure上にある仮想マシン、データベース、ストレージ、ネットワーク機器、セキュリティ設定など、実に73種類もの多様なリソースを詳細に一覧表示する。これらのリソースは、計算、コンテナ、Web、ネットワーキング、ストレージ、データベース、セキュリティなど12のサービスグループに体系的に分類され、それぞれのカテゴリの状況を重要な指標(KPI)やグラフで視覚的にわかりやすく示してくれる。特定のサブスクリプションでフィルターをかけたり、リソース名やタグで検索したり、条件に基づいてリソースをグループ化したりする機能も備わっており、「所有者タグが設定されていない仮想マシンはどれか?」「特定の地域で動いているWebサービスは?」といった複雑な問いにも素早く答えることが可能だ。
もう一つの柱は「FinOps」(フィノップス)機能だ。FinOpsとは「Financial Operations」の略で、クラウドサービスの利用にかかる費用を管理し、最適化するための考え方や実践手法を指す。GoliatのFinOps機能は、Azure Cost ManagementというAzureのコスト管理サービスから、実際の費用や、複数月にわたって分割される「償却費用」のデータを取り込み、日ごとの費用のトレンドや、サービス、サブスクリプション、リソースグループ、個々のリソースごとの詳細な内訳を表示する。これにより、「先月、このシステムにいくらかかったか?」「どのサービスが最も費用を消費しているか?」といったコストに関する疑問が一目でクリアになる。コストの内訳を詳細に把握できるため、無駄な出費を見つけ出し、効率的な予算計画やコスト削減の戦略を立てる上で非常に強力な味方となるだろう。
Goliatがどのようにこれらの情報を提供しているのか、その裏側の仕組みも見てみよう。Goliatは「データの収集」と「データの表示」のプロセスが完全に分離されている点が特徴だ。データ収集の部分では、「Azure Function」という、必要な時にだけ自動で実行されるプログラムが中心的な役割を果たす。このFunctionは、設定されたスケジュールやユーザーからの要求に応じて起動し、「Azure Resource Graph」というAzure全体のリソース情報を高速にクエリできるサービスや、個別のリソース情報を提供する「ARM(Azure Resource Manager)」と連携して、Azure環境から最新の情報を集める。集められたデータは、「Blob Storage」というAzureのオブジェクトストレージサービスに、JSON形式のファイルとして一時的に保存される。これは、もしデータ収集の途中でエラーが発生した場合でも、不完全なデータが利用されることを防ぎ、常に安定した情報を提供するための工夫だ。
データの表示を担当するのは、Webアプリケーションの部分だ。これは「Next.js」という現代的なWebフレームワークで構築されており、Blob Storageに保存された最新のJSONファイルをダウンロードして検証する。その後、ダウンロードしたすべての情報を「PostgreSQL」というリレーショナルデータベースに、単一のトランザクションとして安全にインポートする。この「単一トランザクション」とは、すべてのデータが正しくインポートされるか、あるいは全くインポートされないかのどちらかであることを保証する仕組みで、データベースの整合性を保つ上で非常に重要だ。ユーザーがダッシュボードの「更新」ボタンを押すと、Azure Functionが再びデータを収集し、新しい情報がPostgreSQLにインポートされ、ダッシュボード画面が最新の状態に更新される。このように、データ収集と表示が分離されていることで、システム全体の安定性と効率性が高められている。
GoliatのようなツールはAzure上の機密性の高い情報にアクセスするため、セキュリティ設計は開発において最優先事項とされている。まず、「マネージドID」というAzureが提供する安全な認証機能が徹底的に利用されている点が挙げられる。これにより、プログラムコードの中にパスワードやAPIキーといった秘密の資格情報を直接書き込む必要がなくなり、情報漏洩のリスクを大幅に低減している。また、「最小特権の原則」が厳格に適用されている。これは、ツールが必要とする最小限の権限、例えば情報を「閲覧する」だけの権限しか与えないという考え方だ。万が一、Goliatのシステムに脆弱性が見つかったとしても、その影響範囲を限定し、重要なデータへの不正な書き込みや削除を防ぐことができる。データコレクタは設定情報のみを読み込み、データベースの中身やBlob Storageのコンテンツのような機密性の高い情報には直接アクセスしないように設計されている点も重要だ。認証設定に問題がある場合、Goliatはアクセスを一切許可せず、決して「公開モード」のような安全ではない状態に陥ることがない「フェイルクローズ」という考え方も採用されている。さらに、ユーザーの要求内容や機密性の高いデータがログに記録されないように細心の注意が払われており、プライバシー保護にも配慮している。
Goliatは、Azure環境へのデプロイも考慮して設計されている。必要なAzureリソースをコードで定義する「Bicep」という言語と、「PowerShell」というスクリプトを組み合わせることで、仮想マシン、データベース、ストレージなどの複数のサービスを一つのリソースグループにまとめて、迅速かつ一貫性のある形でAzure上に構築できる。デフォルトでは、いくつかの有料サービスが含まれるため、完全に無料で利用できるわけではないが、コストを管理するための停止、開始、破棄などのコマンドも用意されている。もし、Azure環境にデプロイせずに試したい場合は、ウェブサイトで提供されている「インタラクティブデモ」を利用すればよい。Azureアカウントがなくても、架空のデータを使ってGoliatのすべての機能(インベントリ、FinOps、ユーザー管理、管理画面など)をブラウザ上で体験できるため、実際に導入を検討する前にどのようなことができるのかを詳しく確認できる。
Goliatは、Next.js、React、PostgreSQL、Azure Functions、Bicepなど、最新かつ堅牢な技術スタックで構築されている。単体テスト、PostgreSQL統合テスト、Playwrightによるブラウザテストなど、多岐にわたるテストが実施されており、その品質と信頼性も高く保たれている。
まとめると、Goliatは、Azureの複雑な環境をシンプルに管理し、クラウドのコストを効率的に最適化したいと考えるシステムエンジニアにとって、非常に価値のあるツールだ。オープンソースであるため、その仕組みを深く学び、自社のニーズに合わせて柔軟にカスタマイズする可能性も秘めている。強固なセキュリティ設計と使いやすさを両立しており、初心者にとってもクラウド管理のスキルを向上させるための実践的な学習ツールとして、あるいは日々の業務を効率化するツールとして、大いに役立つだろう。クラウドサービスの適切な管理とコスト最適化は、これからのシステムエンジニアにとって避けては通れない重要な課題であり、Goliatのようなツールを活用することは、その課題に取り組む強力な第一歩となるはずだ。