Mímisbrunnr知恵の泉

← クラウドインフラ 一覧

🎓 レベル:標準 | 重要度:A(必須)

📎 前提:プロセスとサービス管理(systemd) | 関連:監視とアラート設計分散トレーシング

要点(BLUF)

概念 ── 監視と可観測性の違い

**監視(monitoring)**は「事前に決めた指標を見張る」こと(CPUが80%超えたら警告)。**可観測性(observability)**は「想定していなかった問いにも、出てくる信号から答えられる」度合い。マイクロサービス(Service・Ingress)では障害の形が予測しきれないので、後者が要ります。

その材料が3本柱です。

flowchart LR
    metrics["メトリクス(数値の時系列)→ 異常に気づく"] --> trace["トレース(リクエスト経路)→ 場所を絞る"]
    trace --> logs["ログ(出来事の詳細)→ 原因を読む"]

仕組み ── 3本柱の使い分け

信号答える問いコスト
メトリクス数値の時系列(集計値)いつ・どれだけ異常か低(軽い・長期保存向き)
ログタイムスタンプ付きテキスト具体的に何が起きたか中〜高(量が膨らむ)
トレースリクエストの経路(スパンの連なり)どのサービスで遅延/失敗したか中(サンプリングが要る)

メトリクスは安くて長期保存に向き、ダッシュボードとアラート(監視とアラート設計)の主役。ログは詳細だが量が膨大なので、構造化(JSON)して検索可能に。トレースはサービス横断の遅延切り分けに必須(分散トレーシング)。

ログは systemd の journald(プロセスとサービス管理(systemd))やコンテナの標準出力(コンテナとは(名前空間・cgroups))から集める——「標準出力に出す」習慣がここで効きます。

仕組み ── OpenTelemetry と Prometheus

OpenTelemetry(OTel)は、3信号の生成・収集・送信を標準化する仕様+SDK。ベンダに依存しない計装(instrumentation)で、後からバックエンド(保存・可視化先)を差し替えられます。

Prometheusは、各サービスが公開する /metrics エンドポイントを**定期的に取りに行く(pull型スクレイプ)**メトリクス基盤。Grafanaでダッシュボード化します。

flowchart LR
    app["アプリ(/metrics を公開)"] -->|"pull スクレイプ"| prom["Prometheus(保存・集計)"]
    prom --> graf["Grafana(ダッシュボード)"]
    prom --> alert["アラート(07-02)"]
# prometheus.yml ── 15秒ごとに自分とアプリの /metrics を取得
global:
  scrape_interval: 15s
scrape_configs:
  - job_name: "myapp"
    static_configs:
      - targets: ["myapp:8000"]   # アプリの /metrics 公開先

なぜ3本柱を併用するのか

⚠️ よくある誤解・落とし穴

対応ラボ

cloud-infra-study/labs/07-01_prometheus.yml07-01_observability_compose.yaml(Prometheus+Grafana を Compose で起動し、ダッシュボードでメトリクスを見る最小構成。Docker 前提)。

関連

第7章 監視と可観測性 目次