DevOps監視とは?
ソフトウェア開発におけるDevOps監視とは、問題を早期に発見し修正するために、システムとアプリケーションのパフォーマンスと正常性を追跡および測定するプラクティスです。これには、CPU使用率からディスク容量、アプリケーションの応答時間まで、あらゆるものに関するデータの収集が含まれます。DevOps監視を使用すると、問題を早期に特定することで、チームはサービスの停止や低下を回避することができます。
多くの点で、これは適切に設計されたIT運用で使用される監視の種類に似ているように聞こえるかもしれません。しかし、DevOps監視はさらに詳細な部分まで実施されます。DevOps方式は、計画、開発、展開、レビュー/評価の短いサイクルを通じてチームを導きます。したがって、DevOps監視を完全に統合するのであれば、継続的な監視が必要です。
それでは、継続的な監視とは何でしょうか。継続的な監視とは、システム、ネットワーク、データを定期的かつ注意深くチェックして、パフォーマンス低下の兆候がないかを確認するプロセスです。手動または自動で実行される継続的な監視では、通常、ソフトウェアで脆弱性をスキャンし、セキュリティ設定の変更を追跡します。継続的な監視は、潜在的な脅威を早期に特定し、それらが現実の問題となる前に対処することを目的としています。
この記事では、DevOps監視を使用する理由とユースケースを見てみましょう。その後、強力なDevOps監視プラットフォームとは何かを考えていきます。
まず、使用する理由から始めましょう。なぜシステムにDevOps監視が必要なのでしょうか?
DevOps監視が必要な理由
企業がDevOpsの文化とアプローチを採用する場合、つまり開発と運用の間の壁を取り払うことでコミュニケーションとコラボレーションを強化する場合、監視はシステムの課題が現実の問題となる前に検知するための重要なプラクティスです。監視が効果的だと、開発効率とシステムの複雑さに関する懸念に対処することができます。
- コードをより迅速に提供する必要がありますが、コードに隠された脆弱性を持ち込まないようにするにはどうすればよいでしょうか。
- システムは、非常に多くの動作部品で構築されています。そのすべてに目を配るにはどうすればよいのでしょうか。
- プロジェクト全体が、不可解なブラックボックスのように感じられることがあります。必要とされる可視化を得るにはどうすればよいのでしょうか。
ロードバランシングやセキュリティなどの分野を改善する場合や、ロールバックプロトコルや自己修復インフラストラクチャなどのプロセスツールをビルドする場合は、アプリケーションとインフラストラクチャの内部の確認に役立つ監視が必要になります。DevOps監視は、明確で使いやすい単一画面で操作できるソリューションを提供し、ソフトウェア提供プロセスと最終的なソフトウェア成果物の両方を改善します。
ソフトウェア提供プロセスの観点から、監視によって次のような主なパフォーマンス指標 (KPI) のベースライン(およびその後の改善)を決定することができます。
- 展開頻度
- 展開の失敗
- コードエラーの数
- プルリクエストサイクル時間
- 変更失敗率
- 平均故障間隔 (MTBF)
- 平均検知時間 (MTTD)
監視によって可視化されたことで、運用に関するインサイトと制御が向上し、機能的で信頼性の高いアプリケーションを予定どおりに提供できるようになります。
DevOps監視のユースケース
DevOps運用のすべての段階を可視化する必要があります。これには、インフラストラクチャプラットフォーム上の正常性とアクティビティの全体像が含まれます。ただし、最小の価値単位である1行のコードに至るまで注意を払う必要があります。関連する主な機能について説明します。
コードリンティング
コードリンティングツールは、コードのスタイル、構文、潜在的なエラーを分析します。多くの場合、ベストプラクティスとコーディング標準への準拠もチェックします。ランタイムエラーやその他の問題が発生する前に、リンティングによって、コード内の問題を見つけて修正することができます。また、リンティングによって、コードがクリーンで一貫性があることを確認することができます。
Gitワークフローの操作
コードベースの競合は、2人以上の開発者がプロジェクトの同じ部分で同時に作業しようとしたときに発生する可能性があります。Gitには、コミットやロールバックなど、競合の管理と解決に役立つ複数の機能があります。Gitワークフロー操作の競合を監視することで、プロジェクトが統一性と一貫性を維持しているかどうかを確認できます。
継続的インテグレーション (CI) ログ
CIログによって、コードビルドが正常に実行されているかどうか、またはエラーや警告が発生したかどうかを判断することができます。エラーがある場合は、調査、トラブルシューティング、修正のためのリソースが必要になります。さらに、ログを監視することで、対処する必要があるビルドパイプラインやコードベースの潜在的な問題を特定することができます。
継続的デプロイ (CD) パイプラインログ
CDログを監視することで、パイプラインの正常性と状態に関する貴重なインサイトを得ることができます。ログを監視することで、失敗した展開のトラブルシューティングを行い、潜在的な問題を特定できます。
設定管理の変更ログ
設定管理の変更ログは、システムの状態と重大な変更に関する貴重なインサイトを提供します。これらのログを監視することで、システムに加えられた手動および自動の変更を追跡し、不正な変更を特定し、問題のトラブルシューティングを行うことができます。
インフラストラクチャ展開のログ
展開ログは、新しいスタックがいつ展開されたか、それが失敗したかどうかを追跡します。これらのログによって、スタック展開に関する問題のトラブルシューティングや、障害の原因となった可能性のあるインフラストラクチャの不正な変更を特定することもできます。
コードインストルメンテーション
コードインストルメンテーションとは、アプリケーションのパフォーマンスと操作経路に関するデータを収集するために、アプリケーションにコードを追加するプロセスです。インストルメンテーションを行うことで、スタックコールをトレースして、コンテキスト値を確認できます。コードインストルメンテーションの出力を監視することで、DevOpsプラクティスの有効性を測定し、改善が必要な領域を特定できます。また、バグを特定し、テストを支援することもできます。
分散トレーシング
分散トレーシングは、マイクロサービスアプリケーションの監視とデバッグにとって重要です。アプリケーションが(多くの場合、APIを通じて)どのように相互作用するかを理解することで、問題の特定と修正が容易になります。分散トレーシングでボトルネックを特定することで、アプリケーションのパフォーマンスを最適化できます。
アプリケーションパフォーマンス監視 (APM)
APMは、アプリケーションのパフォーマンスと可用性を追跡します。これには、応答時間の追跡、エラーの監視、エンドユーザーエクスペリエンス追跡のためのリアルユーザー監視 (RUM) などが含まれます。APMプラットフォームを使用することで、システムの残りの部分で問題が発生する前に、問題を特定して修正できます。
APIアクセス監視
APIアクセスとトラフィックを追跡して記録することで、不正アクセスやDDoS攻撃の可能性を特定して防止することができます。
インフラストラクチャ監視
インフラストラクチャ監視は、コンピューターシステムとネットワークのパフォーマンスと可用性を追跡します。インフラストラクチャ監視ツールは、CPU使用率、ディスク容量、メモリ、ネットワークトラフィックなどのメトリックに関するリアルタイムの情報を提供できます。これらのツールで、停止やその他の問題が発生する前に、リソースの問題を特定することができます。
ネットワーク監視
ネットワーク監視は、コンピューターネットワークとその個々のコンポーネントのパフォーマンスと可用性を追跡します。ネットワーク管理者は、ネットワーク監視ツールを使用して、ネットワークの問題を特定し、是正措置を講じます。また、ネットワーク監視では、ネットワークフローログを使用して、疑わしいアクティビティを特定します。
合成監視
合成監視は、ソフトウェアテストの一種で、実世界のシステムやコンポーネントを仮想的に表現(合成)したものを使用します。合成監視によって、個々のシステムコンポーネントやシステム全体のパフォーマンス、機能、信頼性をテストできます。
DevOps監視プラットフォームに求められるもの
DevOps監視のソリューションを検討する場合、ワークフローに簡単に統合できるシステムが理想的です。つまり、選択したプラットフォームは、チームが開発ワークフローで使用する次のようなツールと統合できる必要があります。
- アプリケーション開発ツール
- バージョン管理
- CI/CDパイプライン
- クラウドサービスとインフラストラクチャ
- コードとしてのインフラストラクチャのシステム
- チケット管理および課題追跡システム
- 適切な規制の枠組みへの適合と遵守
- チームのコラボレーションとコミュニケーションのツール
理想的なDevOps監視プラットフォームがツールとのネイティブ統合を提供しているか、信頼できるサードパーティソリューションが存在している必要があります。
チームのすべてのメンバーが、このような監視プラットフォームからリアルタイムデータにアクセスし、ボトルネックをプロアクティブに特定して取り除くことができるようにする必要があります。監視システムは、既存の自動化を妨げることなく強化する一方で、コミュニケーションを改善して、セキュリティと安全制御を提供する必要があります。
また、レポートやダッシュボードは、見やすい形式で、かつあらゆるレベルの人員が理解しやすいものである必要があります。この視覚化においては、より広範なシステムコンテキスト内でデータが提示され、依存関係マップも含まれている必要があります。ログストリーム(クラウドとローカルの両方)は、スタックのすべてのレイヤーと統合され、ナビゲートしやすいものである必要があります。また、プラットフォームは、過去の傾向と異常を提示し、イベント間の相関を特定できる能力が備わっている必要があります。
すべてをログに記録、すべてに対する回答 - 無料
Falcon LogScale Community Edition(旧称Humio)は、クラウド向けの最新のログ管理プラットフォームを無料で提供します。ストリーミングデータ取り込みを活用して、分散システム全体を即座に可視化し、インシデントを防止および解決します。
無料ですぐにご使用可能なFalcon LogScale Community Editionには、次のものが含まれています。
- 1日あたり最大16GBの取り込み
- 7日間の保持期間
- クレジットカードは不要です
- トライアル期間なしの継続的なアクセス
- インデックスフリーのログ記録、リアルタイムのアラート、ライブダッシュボード
- 新しいパッケージをビルドするためのガイドを含む、マーケットプレイスとパッケージへのアクセス
- アクティブコミュニティの情報とコラボレーション