近年のビジネスを支えるソフトウェアスタックは、数え切れないほど多数のサービスを組み合わせて運用されています。すべてのサービスからデータを収集することは重要ですが、一方で「二兎を追うものは一兎をも得ず」ということわざがあるように、あまりにも多くのことを均等に処理しようとすると、結果的にすべてが不十分になってしまう可能性があります。これは従来、DevOpsチームとSREにとっての難しい課題でしたが、New Relicのサービスレベル管理(SLM)を使用すると、ビジネスに不可欠なサービスにより注力できるようになります。

サービスレベル管理は、サービスの境界を特定し、サービスレベル指標(SLI)とサービスレベル目標(SLO)で最も重大なシステムの健全性を監視できるようになります。

こうした取り組みをよりシンプルに実践できるよう、サービスレベル管理にエラーバジェットとバーンレートのアラートを追加しました。また、アラート閾値のデフォルト値として、過去のデータに基づいて推奨される値が自動設定されるため、導入も簡単です。

これにより、ビジネスクリティカルな問題発生を的確に検知し、顧客が問題に気づく前にすばやく対応できるようになります。また同様に、サービスレベルに関連した重要メトリクスに基づくアラート設定は、ダウンタイムの短縮とSLOの達成にも寄与します。

まずは、サービスレベル管理のベストプラクティスについて説明します。すでにサービスレベル管理を利用しており、その上でエラーバジェットとバーンレートのアラートを設定したい場合は、エラーバジェットとバーンレートへのアラート適用方法までスキップして頂いて大丈夫です。

SLIおよびSLOの高度なアラート戦略の確立

SLI、SLO、エラーバジェット、およびバーンレートの高度なアラート戦略を構築することで、問題をより迅速に検知、解決し、内部SLOや顧客のSLAの未達を防ぎやすくなります。New Relicでは、ビジネスクリティカルなアプリケーションとサービスを特定し、SLIやSLOへの組み込みをワンクリックで行うことができます。次に、エラーバジェットとバーンレートへのアラート適用方法のセクションで説明するベストプラクティスに基づいてアラートを最適化しましょう。アラートの最適化により、即座にパフォーマンスを分析し、ビジネス目標達成に向けてどこにリソースを投じるべきかについて、情報に基づいた決定をすばやく行えるようになります。

サービスレベル管理により、SRE や DevOps チームは、コードの作成、本番環境へのプッシュ、バグや障害の特定を迅速に行うプロセスを、顧客が問題を経験する前にプロアクティブに確立することができます。エラーバジェットやバーンレートのアラートの強化は、顧客に影響を与える問題をより早く通知し、組織がSLOやSLAを達成するための対策を講じることのできる、実用的な手段を提供します。

アラート疲れを防ぎましょう!

サービスレベルを適切に実装すると、チームにとって有意義なアラートポリシーを設計できるようになります。また副産物として、顧客に影響を与える問題に関連する通知を優先することができ、インシデント管理ライフサイクルの全体的なノイズを減らし、明確化と集中を促進します。New Relicのサービスレベル管理は、よりよい顧客体験とビジネス成果をもたらすだけでなく、優先項目への注力を高めてアラート疲れを軽減することで、SREとDevOpsチームのQoLの向上にもつながります。

それではさっそく、今回のエラーバジェットとバーンレートのアラートの最新リリースのアップデートを見ていきましょう。エラーバジェットは、あるSLO期間において予算内で対応できる負のイベント数を表します。これらの負のイベントは、特定のメトリクスが閾値を下回っている、重大なトランザクションの失敗やエラー、もしくは悪影響を与えると判断されるカスタムイベントとして定義できます。定義上、もしすべてのエラーバジェットを一定の割合で消費した場合、バーンレートは1に等しくなります。バーンレートが1を超えると、SLO期間が終了する前にエラーバジェットを使い果たしてしまうため、持続不可能となります。

アラート疲れの軽減には、重要ではないアラートのノイズを排除し、実用的なアラートの領域を特定し、それらのアラートのコンテキストをすばやく提供する必要があります。エラーバジェットは、より効率的なアラート方法を提供します。継続的にバーンレートが1を超えた場合にのみアラートを発するようSLOを構成することで、アラート疲れを軽減します。

New Relicでのエラーバジェットとバーンレートのアラート設定方法

SLIやSLOに関連するパフォーマンス低下に対する複数のアラートを設定することで、顧客に影響を与える前にすばやくインシデントを検知、解決することができるようになりました。New Relicでエラーバジェット、バーンレートの上昇、SLO達成状況のアラートを設定する方法について説明します。

アラートの設定

1. サービスレベルの詳細ページの右上にあるAlertを選択し、アラート設定メニューを開きます

2. アラート設定メニューから、Fast-burn rateError budget consumptionSLO complianceのいずれかを選択します

3. 設定ガイドに従って、エラーバジェット、バーンレートの上昇、SLOコンプライアンスに関するアラートルールを作成します

  • エラーバジェット:エラーバジェットアラートは、エラーバジェットが特定の閾値を下回った際に通知することができます。これらの通知により、エラーバジェットが低下し、チームが対策を講じる必要がある状況を的確に通知します。ビジネスインパクトの大きいインシデントが発生している際には、関連アラートが表示されます。これらのアラートがトリガーされた場合、優先順位をつけて適切チームをアサインし、問題の原因分析と対応を開始します。
  • バーンレートの上昇:バーンレート上昇のアラートは、エラーバジェットの消費量が大きく増加し、修正しなければエラーバジェットすぐに使い果たしてしまう状況を警告します。New Relicでは、Googleのベストプラクティスにならい、1時間以内に消費できるエラーバジェットは2%と定義しています。このトリガーは、放置された場合、サービスは50時間後にエラーバジェットを使い果たしてしまうことを意味します。必要に応じて任意で消費の割合と期間をカスタマイズすることもできます。
  • SLOコンプライアンス:このアラートタイプは、SLIがSLOを下回る状態が一定期間以上続いた場合にアラートを出したい場合に使用します。SLOに基づくアラート設定に関するヒントと注意事項については、ドキュメントをご覧ください。

4. アラート設定ページでは、そのサービスレベルに関するエンティティの過去のパフォーマンスに基づいて、推奨されるアラート閾値を確認できます。

サービスレベルを今すぐ設定する

1. New Relicにログインし、左側のナビゲーションメニュー上部にあるAll Capabilitiesを選択します

2. Service Levelsを選択します

  • すでにSLIとSLOを設定している場合、いずれかのサービスレベルを選択します
  • まだSLIとSLOを設定していない場合、Add a service levelを選択します。詳細は、SLIおよびSLOの作成と編集のドキュメントをご参照ください。

3. Alertをクリックして、製品内の設定ガイドにしたがって選択したサービスレベルにアラートを追加します。サービスレベルのアラートに関するドキュメントにはアラート設定のサンプルも含まれていますので、あわせてご参照ください。