個人サイトに観測は要るか
「個人ブログにモニタリングなんて要らない」と思っていた時期があった。1 度本番が 6 時間ダウンしているのに気付かず にいて考えを変えた。
個人サイトでも観測は要る。ただし、3 点セット で十分。これ以上は過剰。
3 点セット
私が運用している組み合わせ:
- GA4 — 訪問数 / セッション / 流入元 / 読了率
- Sentry — フロント + バック両方の error
- 軽量ログ — Rails / Next.js のリクエストログを 7 日 retention で保管
それぞれの役割が違うので、3 つとも要る。
GA4: 「読まれているか」
GA4 で見る指標は 4 つに絞る:
- アクティブユーザー (週次)
- セッション数 / 平均エンゲージメント時間
- 流入元 (Search Console / Twitter / direct)
- 読了率 (scroll event を仕込んで 90% 到達で計測)
それ以上の数字は最初は見ない。4 つの指標だけで月次レビューが回る。
スクロール 90% を計測するコード(Next.js):
useEffect(() => {
const handler = () => {
const scrolled = window.scrollY + window.innerHeight
const total = document.body.scrollHeight
if (scrolled / total >= 0.9 && !window.__read90) {
window.__read90 = true
window.gtag?.('event', 'read_90', { post_slug: slug })
}
}
window.addEventListener('scroll', handler)
return () => window.removeEventListener('scroll', handler)
}, [slug])
これで「読了率」が GA4 のイベント数として記録される。月次に「最後まで読まれた記事 トップ 5」が見える。
Sentry: 「壊れていないか」
個人サイトは平日昼間に問題が起きると気付かない。Sentry の Slack 通知 が無いと事故が滞る。
# backend/Gemfile
gem 'sentry-rails'
gem 'sentry-sidekiq'
// frontend/sentry.client.config.ts
import * as Sentry from '@sentry/nextjs'
Sentry.init({
dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
tracesSampleRate: 0.1,
environment: process.env.NODE_ENV,
})
無料枠(月 5000 events)で個人サイトには十分。私は 1 ヶ月で 10〜30 events しか出ないので、無料枠を超えたことがない。
設定で大事なのは Slack 通知の閾値:
- 新規 issue: 即通知
- regression: 即通知
- 既存 issue の event 増加: 通知しない(通知疲れ防止)
軽量ログ: 「あとから追えるか」
GA4 と Sentry だけだと「特定 URL に何件アクセスがあったか / どの順序でリクエストが来たか」が追えない。これを補うのが Rails / Next.js のリクエストログ。
# backend/config/environments/production.rb
config.lograge.enabled = true
config.lograge.formatter = Lograge::Formatters::Json.new
JSON で吐かれた log を 7 日 retention で CloudWatch Logs / Vector / journald どれかに流す。EC2 の小型インスタンスなら journald で十分:
journalctl -u rails --since "1 day ago" | grep '"controller":"PostsController"'
ログ量は個人サイト規模なら 1 日 10〜50MB。journald の retention 設定(/etc/systemd/journald.conf で MaxRetentionSec=7day)で 7 日分で 350MB 程度。EC2 の 8GB ストレージで余裕。
やらないこと
意図的に入れないもの:
- Datadog / New Relic: 月 $15+ で個人サイトには高すぎ
- Prometheus / Grafana: 構築工数が観測価値を超える
- PostHog / Amplitude: GA4 で十分
「自分のサイトに何が起きているか」を見る目的なら、GA4 + Sentry + lograge で必要十分。
月次レビューのテンプレ
毎月 1 日の朝 5 分で見る数字(メモアプリにテンプレ化):
📅 YYYY-MM 月次サイト指標
- アクティブユーザー: ___ (前月比 ___%)
- セッション: ___ / 平均 ___ 秒
- 上位流入元: 1) ___ 2) ___ 3) ___
- 読了率トップ 3: 1) ___ 2) ___ 3) ___
- Sentry: 新規 issue ___ 件 / 既知 ___ 件
- 気付き: ___
- 来月の方針: ___
5 分で書ける形にしておくと、続く。
まとめ
個人サイトの観測 3 点セット:
- GA4 — 読まれているか
- Sentry — 壊れていないか
- 軽量ログ — あとから追えるか
それぞれが別の質問に答える。3 つで質問が出尽くす のがポイント。これ以上の観測は、規模が大きくなったときの宿題。
観測は「気付ける状態を作る」こと。完璧な可視化ではなく、最低限の網。