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?

Webサービス運用で重要なObservability入門:ログ・メトリクス・トレースをどう設計するか

0
Posted at

はじめに

Webサービスを開発して公開した後、本当に難しいのは「安定して運用し続けること」です。

ユーザー数が増えると、API、データベース、外部サービス、フロントエンドなど、さまざまな場所で問題が発生する可能性があります。

例えば、

  • APIのレスポンスが突然遅くなる
  • 一部のユーザーだけエラーが発生する
  • データベース負荷が急上昇する
  • 外部APIとの通信が不安定になる

といった問題です。

こうした障害を素早く発見し、原因を特定するために重要になるのが Observability(オブザーバビリティ) です。

本記事では、Webサービス運用におけるObservabilityの基本と、ログ・メトリクス・トレースをどのように活用するかを紹介します。

KRCLUBでも、安定したデジタルサービスを運営するため、システム監視と継続的な改善を重要な技術テーマとして考えています。


1. Observabilityとは

Observabilityとは、システム内部で何が起きているのかを、外部から取得できる情報を使って理解できる状態を指します。

従来の監視では、

Server CPU > 90%

のような単純な異常検知が中心でした。

しかし、現在のWebサービスは複数のサービスやAPIで構成されることが多く、単純な監視だけでは原因を特定できないことがあります。

そこで、

Logs
+
Metrics
+
Traces

を組み合わせてシステム全体を観察します。


2. Observabilityの3つの基本要素

Logs

ログは、アプリケーション内部で発生したイベントを記録する情報です。

例:

2026-09-11 10:03:15 INFO User login success
2026-09-11 10:03:18 ERROR Database connection timeout

ログを見ることで、

  • どの処理で
  • いつ
  • どのようなエラーが

発生したかを確認できます。


Metrics

Metricsは、システム状態を数値として記録するデータです。

代表例:

  • CPU使用率
  • メモリ使用率
  • APIレスポンスタイム
  • エラー率
  • リクエスト数

例えば、

API Response Time: 820ms
Error Rate: 3.2%
CPU Usage: 74%

のように数値化することで、サービス状態の変化を把握できます。


Traces

Traceは、一つのリクエストが複数のサービスを通過する流れを追跡する仕組みです。

例:

Browser
   ↓
Frontend
   ↓
API Gateway
   ↓
User Service
   ↓
Database

どこで処理時間が長くなっているのかを特定しやすくなります。


3. ログは「構造化」する

ログを単純な文字列として保存すると、大量になったときに検索が難しくなります。

例えば、

User 193 login failed

よりも、

{
  "level": "error",
  "event": "login_failed",
  "user_id": 193,
  "service": "auth"
}

のようなStructured Loggingが便利です。

Node.jsでは、JSON形式でログを保存するライブラリを利用できます。

logger.info({
  event: "user_login",
  userId: user.id
});

これにより、

event = user_login

のような条件で検索できます。


4. 重要なメトリクスを設計する

監視項目を増やしすぎても、必要な情報を見つけにくくなります。

そのため、まず重要な指標を決めます。

Request Rate

一定時間内に何回リクエストされたか。

Error Rate

どれくらいエラーが発生しているか。

Latency

APIレスポンスにどれくらい時間がかかっているか。

Saturation

CPUやメモリなどのリソースが限界に近づいていないか。

例えば、

Metric 状態
Request / sec 820
Error Rate 0.8%
P95 Latency 420ms
CPU Usage 61%

のようにダッシュボード化すると、サービス状態をすぐに確認できます。


5. 平均値だけではなくP95を見る

APIパフォーマンスを見るとき、平均値だけでは問題を見逃すことがあります。

例えば、

Average Response Time = 180ms

でも、一部のユーザーは2秒以上待っている可能性があります。

そこで利用されるのが、

  • P50
  • P95
  • P99

などのPercentileです。

例えば、

P50 = 120ms
P95 = 650ms
P99 = 1400ms

の場合、一部のアクセスでレスポンスが大きく遅れていることが分かります。

Webサービスでは平均値だけでなく、P95やP99も確認することが重要です。


6. Distributed Tracing

マイクロサービス構成では、一つのユーザー操作が複数のサービス

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?