オブザーバビリティとは?スプレッドシート派のための平易なガイド
要約
オブザーバビリティとは、ログ、メトリクス、トレースから、システムの内部で何が起きているかを突き止める力です。モニタリングは想定済みの問題を監視し、オブザーバビリティは想定外の問題を調べる助けになります。この記事では表計算の言葉で違いを説明し、エラー率やパーセンタイルの数式を示し、チームが使うツールの費用感も比べます。
オブザーバビリティとは、システムが外へ出しているデータ、つまりログ、メトリクス、トレースだけを使って、そのシステムが何をしていて、なぜそうなっているのかを突き止められる力のことです。モニタリングが「何かが壊れた」と知らせてくれるのに対し、オブザーバビリティは「どこで、誰に、いつから起きたのか」という次の質問に答えてくれます。スプレッドシートを使っている人なら、おかしな数字の元になった行を追いかけた経験があるはずです。それが、すでに小さなオブザーバビリティです。
1分でわかる版:表計算の世界で考えてみる
月次売上のシートで合計がおかしいとき、「合計がずれている」と表示するダッシュボードはモニタリングです。地域、日付、商品で絞り込んで、400行を二重に取り込んでしまったインポートを見つけられるなら、それがオブザーバビリティです。
ソフトウェアでも同じことが起きます。チェックアウトページが遅くなり、アラートが鳴る。次は、どのサービス、どの顧客層、どのデプロイが原因なのかを特定しなければなりません。そのために必要なデータをテレメトリと呼び、そのデータをどれだけうまく使えるかを、人はオブザーバビリティと呼んでいます。
Biscuit にも同じことが言えます。ボールが失くなったことは分かっていても、最後に見かけた場所をたどる必要があるのです。

モニタリングとオブザーバビリティ:既知の問題と想定外の問題
モニタリングは、事前に決めておいたものを監視します。CPU 使用率が 90% を超えたら、エラー率が 2% を超えたら、ページが応答しなくなったら、といったルールを自分で書き、そのルールが破られたらツールが知らせてくれます。
オブザーバビリティは、ルールを書いていなかった問題のためのものです。OpenTelemetry プロジェクトの解説では、システムの内部を知らなくても外側から理解する方法であり、「未知の未知」に備える助けになる、と説明されています。
どちらかが他方を置き換える、という考え方は捨ててください。モニタリングは煙感知器で、オブザーバビリティは後から見返す間取り図と防犯カメラの映像です。両方が必要です。
ログ、メトリクス、トレース:3つの基本素材
ほとんどの解説は、この3つのシグナルに行き着きます。それぞれを表計算の言葉で説明します。
ログ は、個々のイベントについてのタイムスタンプ付きのメッセージです。シートでいえば、イベントごとに1行。時刻、ユーザー、操作、結果が並びます。詳細が最も多く、容量も最も食います。
メトリクス は、時間で集計した数値です。エラー率、1分あたりのリクエスト数、使用メモリなどがこれにあたります。シートでいえば、まとめのタブです。保存は安く、グラフにもしやすいものの、どの単一のリクエストが失敗したのかは教えてくれません。
トレース は、1つのリクエストがいくつものサービスを通る道筋を、各ステップでかかった時間と一緒に追いかけたものです。シートでいえば、1つの注文IDを5つのタブにまたがって追い、それぞれで何分滞留したかを書き留めるようなものです。
よく使われる言い方はこうです。メトリクスは「何かがおかしい」と教え、トレースは「だいたいどこか」を示し、ログは詳細を教えてくれます。実際のセルでどう見えるか、1分で確かめてみましょう。
5,000行のログファイルを開いたら:Sheetsでの実例
アプリケーションログを5,000行、Google Sheets に書き出したとします。A列はタイムスタンプ、B列はサービス名、C列はステータスコード、D列は応答時間(ミリ秒)です。特記がない限り、Excel と Sheets のどちらでも動きます。
まずは、代表的なメトリクスであるエラー率です。
=COUNTIF(C2:C5001, ">=500") / COUNTA(C2:C5001)範囲は、ステータスコードが並ぶ C2:C5001 です。
条件の
">=500"で、すべてのサーバーエラーを数えます。COUNTAで割ると、全リクエストに占める割合になります。セルはパーセント表示にしてください。
ここまでがモニタリングです。数字が1つ、しきい値が1つ。では、オブザーバビリティの部分に進みましょう。どのサービスが原因なのでしょうか。
=QUERY(A1:D5001, "select B, count(C) where C >= 500 group by B order by count(C) desc", 1)これは Sheets 専用の数式です。QUERY に対応する Excel の関数はありません。引数は次のとおりです。
データは見出し行を含む A1:D5001 です。
文字列は SQL に似た簡単なクエリで、サービスごとのエラー数を多い順に数えます。
最後の
1は、見出し行が1行あることを示します。
Excel 365 では、別の組み立て方で同じ結果が得られます。
=LET(s, FILTER(B2:B5001, C2:C5001>=500), u, UNIQUE(s), HSTACK(u, COUNTIF(s, u)))FILTER、UNIQUE、HSTACK は Excel 2016 にはないので、Excel 365 または 2021 が必要です。古いバージョンをお使いなら、ピボットテーブルのほうが確実です。
遅いリクエストを見るなら、平均より 95 パーセンタイルのほうが正直な数字です。
=PERCENTILE(D2:D5001, 0.95)平均応答時間が 180 ms でも、95 パーセンタイルが 2,400 ms なら、20人に1人は嫌な思いをしています。平均はその差を隠してしまいます。オブザーバビリティツールが避けさせようとしている落とし穴は、まさにこれです。

数式そのものを忘れてしまう場合は、Biscuit が先に探しておいてくれます。Formula.dog では、やりたいことを文章で説明すると、こうした数式を作れます。
スプレッドシートを使う普通の仕事でも
オブザーバビリティは、サーバーを運用している人だけの話ではありません。「なぜ火曜日だけ問い合わせが2倍になったのか」と聞くサポート責任者も、ある差異を1件の仕入先請求書まで遡るアナリストも、夜間のインポートがファイルを1つ黙って飛ばしていたことに気づく運用担当も、同じことをしています。
ソフトウェアでは、システムが分散しているので、こうした問いがさらに鋭くなります。ボタンを1回押すだけで、API ゲートウェイ、認証サービス、データベース、決済プロバイダーを通ることもあります。失敗したときに画面に出るエラーメッセージは、たいてい問題が始まった場所ではありません。トレースを見れば、遅い箇所や壊れた箇所がハイライトされた全体の流れが分かるので、誰も推測しなくて済みます。
よく出てくる用語を、平易な言葉で整理しておきます。
計装(インストゥルメンテーション) は、テレメトリを出力するコードを追加することです。もともとなかったタイムスタンプとID列を、レポートに足す作業に似ています。
カーディナリティ は、ある項目が取りうる異なる値の数です。地域は少なく、ユーザーIDは非常に多くなります。カーディナリティの高い項目は鋭い質問に答えてくれますが、保存コストも上がります。
SLO(サービスレベル目標) は、自分に課す目標です。「チェックアウトの 99.5% が2秒以内に完了する」のように数字にすると、漠然とした不安が、見守れる数値に変わります。
ダッシュボードをたくさん並べても、オブザーバビリティにはならない
ベンダーには耳の痛い意見かもしれませんが、3つのシグナルがそろっているからといって、オブザーバビリティがあるとは限りません。メトリクスは一つのツール、ログは別のツール、トレースは三つ目のツールにあると、深夜2時に誰かが手作業で突き合わせることになります。それは、共通のID列がない3つのブックを並べているのと同じです。
判断の基準はシンプルです。想定外の障害が起きたとき、新しいコードをリリースせずに、データへ新しい質問を投げられるかどうか。「ログを追加してデプロイし直す必要がある」と答えるなら、それは手間のかかるモニタリングにすぎません。
実務で差を生むのは、次の2点です。
すべてのイベントに文脈をつける。 各ログ行にリクエストID、サービス名、バージョンを入れておけば、後からグループ化やフィルタリングができます。どのエクスポートにも欲しかったID列です。
詳細を十分な期間保持する。 ユーザーIDや注文IDのようなカーディナリティの高いデータに答えが隠れていますが、そのぶん料金も上がります。
実際に使われているツールと、そのコスト
概念を理解するために何かを買う必要はありませんが、市場の概要は知っておく価値があります。
OpenTelemetry は、テレメトリを生成するためのオープンな標準です。保存や表示を担う場所ではありません。一度計装すれば、データは好きな場所へ送れます。
Grafana Cloud はオープンな標準を軸にしたサービスで、無料枠では月ごとに 10,000 件のアクティブなメトリクス系列と、ログ、トレース、プロファイルそれぞれ 50 GB が使えます。オープンソースのスタックをセルフホストすることもできますが、その場合は Prometheus、Loki、Tempo を自分で組み上げる手間がかかります。
Datadog は、一括で導入できる選択肢です。エージェントを入れれば数分でダッシュボードが動き、インフラ、APM、ログを1か所で見られます。注意点は料金です。ホスト単位の課金(インフラだけで1ホストあたり月 $15 程度)に、ログやカスタムメトリクスの別料金が加わり、約 50 ホストを超えると急に高くなることがあります。永続的な無料枠はありません。
New Relic は料金の面で中間に位置します。月 100 GB のデータ取り込みが無料で、その後は 1 GB あたり $0.40 です。フルプラットフォームのユーザーが1名含まれます。
おすすめなのは、小規模なプラットフォームチームがいて、インフラそのものを運用する手間を抱えたくない場合です。逆に、サーバーが2台で開発者が1人なら、無理に導入する必要はありません。適切なログ形式と上の数式だけでも、思いのほか遠くまで行けます。

エンジニアでなくても、月曜日にできること
トレースに触れることはないかもしれません。それでも、数字をまとめて報告する仕事をしている人には、オブザーバビリティの考え方が役立ちます。
すべてのエクスポートにIDを入れる。 賢い数式より、結合に使える列が1つあるほうがずっと役立ちます。
生データの行を残す。 詳細タブに値を貼り付けて上書きしないでください。集計がメトリクスなら、生データの行はログです。
「正常」の基準を書いておく。 定義していないしきい値は、アラートを出せません。
3つ目の質問をする。 「売上が下がった」はアラートです。「どこで?」はメトリクスです。「どの行が原因で?」が、オブザーバビリティです。
これを続ければ、シートに次の不自然な合計が出たとき、説明に午後いっぱいではなく10分で済むようになります。
よくある質問への短い答え
よく入力される質問の短い答えを、下のFAQにまとめました。一つだけ覚えるなら、オブザーバビリティは買うものではありません。システムが出すデータが、想定していなかった質問にどれだけ答えられるか、という性質のことです。