ログ
ログ API は、イベントを Telemetry に取り込む方法です。アプリケーション イベント、ユーザー アクティビティ、メトリクス、または構造化ログに使用します。
Telemetry は保存前にテーブル名とタイムスタンプを正規化し、null 値、空のオブジェクト、空の配列を削除します。
投稿 https://api.telemetry.sh/log
ヘッダー
| 名前 | タイプ | 説明 |
|---|---|---|
| コンテンツタイプ | 文字列 | アプリケーション/json |
| 認可 | 文字列 | API キー (生のキーまたは Bearer <key> |
本体
| 名前 | タイプ | 説明 |
|---|---|---|
| テーブル | 文字列 | 宛先テーブル名。 空白はアンダースコアに変換され、英字は小文字になります。正規化後に使用できるのは、小文字のASCII英字、数字、および _ 許可されています。 |
| データ | JSON | イベントペイロード。サポートされるシェイプは、JSON オブジェクト、JSON オブジェクトの配列、JSON オブジェクトにデコードされる JSON 文字列、または JSON オブジェクトとデコードされる JSON 文字列を混合した配列です。 JSON オブジェクト。 |
受け入れられるデータ形状
API は以下を受け入れます:
- 単一の JSON オブジェクト
- JSON オブジェクトの配列
- それ自体が JSON オブジェクトに解析される JSON 文字列
- JSON オブジェクトと、JSON オブジェクトに解析される JSON 文字列を含む配列
API は以下を拒否します。
- 最上位の数値、ブール値、および
null - 配列、数値、ブール値などの非オブジェクト値にデコードされる JSON 文字列
null - 非オブジェクト、非文字列項目を含む配列
- 非オブジェクト値にデコードされる JSON 文字列を含む配列
- JSON ペイロードが 64 レベルより深くネストされている
- 空のイベントバッチ、
data: []
サーバー側の正規化
いつ data JSON オブジェクトが含まれている場合、Telemetry は取り込み前に次のルールを適用します。
- 追加します
timestamp現在の UTC 時刻がない場合はそれに置き換えます - もし
timestampですnull、現在の UTC 時間に置き換えます - もし
timestampUnix タイムスタンプの整数または数値文字列であり、Unix 秒として解釈され、RFC 3339 に変換されます。 - 削除します
timestamp_utc存在する場合 null、空のオブジェクト、空の配列を再帰的に削除します。""、0、falseは保持します。
例:
Telemetry Eventsになるtelemetry_eventstimestamp: 1700000000RFC 3339 タイムスタンプ文字列になります{ "user": "alice", "meta": null }なしで保存されますmeta
cURLでの使用例
Uber 乗車データを という名前のテーブルに送信するには uber_rides cURL を使用すると、次のコマンドを使用できます。
curl -X POST https://api.telemetry.sh/log \
-H "Content-Type: application/json" \
-H "Authorization: $API_KEY" \
-d '{
"table": "uber_rides",
"data": {
"city": "paris",
"price": 42
}
}'
JavaScript SDK の使用
開発者エクスペリエンスを向上させるために、SDK を使用することをお勧めします。 JavaScript SDK の使用方法の例を次に示します。
import telemetry from "telemetry-sh";
telemetry.init("YOUR_API_KEY");
telemetry.log("uber_rides", {
city: "paris",
price: 42
});
一括ロギング
オブジェクトの配列を渡してイベントを一括取り込むこともできます。これは、API へのリクエストの数を制限するのに役立ちます。たとえば、次の代わりに:
telemetry.log("uber_rides", { a: 1 })
次のことができます:
telemetry.log("uber_rides", [{a: 1}, {a: 2}])
これにより、データが 2 行として取り込まれます。
よくあるエラー
400 Bad RequestJSON ボディが無効な場合400 Bad Request正規化後にテーブル名に無効な文字が含まれている場合400 Bad Requestもしdataサポートされている形状ではありませんdataが空の配列の場合は、400 Bad Requestとエラーコードempty_batchを返します。少なくとも1件のイベントを送信してください。ペイロードを小さくしても解決しません。400 Bad RequestJSON 文字列が入っている場合data非オブジェクト値にデコードします400 Bad RequestUnix タイムスタンプがサポートされている範囲外の場合401 UnauthorizedAPI キーが見つからないか無効な場合429 Too Many RequestsAPI キーがゲートウェイのレート制限を超えた場合