Rails で OpenTelemetry ロギングを設定する方法

2026/09/01 6:12

Rails で OpenTelemetry ロギングを設定する方法

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

元々のサマリーは品質が高く明確であり、厳密な改善は必要ありませんが、完結性を高めるために「必須の Gemfile の gem」の点で

opentelemetry-sdk
を明示し、段落間の接続をスムーズにするために以下にわずかに精査されたバージョンを示します。

サマリー:

主な要点は、開発者が Rails アプリケーションから Grafana Cloud へのログ送信を直接構成できるようになり、中間コレクターが必要なくなることです。この直接的な接続により、別個のサービスを排除することでインフラストラクチャが簡素化され、即座に可観測性の改善を求める企業にとって複雑さを低下させ、障害の発生可能性のあるポイントが減ります。これを実現するには、

opentelemetry-sdk
opentelemetry-exporter-otlp-logs
、および各種インスツルメンテーションパッケージなどの特定の gem を追加し、接続を定義し認証を安全に処理するために
OTEL_EXPORTER_OTLP_ENDPOINT
および
OTEL_EXPORTER_OTLP_HEADERS
といった重要な環境変数を設定する必要があります。また、ローカルでのテストも
OTEL_LOGS_EXPORTER=console
を設定することで facilitated されます。

この簡素化されたアプローチは、以前には base パスの省略や HTTP 204 レスポンスをエラーとして誤認識するなどのバグを引き起こしたエクスポートライブラリにおける最近の修正によって現在可能になっています。これらの問題は、特定のプルリクエストに従ってリリースされた後の gem バージョン(v0.5.1 と v0.4.0 それぞれ)で解決されました。この基本的な直接ログ記録を確立した後、推奨される次のステップは

rails_semantic_logger
gem を使用して構造化ログを採用することです。この進展はデータ品質を向上させ、 Rails エコシステム内で追加のインフラストラクチャ層を管理せずにチームがより深い洞察を得ることを可能にします。

本文

Rails プロジェクト向け:ベンダーロックイン回避のログエクスポート設定(OpenTelemetry × Grafana Cloud)

最近の Rails プロジェクトにおいて、可視性の確保とベンダー依存からの脱却を両立させるために、OpenTelemetry を採用する方向で検討しました。本記事では、OpenTelemetry Ruby SDK を用いてログデータを直接 Grafana Cloud にエクスポートする設定手順、およびその過程で発見・修正された問題について解説します。

OpenTelemetry の利点と基本構造

OpenTelemetry は、ログ、メトリクス、トレースの 3 つの観測データ(シグナル)を生成する業界標準規格です。

主要な特徴

  • 独立性: 各シグナルは独立しており、必要なものだけを導入可能です。
  • ベンダー非依存: すべてのシグナルをOTLP (OpenTelemetry Protocol) という業界標準形式で送信します。
  • 柔軟性: バックエンドを Datadog や New Relic から Grafana Cloud へ切り替える際も、アプリケーションコードの変更が不要です。

デプロイメントパターン

一般的には OpenTelemetry Collector を介してデータを収集し、バッチ化してからベンダーへ送る方式が採られます(別プロセスやサイドカーコンテナとして稼働)。 一方、当社はインフラを簡潔に保つため、Collector を迂回し、Ruby SDK から直接ログをエクスポートするアプローチを採用しました。

注意: ログボリュームが小さい場合は SDK の内蔵バッチ処理で十分ですが、バッファリングやサンプリング、データスクラビングが必要な場合は Collector の採用を検討してください。

ログ用 Ruby SDK の設定手順

以下は

Gemfile
に追加すべき gem と設定例です。

必要な Gem の追加

以下の 6 つの gem をインストールします:

  • opentelemetry-sdk
    : コアフレームワーク(構成のエントリポイント)
  • opentelemetry-logs-sdk
    : ログシグナルのサポート追加
  • opentelemetry-exporter-otlp
    : OTLP 経由でのデータエクスポート(共通設定など)
  • opentelemetry-exporter-otlp-logs
    : OTLP 経由でのログエクスポート専用
  • opentelemetry-instrumentation-all
    : Rails、Rack、Active Record などの自動追跡機能バンドル
  • opentelemetry-instrumentation-logger
    : 標準 Ruby の Logger を OpenTelemetry ログに変換

Gemfile の例

gem 'opentelemetry-sdk'
gem 'opentelemetry-logs-sdk'
gem 'opentelemetry-exporter-otlp'
gem 'opentelemetry-exporter-otlp-logs'
gem 'opentelemetry-instrumentation-all'
gem 'opentelemetry-instrumentation-logger'

環境変数の設定

SDK は標準的な OTLP エクスポート用環境変数を自動的に検出します。エンドポイントと認証情報を以下のように設定してください。

# グラファナクラウドなどのエクスポート先
export OTEL_EXPORTER_OTLP_ENDPOINT="https://your-vendor.com/otlp"

# 認証トークン(Basic Auth の例)
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Basic <your-token>"

SDK の初期化 (
config/initializers/opentelemetry.rb
)

以下のコードをファイルに作成し、SDK を起動します。

# config/initializers/opentelemetry.rb
return if ENV["OTEL_EXPORTER_OTLP_ENDPOINT"].blank?

OpenTelemetry::SDK.configure do |c|
  c.service_name = "our-rails-app"
  c.use_all
end

ポイント:

c.use_all
は、インストルメンテーション機能とログレコーダー(
opentelemetry-instrumentation-logger
)をすべて有効にします。

ローカルでのテスト方法

デプロイ前に設定の正常性を確認するための簡易テストです。

# ログを端末に出力モードに変更してテスト
export OTEL_LOGS_EXPORTER=console

# アプリを再起動し、ログを確認
rails server

これにより、データがベンダーへ送信されることなく端末に表示され、セットアップの成功を素早く確認できます。

Ruby SDK で発見・修正された問題

Grafana Cloud へのエクスポートにおいて、SDK が仕様の他言語実装と異なる挙動を示す 2 つの問題を発見しました。これらはすべてオープンソースコミュニティを通じて解決されています。

1. エクスポーターがベースパスを省略する

一部のベンダーは OTLP データ送信時に特定のベースパス(例:

/otlp
)を含むエンドポイントが必要な場合があります。しかし、エクスポーターはこのパスを削除してしまい、期待される URL を生成できていませんでした。

  • 設定したエンドポイント:
    https://your-vendor.com/otlp
  • 期待される最終 URL:
    https://your-vendor.com/otlp/v1/logs
  • 実際だった URL:
    https://your-vendor.com/v1/logs
    (ベースパス欠落のためエラー)

解決策: この問題は issue #2157 で報告され、PR #2158 によって解決しました(v0.5.1 リリース)。

2. HTTP 204 レスポンスの扱い

Grafana Cloud はログ ingest 後に

204 No Content
を返しますが、エクスポーターはこれを成功とみなすのは
200 OK
のみとしていました。結果として、エクスポート自体は成功していてもアプリケーション側では「失敗」と判定される不具合が発生しました。

解決策: この問題は issue #2043 で報告され、PR #2044 によって解決されました(v0.4.0 リリース)。

次のステップ:構造化ロギングへの移行

ログエクスポートが正常に動作するようになった後の自然な進化として、構造化ロギングの導入が挙げられます。

  • rails_semantic_logger
    gem は、そのための良好な出発点です。
  • 将来的には、この gem と組み合わせた完全な OpenTelemetry セットアップについて別記事で詳しく紹介する予定です。

同じ日のほかのニュース

一覧に戻る →

2026/09/01 6:10

Google はChrome ウェブストアから MV2 拡張機能を削除し、UBO も含まれます。

## Japanese Translation: Google は、Chrome ウェブストアからすべての Manifest V2 拡張機能の削除を公式に完了し、Manifest V3 への業界全体での大きな移行の最終段階となりました。この決定的な動きは、Google が旧形式と比較してより優れたセキュリティ、プライバシー、パフォーマンスを提供すると主張していることを背景に、Manifest V3 を新基準として確立しています。Chrome バージョン 138 以前のバージョンを使用するユーザーは既存の拡張機能を利用し続けることができますが、ストアから更新を受け取ったり再インストールしたりすることは事実上不可能になっています。この移行は既に uBlock Origin などの人気ツールに影響を及ぼしており、中央集権的なストアからの配布に依存している開発者も影響を受けています。Chrome ウェブストアは Chromium ベースのブラウザの主要なマーケットプレイスであるため、この変更は Brave などの他のプラットフォームにも影響を与えています。Chromium を使用しないブラウザは現在、Google の一元化されたストアではなく独自のバックエンドで特定の拡張機能ホストしなくてはならないため、Brave は Chrome ウェブストアからの削除にもかかわらず、AdGuard、uBlock Origin、uMatrix、NoScript の 4 つの Manifest V2 拡張機能を独自のバックエンド上で引き続きホスティングすることで機能を維持する決断をしました。これらの拡張機能は Brave 内で簡単に有効化できるよう残っていますが、Chromium ベースのブラウザ向けに Chrome ウェブストアで発見可能でもインストール可能でもありません。さらに、Google は影響を受けた拡張機能開発者に対してこれらの削除について通知を行いました。最終的に、デジタル広告とツール分野の景観は、エコシステム全体のユーザーにとって一部の拡張機能の機能を制限する必要があるとしても、より厳格なセキュリティ制御を優先する新しいモデルへと進化しています。

2026/09/01 1:47

セキュリティカメラを自動的な鳥類識別システムに変えました

## Japanese Translation: BirdNet-Go は、既存のセキュリティカメラや RTSP ストリームからのローカル音声分析により、鳥、コウモリ、カエルその他の野生生物を特定するためのセルフホスト型リアルタイム AI システムです。クラウドへの依存なしに動作し、Docker で実行され、Raspberry Pi ハードウェアとも互換性があります。该系统はマルチモデルのローカル推論を活用しており、Google Perch v2(最大 14,795 の種を検出可能)を含むものであり、前世代のモデルに比べて大幅に能力が拡張されています。利用者は標的動物に対して特定のアラートルールを構成でき、新規種の個体が行き来した際に MQTT を経由して Discord または Home Assistant に即時通知を受け取ることができ、これにより庭の生物多様性を効果的に追跡できます。ソリューションにはオプションの iOS 準拠アプリ("BirdNET-Go Companion")が含まれており、リモート視聴に対応し、BirdWeather と連携してコミュニティでのデータ共有が可能となっています。また、カメラ配置を最適化するための視覚的音声レベル分析機能も備えています。プライバシー保護策として、検出された話声中はマイクロフォン入力自動的に遮断され、RTSP フィードを提供するドアベルカメラへの対応も可能ですが、スタンドアロンのビデオドアベルとしては利用できません。コウモリの検出は専用のマイクロフォンを使用することでより高精度となりますが、该系统単独でも南カリフォルニアだけで 418,000 以上の検出イベントと 270 種を超える独特な種の記録に成功しており、平均的な信頼度は約 61% です。GitHub 上にオープンソースプロジェクトとして公開されており、安価な機器を利用した住宅所有者や研究者が生態モニタリングを行うことを民主化しています。

2026/08/28 18:17

動悸を止めてしまうような「狂った蜂蜜」がネット上で販売されています。

## Japanese Translation: 最も重大な危険は、ヒマラヤの崖蜂(*Apis laboriosa*)から採取される「狂ったハチミツ」を、その伝統的な聖なる文脈の外で摂取することにあります。それはグラニートキシンを含んでおり、これは心筋の電気信号への干渉を引き起こし、30〜60 分のうちに危険なほど心拍数と血圧が低下させる自然毒です。かつてネパールガンダキ州の先住民族であるグルング族は特定の儀式のために安全に収穫を行ってきましたが、この専門知識は薄れつつあり、ハチミツは世界的にオンラインで販売されながら、医薬的用量と毒性用量の間にある狭い限界についての十分な警告がないままです。研究者は 1976 年から 2026 年の記録を調査し、2009 年以降の事例を文書化した 27 つの公開論文を特定しました。中毒者の約 72% は中高年の男性で、高血圧や性功能障害への家庭療法として意図的にハチミツを摂取しました。中毒症例はロドデンドロンの花が咲く春に鋭く集中し、年間を通じて最も高い毒素濃度を示します。2013 年以降、韓国やフランスなど国外で発生した事例は診断上のギャップを浮き彫りにしており、患者が摂取を明かさない場合、医師が毒物に不慣れなために治療が遅れることが多くあります。ほとんどの患者は、静脈内補液とアトロピン薬物療法後に 1〜2 日以内に回復しますが、ネパールにおいてこのハチミツを摂取した死者の報告はありません。即時の健康上の脅威に加え、業界は国際プラットフォームにおける安全面の欠陥に苦しんでおり、「狂ったハチミツ」はキロ当たり数百米ドルで販売されています。また、これを産出する蜂は過剰収穫、生息地の破壊、気候変動の影響を受け、個体数が減少しており、人間の安全と種の保全という二重の危機を生み出しています。