DevOps 監視ツール: DevOps 監視プロセスを自動化する
2022年5月23日 // 1 min read
基本的に DevOps とはデータドリブンの手法です。製品を駆動するコードを継続的に改善する能力は、パフォーマンスやもたらされるリスク、機会を見いだす場所を把握することから生まれます。監視ツールは製品のテクノロジー スタックの各レイヤーを活用し、コード エラーを早期に把握したり、運用効率を改善したり、利用状況の変化にすばやく対応したりするためのデータを提供します。
DevOps の監視はデプロイされたコードにとって重要である一方、監視のベスト プラクティスでは「シフトレフト」のセキュリティ コンセプトに基づいて開発することを目指します。つまり、DevOps での監視はソフトウェア開発ライフ サイクル (SDLC) のかなり早い段階から始まるということです。これにより、非効率性、リスク、顧客が体験する潜在的な問題を、本番環境で発生する前に発見できます。
このガイドでは、DevOps プラクティスでの監視の役割と、次のような DevOps 監視ツールに関する主な質問とその回答をご紹介します。
*DevOps 監視ツールとは何ですか。 *DevOps における継続的監視とはどのようなものですか。 *DevOps プラクティスのどの段階で監視ツールを導入すればよいですか。 *DevOps 監視ツールにはどのような機能を求めるべきですか。
DevOps 監視ツールとは?
監視は効果的な DevOps プラクティスの核となる要素であり、潜在的な問題が本番環境に持ち込まれる前に検出して把握し、本番環境で発生する可能性のある問題を明らかにするために重要な手段です。
これを実現するため、組織は多くの場合、クラッシュレポート ツール、アプリケーション パフォーマンス監視 (APM) プラットフォーム、サーバー監視ツールなどの多数の DevOps 監視ツールを活用してソフトウェア開発ライフ サイクル (SDLC) の全ステージでデータを収集し、実用的なインサイトを取得して、運用パフォーマンスを改善しています。
DevOps 監視ツールを利用すると、組織は SDLC 内の主要なポイントに自動化された監視ステージを組み込んで、コード ベースやアプリケーション、その基になるインフラストラクチャのパフォーマンスを改善できます。組織の SDLC 内には移動できる要素が何千と存在する可能性があるため、自動化は一貫した監視プラクティスの実現において非常に重要です。
適切に実装すれば、DevOps 監視ツールはデータを集計して実用的なインサイトを返し、それをより広範な DevOps パイプラインに取り込んで、SDLC における潜在的な問題を検出するのに役立ちます。多くの場合、このプラクティスは_継続的監視_と呼ばれ、継続的な改善という DevOps のアイディアに基づいています。
DevOps における継続的監視とは?
少し前まで、監視はコストがかさむものでした。ツールは貴重なシステム リソースを消費し、人間の介入も必要でした。さらに、多くの場合、これらのツールが提供するデータを解析してアクションにつなげるには時間がかかっていました。結果的に、組織は通常コーディングの問題や本番環境レベルのパフォーマンスといったミッション クリティカルなプロセスのみを監視していました。
現在では、より高度なツールの導入に伴いデータの収集ははるかに簡単になりましたが、データの量も大幅に増加しています。つまり、現在の組織ははるかに膨大なデータを適切に管理して解釈し、それをアクションにつなげる最適な方法を見極める必要があるということです。
継続的監視は、SDLC の各所に監視を取り入れてこの問題を解決しようとするプラクティスです。主な目標は、潜在的な問題を迅速に検出してリアルタイムのフィードバックを提供できるようにすることです。
継続的監視のプラクティスでは、一連のツールや自動テストを活用して、アプリケーションとその基になるインフラストラクチャの新しいコードと本番運用のパフォーマンスを評価します。主な目標は、全てのシステムの自動化された包括的なビューを提供し、適切な人がいつどこに介入すべきかを把握できるようにすることです。
多くの場合、継続的監視のベスト プラクティスではできるだけ多くのデータを収集し、システム全体を監査して、潜在的な運用上の問題やコンプライアンスおよびセキュリティのリスクを分析することを優先します。
DevOps プラクティスのどの段階で監視ツールを導入すればよいですか。
DevOps そのものへの移行と同様に、効果的な DevOps 監視戦略を策定するには文化やプロセス、ツールを融合させる必要があります。他の組織が監視を管理する事例からヒントを得ることはできるものの、組織が採用する詳細なモデルは、組織とその SDLC 独自のニーズによって決まります。
_どのような_データを収集すべきかについては、ガイダンスとなるフレームワークが多数存在します。一方、_どこに_監視を導入すべきかというのは、最適化の問題です。どのような質問に答えを出す必要があるでしょうか。その答えを得るにはどのようなデータが必要でしょうか。そのデータに基づいてどのようなアクションを実行するでしょうか。そこに誰が関与すべきでしょうか。
監視には大きく分けて 7 つのタイプがあり、DevOps プラクティスのどこに当てはまるかはそれぞれ異なります。これには以下が含まれます。
インフラストラクチャの監視: 製品のテクノロジー スタックの最下層では、インフラストラクチャの監視によって、メモリや CPU などの制約がアプリケーションのパフォーマンスに与えている影響を把握します。
アプリケーション パフォーマンス監視 (APM): より上のレベルでは、APM によってアプリケーションのパフォーマンスに関するシグナルが表示され、アプリケーションをより効果的に最適化して稼働時間と応答性を改善する方法についてのインサイトが提示されます。
開発速度の監視: この監視プラクティスでは、組織の速度、つまり、どのくらい迅速に新しいコードをユーザーにリリースしているか、どのくらい迅速に DevOps パイプラインを通じて価値を提供しているかを明らかにします。
ネットワークの監視: これは、組織がネットワークのパフォーマンスを把握したり、非効率性を特定したりするのに役立つほか、異常なトラフック パターンが検出された場合にはセキュリティ侵害を特定するのに役立ちます。
ユーザー動作の監視: 個々の利用状況に通常と異なるパターンがある場合、何らかの情報がわかることがよくあります。たとえば、パスワードの試行に失敗した回数が多ければ、ブルート フォース攻撃が行われていることを示している可能性があります。新規ユーザーが管理者ページにアクセスしているなら、多くの場合これは権限昇格の証左となります。
セキュリティの監視: DevSecOps のアプローチと共に、セキュリティの監視によってコードや依存関係の脆弱性を自動で発見します。
構成の監視: DevOps プラクティスでは、インフラストラクチャへの変更は新しいコードや更新したコードを提供する際に一般的な要素です。構成変更の監視によって、このような変更の概要を提示し、予期せぬ影響を早期に警告できます。
DevOps 監視ツールに求める機能
DevOps プラクティスに監視を組み込むのに役立つツールには豊富な選択肢があります。採用する詳細な製品は、組織の SDLC の状態やアプリケーションのインフラストラクチャによって決まります。ただし、監視ツールを評価する際に確認すべき核となる初期段階の質問が 2 つあります。
そのツールは実用的でしょうか。 そのツールを DevOps パイプラインやお使いのその他のツールに統合し、そのデータに基づいてアクションやアラートを自動化できるでしょうか。
そのツールから新しい情報を得られるでしょうか。 生成するデータを増やすのは簡単ですが、データが増えればストレージがいっぱいになり、注意を払って管理することが求められます。差益が得られるツールではなく、監視の新たな手段を得られるツールを選びましょう。
これらの質問からさらに範囲を広げ、次の領域でのパフォーマンスを考慮してツールを評価しましょう。
そのツールには統一のダッシュボードがあるでしょうか。 製品は多数のサービス、ライブラリ、サードパーティ製品が連携した結果です。優れた監視ダッシュボードでは、それぞれの要素がどのように連携しているかを包括的に把握し、アラートや懸念事項をより簡単に確認できます。
そのツールは、より幅広いテクノロジー スタックと簡単に統合できるでしょうか。 そのツールには、既に使用しているツールに特化したインテグレーションがあるでしょうか。応答時間が長くなった場合に、より多くのコンテナを自動でデプロイできるでしょうか。一元化されたログ管理ツールにログのエントリがストリーミングされるでしょうか。REST API があるか、SNMP のような、独自のインテグレーションを展開できるオープン標準に対応しているでしょうか。
そのツールのアラートや通知は既存のツールと統合されているでしょうか。 監視ツールは、人間の介入が必要な場合にタイムリーなアクションを実行できるものでなければなりません。直接アラートをサポートしているか、既存の通知ツールと統合できるでしょうか。
そのツールのレポート機能は分析ツールと統合されているでしょうか。 監視ダッシュボードは専用スペースとして優れていますが、多くの組織には確立されたレポート ツールや分析ツールがあります。評価対象のツールは、組織が選択している分析プラットフォームと統合されているでしょうか。
ソリューションが提供するのはどのような種類の監査ログでしょうか。 システムが現在の状態になった経緯を理解することは、問題が発生した場合に特に重要です。監査ログには、どのような問題が発生したか、どのプロセスまたは人が関与したかについて、アクションごとのレコードが表示されます。これは根本原因の分析に役立つと共に、システムのどこを改善すべきかを分析する際の根拠にもなります。選択したソリューションではどのような種類の監査ログが提供され、重要な情報はどのように表示されるでしょうか。
データ保持のためにどのくらいのストレージが必要でしょうか。 監視ツールでは大量のデータが生成されます。そのため、有用期間を超えてデータを保存することなく、十分な履歴を有効に保つために必要なストレージに関する継続的なニーズ、またはクラウドのコストを把握することが重要になります。
ソリューションではどのような種類の診断を提供しているでしょうか。 そのツールは症状について警告するものでしょうか、それとも根本的な問題の診断に役立つものでしょうか。アプリケーション パフォーマンス管理プラットフォームなどのより包括的なツールなら、複数の非同期マイクロサービスが連動しているような複雑な状況の中で何が起きているかを把握できます。
GitHub で DevOps プラクティスを構築する
GitHub は統合型のプラットフォームで、アイディアから計画、運用まで、焦点を絞ったデベロッパー エクスペリエンスと、強力なフルマネージド型の開発、自動化、テスト インフラストラクチャを組み合わせて企業を支援します。
「GitHub はコミュニケーションの障壁を取り除き、フィードバック ループを短縮して、可能な限りタスクを自動化することで、開発を加速させるという会社の長年にわたる取り組みを支援してくれています」
ViacomCBS、システム エンジニアリング担当ディレクター、Mike Artis 氏
計画から構築へ | 開発の速度を上げる |
---|---|
プロジェクトと完全に統合した優れたプロジェクト ボードとテーブルを使用して、コード ベースのすぐ隣でロードマップ計画を作成し、チームメンバーにタスクをすばやく割り当てましょう。 GitHub Issues について知る > |
コミットまでの時間を短縮しましょう。開発者の環境管理やコンテキストスイッチングをなくし、クラウドの安全なマネージド スペースにより、IT 調達とメンテナンスを簡素化しましょう。 Codespaces について知る > |
すべてを自動化 | コード作成時のセキュリティを確保 |
---------- | ---------- |
GitHub Actions で全てのソフトウェア開発ワークフローを自動化しましょう。GitHub のフルマネージド型の強力な開発、テスト、自動化インフラストラクチャにより、信頼性と安全性を高めることができます。 GitHub Actions について詳しく知る > |
ソフトウェア開発ライフサイクル全体を通じて、コード、依存関係、トークン、極秘データのセキュリティを確保し、脆弱性を自動で解決します。 GitHub でどのようにセキュリティを確保できるかを知る > |
Tags