0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSで日次集計する、サービス稼働率の測定方法を整理してみた

0
Posted at

ChatGPT Image 2026年6月10日 17_38_01.png

Web アプリケーションの稼働率をどう測るのがよいのか、実際に考えて仕組み化してみました。

稼働率というと HTTP の成功率や ALB の 5xx だけを見ればよさそうに思えますが、それだけでは「サービスが本当に使えているか」は判断しきれないことがあります。
たとえば、画面は表示できても、定期実行ジョブが止まっていたり、非同期処理が失敗していたりすると、利用者にとっては正常稼働とは言いづらい状態です。

この記事では、Web アプリケーションの基本的な稼働率の測定方法を整理しつつ、AWS を使って日次で集計する仕組みを実践した内容を紹介します。

まず結論

今回は、稼働率を次の3つで見ることにしました。

  • ALB が正常に応答しているか
  • 定期実行ジョブ が定期実行されているか
  • 非同期処理 が成功しているか

理由はシンプルで、この3つを見れば「入口」「内部処理の起点」「実際の結果」をざっくり押さえられるからです。

なぜ ALB だけでは足りないのか

最初は「ALB の 5xx を見れば十分では?」とも思いました。
でも、バッチ処理を伴うサービスではそれだけだと足りませんでした。

たとえば、

  • 画面は開くけど定期実行ジョブが止まっている
  • API は生きているけど非同期処理が失敗している

ということが普通に起こりえます。

利用者から見ると、これは「使える」とは言いづらいです。
なので、外から見える入口だけでなく、内部の定期処理と実処理も見ることにしました。

3つの指標をどう見ているか

1. ALB

ここはシンプルです。
5xx をサーバー要因の失敗として扱い、全リクエストに対する正常応答の割合を見ます。

計算イメージはこんな感じです。

(全リクエスト数 - 5xx件数) / 全リクエスト数

2. 定期実行ジョブ

サービスによっては、定期実行されるジョブが内部処理の起点になることがあります。
なので、このジョブが期待どおり動いていたかを見ます。

たとえば5分おきに動くなら、1日の期待回数は 288回 です。
そのため、考え方としてはこうです。

実施回数 / 288

これで「内部処理の起点がちゃんと動いていたか」が分かります。

3. 非同期処理

最後に、実際の非同期処理が成功したかを見ます。
ここは成功件数と失敗件数を集計して、成功率を出します。

成功件数 / 総実行件数

ここを見ておくと、「システムは動いていたけど肝心の処理は失敗していた」を拾いやすくなります。

失敗を全部同じ扱いにしない

もう1つ大事だったのがここです。

処理失敗の中には、

  • システム側の問題
  • 外部サービスの制限
  • 利用者設定の問題

が混ざります。

これを全部まとめて稼働率低下に入れると、数字は作れても改善しにくくなります。
なので、「障害として数える失敗」と「運用上ありえるので除外する失敗」を分けて扱うようにしました。

この整理をしておくと、稼働率がただの報告用の数字ではなく、改善に使える数字になります。

日次集計の仕組み

ChatGPT Image 2026年6月10日 17_38_08.png

集計は AWS 上で日次実行しています。
構成はかなりシンプルで、

EventBridge -> Lambda -> Athena -> DynamoDB

という流れです。

  • EventBridge で毎朝起動
  • Lambda で前日分を集計
  • Athena でログや実績データを SQL 集計
  • 結果を DynamoDB に保存
  • 保存した値をもとに通知

という形にしました。

ログ集計を SQL で書けるので、あとから見返しやすいのもよかったです。

これで何がよくなったか

この形にしてから、稼働率が下がったときに

  • 入口の問題なのか
  • 定期実行ジョブの問題なのか
  • 実際の非同期処理の問題なのか

を切り分けやすくなりました。

稼働率は「高いか低いか」だけ見てもあまり役に立ちません。
どこが落ちているのか分かる形にしておくと、改善につながりやすいです。

まとめ

今回やってみて、稼働率は「サーバーが落ちていないこと」だけでは測りきれないとあらためて感じました。

特に、バッチ処理を伴うサービスでは、

  • ALB
  • 定期実行ジョブ
  • 非同期処理

の3つを見るだけでも、かなり実態に近い数字になります。

もしこれから稼働率を整備するなら、まずは

「このサービスが使えている状態って何だろう?」

を決めるところから始めるのがよさそうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?