コンテナモニタリングの重要性
2022年3月2日
0 分で読めますコンテナの普及に伴い、新たなコンテナセキュリティリスクが生まれ、企業は罰金や生産性の低下、売上の減少に直面する可能性があります。また、アプリケーションやインフラの問題によって、コンテナが円滑に稼働できなくなることもあります。こうした課題に対応するため、コンテナ環境を継続的に監視し、セキュリティ、パフォーマンス、可用性を確保するコンテナモニタリングツールが登場しました。
ここでは、コンテナモニタリングの概要や重要性、課題、オブザーバビリティとセキュリティの両面での役割について解説します。
コンテナモニタリングとは
コンテナモニタリングとは?
コンテナモニタリングとは、コンテナ化されたアプリケーションやマイクロサービスアーキテクチャのメトリクスを収集し、健全性を追跡することです。コンテナは一時的な性質を持ち、既存のアプリケーションパフォーマンス監視ツールには限界があるため、多くの組織にとってこのプロセスは困難な場合があります。コンテナモニタリングの目的は、コンテナワークロードが想定どおりにパフォーマンスを発揮し、円滑に稼働していることを確認することです。コンテナモニタリングはコンテナオブザーバビリティの一部であり、ログ分析、通知、トレーシングなども含まれます。
コンテナモニタリングが重要な理由
コンテナアーキテクチャでは、ログ、メトリクス、トレースが継続的に生成されます。膨大なデータを把握することで、ホストやクラスターのレベルだけでなく、コンテナのランタイム環境やアプリケーション自体で何が起きているかを理解できます。継続的なモニタリングにより、DevOpsチームはパフォーマンスの問題からの平均復旧時間(MTTR)を短縮し、その他の重要なKPIを達成できます。
たとえば、Dockerコンテナのモニタリングでは、Dockerコンテナのログ、メトリクス、トレースを調べ、固有の環境に関するインサイトを得られます。こうしたインサイトは、トラブルシューティング、根本原因分析、脅威ハンティングに役立つほか、コンテナアプリケーションやインフラのパフォーマンスを全般的に把握するのにも役立ちます。
コンテナモニタリングの課題
コンテナ化されたアプリケーションやマイクロサービスベースの環境は、規模が大きくなるほどモニタリングが難しくなります。コンテナは一時的な性質を持つため、短時間で起動されたり破棄されたりします。そのため、特にDevOpsチームが新しいアプリケーションを迅速に市場投入する状況では、変更を追跡するのが困難です。
さらに、コンテナはメモリやCPUなどのリソースを共有します。そのため、物理ホストのリソース消費量を監視したり、アプリケーションの健全性の傾向、潜在的なセキュリティ問題、コンテナのパフォーマンス低下を把握したりするのが難しくなります。つまり、従来のモニタリングやオブザーバビリティのソリューションの多くは、コンテナ化された環境の監視やトラブルシューティングを想定して設計されていません。
開発者ファーストのコンテナセキュリティ
Snykは、コンテナイメージとKubernetesワークロードの脆弱性を検出し、自動的に修正します。
従来のモニタリングでは不十分
従来型アプリケーションとコンテナ化されたアプリケーションでは、モニタリングやオブザーバビリティの考え方は理論上似ています。しかし、実際にはコンテナ環境のモニタリングははるかに複雑です。
従来のインフラやアプリケーションのモニタリングツールは、分散型マイクロサービス環境への対応に苦慮することがよくあります。こうしたツールは、個々のサーバーに対応付けられたモノリシックアプリケーションを監視するために作られました。一方、コンテナ環境では、マイクロサービスがサーバークラスター全体に分散し、ワークロードやデータベース管理システムなども一貫していません。
たとえば、1つのアプリケーションが異なるプログラミング言語やアプリケーション、インフラコンポーネントにまたがることがあります。これらのサービス間のリクエストによって生成されるデータ(ログ、メトリクス、トレース)は、コンテナモニタリングツールによって収集されます。従来のツールはより単純なクライアント・サーバーアーキテクチャを前提としているため、サービス間の呼び出しやコンテナ間通信の多くを見落とす可能性があります。こうした重要なギャップを埋めるには、クラウドネイティブのモニタリングツールが必要です。
コンテナモニタリングツールの選び方
適切なコンテナモニタリングツールを使えば、アプリケーションとそのインフラコンポーネントの全体像を把握できます。ビジネスと技術プラットフォームの両面から、アプリケーション全体のパフォーマンスを確認できる必要があります。また、ログとシステムイベントを関連付け、潜在的な問題を特定して対応できることも重要です。
基本機能に加え、各コンポーネントやレイヤーを掘り下げて、障害の潜在的な原因を特定できることも必要です。コンテナモニタリングツールには、コンテナエコシステム内のサービス、アプリケーション、インフラのトポロジーを可視化する機能や、問題の診断と対応に役立つリアルタイムアラートの設定機能が求められます。コンテナリソースの利用状況を自動で分析し、将来の問題を防ぐための推奨事項を提示するなど、高度な機能も確認しましょう。
代表的なオープンソースのオブザーバビリティツールには、トレース用のJaeger、メトリクス用のPrometheus、ログ用のLogstash、取り込んだデータの可視化と分析用のGrafanaがあります。オブザーバビリティ分野には多様なベンダーが存在するため、幅広いエコシステムのニーズに最適なソリューションを見極めるために、概念実証(POC)を実施しましょう。
継続的なモニタリングで新たな脆弱性を発見
システム全体のオブザーバビリティや脅威ハンティングに役立つコンテナモニタリングツールに加え、コンテナスキャンを活用することで、DevSecOpsチームは新たな脆弱性を先回りして発見できます。
コンテナの脆弱性は、コンテナ内のソフトウェア、ホストOSや隣接するコンテナとの連携、ネットワークやストレージの構成など、さまざまな原因で発生します。コンテナスキャナーは、コンテナのさまざまなコンポーネントを自動で分析し、セキュリティ脆弱性を検出します。
コンテナは複数のレイヤーで構成されているため、包括的なセキュリティを実現するには、独自コード、オープンソースの依存関係、コンテナ、Dockerfile自体(場合によってはInfrastructure as Code(IaC)ファイルも)の脆弱性をスキャンする必要があります。これらは、最新のクラウドネイティブアプリケーションセキュリティで監視すべき重要な要素です。また、デプロイ前のコンテナスキャンに加え、本番環境でのワークロードスキャンも欠かせません。
Snyk Containerのセキュリティがコンテナモニタリングを補完する方法
ツールの習得に時間がかかり、開発者やDevSecOpsチームが使いこなすのが難しいため、コンテナやKubernetesのセキュリティは多くのチームにとって課題です。コンテナモニタリングと開発者ファーストのコンテナセキュリティを組み合わせれば、チームの日々の業務やビルドプロセスにオブザーバビリティを取り入れられます。
Snyk Containerのような専用のコンテナセキュリティソリューションは、コンテナモニタリングを補完し、チームがコンテナセキュリティに先回りして取り組めるよう支援します。Snyk Containerはコンテナのデプロイ状況を監視し、ベースイメージの推奨から始まる具体的なガイダンスを通じて、開発者がセキュリティ問題を迅速に修正できるようにします。さらに、Dockerfileを検出し、Gitリポジトリから直接、修正用のプルリクエスト(PR)を自動作成できます。
開発者ファーストのコンテナセキュリティ
Snykは、コンテナイメージとKubernetesワークロードの脆弱性を検出し、自動的に修正します。
Security Resourcesページで、Snykが開発者による高品質で安全なコードの作成をどのように支援できるかをご覧ください。
