Upgrade to Pro — share decks privately, control downloads, hide ads and more …

さくらのIaaS基盤のモニタリングとOpenTelemetry/OSC Hokkaido 2025

さくらのIaaS基盤のモニタリングとOpenTelemetry/OSC Hokkaido 2025

Avatar for FUJIWARA Shunichiro

FUJIWARA Shunichiro

July 05, 2025
Tweet

More Decks by FUJIWARA Shunichiro

Other Decks in Technology

Transcript

  1. 自己紹介 @fujiwara (X, GitHub, Bluesky) @sfujiwara (hatena, mixi2) 2011〜2024 面白法人カヤック

    2025-02〜 さくらインターネット ISUCON 優勝4回 / 運営(出題)4回 github.com/kayac/ecspresso github.com/fujiwara/lambroll
  2. さくらのIaaS基盤 さくらのクラウド 仮想サーバー(VM)基盤 データプレーンは OSS を活用 Linux, QEMU, KVM, LVM,

    Open-iSCSI, etc... コントロールプレーンは自社開発のソフトウェア + OSS nginx, Apache httpd, PHP, Perl, Go, MySQL, RabbitMQ, etc...
  3. さくらのIaaS基盤のアーキテクチャ(初期: 2011〜2020年頃まで) モノリシックなAPIサーバー + script群 PHP(API) + Perl + Shell

    例: VM起動の流れ(レガシー) 1. ユーザーがAPIサーバーにリクエスト 2. APIサーバーが具体的な起動方法を決定 DBの情報を見てVM起動ホストを選択 実行するためのコマンドラインを生成 (Perl / Shell でQEMU, KVM を操作) 3. リモートでコマンドを実行してVMを起動 ストレージ(iSCSI target/initiator)やネットワークも同様に操作
  4. 物理ホスト群 API ホスト3 ホスト2 ホスト1 gRPC boot status status status

    VM bridge ホスト選択 ユーザー VM 起動処理 VM agent VM agent VM agent
  5. Mackerel + OpenTelemetry を導入 Mackerel 株式会社はてなが提供するサーバー監視、オブザーバビリティSaaS mackerel.io Mackerel で取得できるメトリクスは3種類 サーバーにインストールしたagentが取得するメトリクス(host

    metrics) サーバーに紐付かないメトリクス (service metrics) ラベル付きメトリクス (OpenTelemetry互換) OpenTelemetry ログ、メトリクス、トレースを統一的に収集・送信するための OSSの観測可能性フレームワーク
  6. Mackerel + OpenTelemetry を導入 要求 prometheus exporter はそのまま使いたい Mackerel にメトリクスを送信したい

    解決策 otel-collector (OpenTelemetry Collector) を利用 1. prometheus receiver でメトリクスを収集(scrape) 2. (必要に応じて) processor でメトリクスを加工 3. otlp exporter で Mackerel に送信 これで prometheus の資産を生かしつつ同時に Mackerel にもメトリクスを送信できる
  7. Mackerel OpenTelemetry Collector scrape scrape scrape VM 管理サービス /metrics ストレージ管理サービス

    /metrics ネットワーク管理サービス /metrics prometheus receiver processors otlp exporter otlp endpoint
  8. OpenTelemetry Collector を用意する otel-collector は OpenTelemetry のメトリクス、ログ、トレースを収集・加工・転送する ためGo製のOSS 構成要素 receiver:

    収集 prometheus, otlp, jaeger, fluentdforward, hostmetrics... processor: 加工 batch, memory_limiter, transform... exporter: 転送 otlp, prometheusremotewrite, file, debug... extension: 追加機能 health_check, pprof...
  9. OpenTelemetry Collector をどう用意するか 実際には receiver, processor, exporter から必要なものを組み合わせて使う あらかじめ公式で用意されたdistribution OpenTelemetry

    Collector ("otelcol") OpenTelemetry Collector Contrib ("otelcol-contrib") OpenTelemetry Collector for Kubernetes ("otelcol-k8s") OpenTelemetry Collector OTLP ("otelcol-otlp") OpenTelemetry Collector eBPF Profiler ("otelcol-ebpf-profiler") 全部入り = contrib
  10. OpenTelemetry Collector をどう用意するか 公式の distribution を使うのが簡単だが… 提供されているものでは欲しい機能が足りないことがある 全部入りの contrib は大きい(バイナリが300MB以上)

    不要なコンポーネントによるセキュリティリスクなども → 必要なコンポーネントだけを組み合わせてビルドするのが推奨 https://opentelemetry.io/docs/collector/custom-collector/
  11. OpenTelemetry Collector を自分でビルドする 公式に用意された ocb (OpenTelemetry Collector Builder) を使えば簡単 https://github.com/open-telemetry/opentelemetry-collector/tree/main/cmd/builder

    dist: name: otelcol-custom description: Local OpenTelemetry Collector binary output_path: /tmp/dist exporters: - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/exporter/alibabacloudlogserviceexporter v0.109.0 - gomod: go.opentelemetry.io/collector/exporter/debugexporter v0.109.0 receivers: - gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.109.0 processors: - gomod: go.opentelemetry.io/collector/processor/batchprocessor v0.109.0 providers: - gomod: go.opentelemetry.io/collector/confmap/provider/envprovider v1.15.0 - gomod: go.opentelemetry.io/collector/confmap/provider/fileprovider v1.15.0 - gomod: go.opentelemetry.io/collector/confmap/provider/httpprovider v0.109.0 - gomod: go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.109.0 - gomod: go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.109.0
  12. sacloud-otel-collector さくらのクラウド向けに OpenTelemetry Collector を用意しました(OSS) https://github.com/sacloud/sacloud-otel-collector 用意した理由 さくらのクラウド内部、外部ともに OpenTelemetry エコシステムを採用

    モニタリングスイート(β)を提供している 利用者が独自のログやメトリクスを送信する 他のマネージドサービス(AppRun, Database Appliance...)からメトリクスやロ グを送信する VMのメトリクス(CPU, メモリ, ディスク, ネットワークなど) を送信する 公式ビルドを用意して手軽に使ってもらいたい
  13. まとめ IaaS基盤のモニタリングを Mackerel + OpenTelemetry で再整備中 OpenTelemetry Collector を使って Mackerel

    にメトリクスを送信 sacloud-otel-collector を OSS として公開しました 今後はさくらのクラウド向けに特化した機能を追加していく予定