- ランタイムに合った SDK のパッケージをインストールします。
- プロジェクト単位の取り込みキーは、ソース管理の外に保管します。
- サービス、環境、リリースに変わらない値を設定します。
- アプリケーションから安全なテストイベントを1件送信します。
- 送信結果を確認します。次に、LogBrew でイベントを見つけます。
シグナルと共通のコンテキスト
最初の5枚のカードはシグナルです。リリースと環境は、それらのシグナルのコンテキストです。独立したイベントの種類ではありません。log
重大度、ソース、時刻、安全なコンテキストを持つ構造化メッセージ。
trace_span
時間を計測した1つの処理。トレース ID とスパン ID でトレースに結び付きます。
issue
取得した障害と、その重大度、アプリが送信したエラーの詳細。
action
アプリ内のアクション。サブジェクト、セッション、安全なプロパティを任意で付けられます。
metric
名前、種類、値、単位、temporality を持つ1つの数値の測定値。
リリースと環境
同じ SDK のスコープ内で、後に続くイベントに付けられるコードバージョンと環境。
重大度の値
ログと課題には、info、warning、error、critical を使います。SDK やランタイムは、trace、debug、warn、fatal などの別名を送信することがあります。LogBrew は、受け付けた別名を正式な値に正規化します。
パッケージマネージャーでのインストール
テレメトリを送信するランタイムに合った SDK のパッケージをインストールします。LogBrew が発行した、プロジェクト単位の SDK または取り込みの設定を使います。アカウントのログイン情報を SDK の設定に使わないでください。Node.js のリクエストのトレース
リクエストをルートとするトレースの相関には、@logbrew/sdk 0.1.16 以降と @logbrew/node 0.1.11 以降を使います。
Express には @logbrew/express 0.1.5 以降が必要です。Fastify と NestJS には、それぞれの LogBrew パッケージの 0.1.6 以降が必要です。
これらの連携は、リクエストのスパンを1つ作成するか、既存のスパンを引き継ぎます。スパン名には、一致したルートのテンプレートが使われます。リクエスト内のログ、課題、アクション、メトリクスは、そのトレースとスパンのコンテキストを引き継ぎます。パッケージを新しくしても、アップグレード前に送信したイベントにコンテキストは追加されません。
デフォルトのリクエスト連携は、リクエストやレスポンスの本文、クエリ文字列、任意のヘッダー、加工していない traceparent の値を取得しません。
ASP.NET Core
CLI v0.1.55 以降は、Microsoft.NET.Sdk.Web を使う .NET 10 のプロジェクトを検出します。プロジェクトのルートでセットアップのプランをプレビューします。このコマンドはファイルを変更しません。
LOGBREW_SERVER_API_KEY、LOGBREW_SERVICE_NAME、LOGBREW_ENVIRONMENT、LOGBREW_RELEASE は、ソース管理の外で設定します。LogBrew をホストに登録し、そのミドルウェアをルーティングの後に配置します。
LOGBREW_SERVER_API_KEY がない場合、どちらの登録呼び出しも何もせず、安全に終わります。リリース済みのホスト連携は ASP.NET Core の NuGet パッケージで確認できます。公開されているパッケージのガイドでは、ホストのライフサイクル、リクエストの取得、課題の取得、プライバシーの制限、復旧方法を説明しています。
Maven または Gradle での Java
CLI v0.1.54 以降は、pom.xml、build.gradle、build.gradle.kts を検出します。プロジェクトのルートでセットアップのプランをプレビューします。このコマンドはファイルを変更しません。
LogBrewClient Bean を公開できます。この Bean により、リクエスト、例外、HTTP クライアント、JDBC、キャッシュの連携を任意で有効にできます。
Spring Kafka の取得は、logbrew.kafka.enabled=true で明示的に有効にした場合だけ動作します。アプリケーションにすでにある Spring Kafka の依存関係とクライアントの Bean を使います。
リリース済みのパッケージは Maven Central の Java SDK アーティファクトで確認できます。公開されているガイドでは、上限のある HTTP 送信、シャットダウン、ロギング、Spring の設定、Kafka の相関、プライバシーの制限を説明しています。
CMake での C++
C++ SDK には C++17 と CMake 3.16 以降が必要です。CLI v0.1.39 以降は、ルートのCMakeLists.txt を検出します。ファイルを変更せずにこのセットアップのプランをプレビューするには、logbrew setup --json を実行します。
FetchContent_MakeAvailable の呼び出しとターゲットのリンクを次のように置き換えます。
logbrew-cpp-0.2.3.tar.gz を使います。展開したパッケージは cmake --install と find_package(LogBrew 0.2.3 CONFIG REQUIRED) に対応しています。パッケージのガイドでは、型付きのコンテキスト、課題の証拠、スパンイベント、メトリクス、アクション、HTTP 送信を説明しています。
JavaScript のソースマップ
Vite のビルドでは、JavaScript ソースマップの手順に従います。プラグイン、ビルド成果物キー、アップロードの確認、元のソースの位置を持つ新しい課題について説明しています。Apple、Flask、React Native
テレメトリには、Swift のLogBrew プロダクトを使います。LogBrewCrash は、Apple のクラッシュやハングを取得する場合だけ追加します。dSYM のアップロードとホスト型のシンボル化については、Apple のクラッシュとハングの手順に従います。
Flask では、Flask をセットアップするの手順に従います。
React Native と Expo では、React Native の手順に従います。プロジェクトのキー、安全なテストログ、送信エラー、本番用のソースマップのための Expo Metro の設定を説明しています。
JavaScript のキューのトレース
Node のキュー連携は、独立した npm パッケージです。LogBrew の基本の JavaScript パッケージ、連携パッケージ、アプリですでに使っているキューまたはブローカーのクライアントをインストールします。
これらのパッケージは、選んだキューの呼び出しについて、アプリが明示的に管理するトレースの相関に使います。LogBrew は、ブローカーへの接続を所有したり、キューを作成したりしません。デフォルトでは、すべてのクライアントにグローバルなパッチも適用しません。
ネイティブエンベロープを直接送信する
POST /api/telemetry/ingest は、公開されている LogBrew SDK が対応していないカスタムクライアントの場合だけ使います。公開 SDK は独自のバッチ形式を使います。このエンドポイントは、その形式を受け付けません。
1つのネイティブエンベロープでは、1〜512件の項目を送信します。1つのエンベロープ内のすべての項目は、プロジェクト、サービス、リリース、環境、任意のトレースコンテキストを共有します。
項目のフィールド
各項目にはtype と data オブジェクトがあります。ログの項目は level を使います。課題の項目は severity を使います。どちらも 重大度の値にある値を受け付けます。
クライアントが再試行する可能性がある場合は、各項目に
id を付けて送信します。受け付けられた項目が、同じ id と内容で再試行によりもう一度送信されても、LogBrew は再び保存しません。レスポンスでは、その項目は already_accepted に数えられます。
リクエストの例
次の JSON をtelemetry-envelope.json として保存します。例のプロジェクト ID は、取り込みキーのプロジェクト ID に置き換えます。タイムスタンプは、テストイベントの現在の UTC 時刻に設定します。サービスとリリースには自分の値を使います。
telemetry-envelope.json
LOGBREW_INGEST_BEARER に読み込みます。この値を表示したり、アカウントの認証情報を使ったりしないでください。次のコマンドは、ファイルを1回送信します。curl 7.76.0 以降が必要です。
--fail-with-body はエラーの本文を残し、HTTP エラーの場合に 0 以外の終了ステータスを返します。ネットワークの障害やタイムアウトからは、LogBrew がリクエストを受け付けたかどうかはわかりません。同じファイルをもう一度送信するのは、項目に id の値がある場合だけにしてください。id の値がないと、2回目の送信で項目が2回保存されることがあります。
レスポンス
リクエストが成功すると、200 とともに、ストリームごとの新しい項目の件数が返ります。already_accepted は、以前のリクエストですでに届いていた項目の件数です。
エラー
取り込みキーが無効または無効化済みの場合は、401 が返ります。別のプロジェクトのキーでも 401 が返ります。
422 とコード validation_failed が返ります。error フィールドは、違反したルールを示します。next フィールドは、リクエストの直し方を示します。たとえば、"items": [] では次の結果が返ります。
422 とエラー native telemetry envelope exceeds the item limit が返ります。512件以下のバッチに分けてください。各バッチで、プロジェクトと共通のコンテキストを同じにします。
使用量の上限、レート制限、サービスの障害については、返された code を API エラーで確認し、その指示に従います。
