サービスレベル目標(SLO)を監視していると、高レベルのコンプライアンススコアが、特定のリージョン、データセンター、または顧客セグメントで発生している特定の問題を隠してしまうことに気づくかもしれません。セグメントごとに個別のサービスレベルを手動で作成することは時間がかかり、インフラストラクチャが拡大するにつれて維持が困難になります。
ファセット化されたサービスレベルは、この問題を解決します。特定の属性(ファセット化とも呼ばれます)でSLI結果をグループ化することで、コンプライアンスとエラーバジェットの内訳の分析、根本原因の特定、パフォーマンスのボトルネックや停止が発生している場所の正確な特定を、すべて単一のサービスレベル定義内で行うことができます。
行えること
ファセット化されたサービスレベルを使用すると、次のことができます:
- 詳細なインサイトを取得: 個別のサービスレベルを作成することなく、特定のセル、リージョン、または環境における特定のパフォーマンスの問題を特定します。
- ターゲットリソースの割り当て: エンジニアリングの労力を集中させるために、パフォーマンスの低い領域を特定します。
- トラブルシューティングの改善: コンプライアンスの低下が全体的なものか、障害のあるデータセンターなどの特定の属性に限定されているかを確認します。
- セグメントの比較: さまざまな属性の組み合わせのコンプライアンスとエラーバジェットを並べて表示します。
使用事例
次のシナリオでは、ファセット化されたサービスレベルがどのように役立つかを説明します:
- リージョンのパフォーマンス: eコマースプラットフォームは、グローバルSLOに準拠しているにもかかわらず、どのリージョンのパフォーマンスが低下しているかを特定するために、レイテンシを
awsRegionでグループ化します。 - セルレベルのトラブルシューティング: cloudプロバイダーは、断続的な停止がサービス全体ではなく1つのクラスタに限定されていることを特定するために、可用性を
cell_idごとにグループ化します。 - 環境の比較: 開発チームは、同じSLI定義内で本番デプロイメントとステージングデプロイメントの安定性を比較するために、メトリクスを
environmentでグループ化します。
ファセットの仕組み
サービスレベルを作成する際、2つのクエリを定義します:有効なイベント(すべての意味のあるrequests)と良い/悪いイベント(成功または失敗したレスポンス)です。両方のクエリがFROM句で同じイベントタイプを使用する場合(たとえば、両方ともFROM Transactionを使用する場合)、データはawsRegion、environment、またはhostなどの共通の属性を共有します。次に、ファセットを有効にして、これらの属性値ごとにコンプライアンスとエラーバジェットをグループ化および分割することができます。