Table of Contents [expand]
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2025年09月10日(水)
この記事では、Heroku の OpenTelemetry (OTel) のシグナルと属性について説明します。OpenTelemetry を初めて使用する場合は、以下の追加記事をご覧ください。
シグナル
Heroku テレメトリーは、OpenTelemetry フレームワークを活用して、アプリケーションに対する包括的なオブザーバビリティを実現します。以下のソースからシグナルを収集して、全体像を提供します。
- アプリケーションテレメトリー: Heroku はデフォルトで、実行中のすべてのアプリケーションについて、アプリケーション関連のメトリクスを提供します。ユーザーは OpenTelemetry gRPC や HTTP エクスポーターを通じて、アプリケーションから追加のトレース、メトリクス、ログを送信できるほか、すべての
stdout とstderr のログも送信できます。 - ファーストパーティサービスのテレメトリー: Heroku 独自のサービスとアドオンの可視性を提供します。Heroku Platform API からのログに加え、Heroku ルーターからのメトリクス、トレース、ログを提供します。また、Heroku Key-Value、Heroku Postgres、Heroku Scheduler、Apache Kafka on Heroku などのアドオンからのログも提供します。
その他の言語固有のテレメトリーデータについては、いずれかのオープンソース SDK を使用してアプリケーションに計測機能を実装します。
属性は、シグナルに関する追加のコンテキストやメタデータを提供します。次のシグナルや属性が利用可能かどうかは、アプリケーションの構成によって異なります。
共通のリソース属性
これらの属性は、リソース属性レベルですべてのアプリケーションシグナルに自動的に追加され、ユーザーが構成することはできません。
これらの属性はログ、メトリック、トレースの各レベルで設定できますが、シグナルをエクスポートするときに、その値がリソースレベルの属性を上書きしてしまう可能性があります。
サービス属性
Heroku は、すぐに使用できる包括的なテレメトリーを提供し、[セマンティック規則](https://opentelemetry.io/docs/specs/semconv/)に準拠することで一貫性を確保しています。[サービス](https://opentelemetry.io/docs/specs/semconv/registry/attributes/service/)レベル属性はすべてのテレメトリーに自動的に追加され、ユーザーはこれらの属性をアプリケーション内で構成できます。 アプリケーションテレメトリーの場合、アプリケーションコード内で OpenTelemetry (OTel) エクスポーターを使用してサービスレベルの属性を設定し、トレース、ログ、メトリクスなどをエクスポートできます。ただしこれらの属性については、`OTEL_RESOURCE_ATTRIBUTES` および `OTEL_SERVICE_NAME` の環境設定を指定して、アプリケーション自体で構成することをお勧めします。ファーストパーティのサービスシグナルをカスタマイズすることはできません。 | 名前 | 種類 | 説明 | 例 | ユーザー設定の可否 | | :—- | :—- | :—- | :—- | :—- | | **service.instance.id** | *文字列* | dyno の一意識別子 | `“web-12a34bcd56-7efgh”` | 不可、Heroku が提供する値 | | **service.name** | *文字列* | アプリケーションのサービス名 (設定されていない場合は、デフォルトでアプリケーション名) | `“my-service-app”` | 可能、Heroku がデフォルトを提供 | | **service.namespace** | *文字列* | サービス名の名前空間名 | `“my-test-namespace”` | 可能、Heroku がデフォルトを提供 | | **service.version** | *文字列* | テレメトリーが生成された時点のアプリリリースのバージョン | `“v19”` | 可能、Heroku がデフォルトを提供 |Heroku クラウドプロバイダー属性
上記のサービス属性に加えて、Heroku はすべてのテレメトリーデータにクラウドプロバイダー固有の情報を自動的に追加します。これらの属性は固定されており、明記されていない限りカスタマイズできません。
| 名前 | 種類 | 説明 | 例 | ユーザー設定の可否 |
|---|---|---|---|---|
| cloud.provider | 文字列 | クラウドプロバイダーの名前、すべてのシグナルに表示される | "heroku" |
不可、Heroku が提供するデフォルト |
| heroku.app.id | 文字列 | アプリの一意識別子 | "9daa2797-e49b-4624-932f-ec3f9688e3da" |
不可、Heroku が提供する値 |
| heroku.app.name | 文字列 | アプリケーション名 | "test-app" |
可能、アプリケーションの作成時または名前の変更時に設定 |
| heroku.release.id | 文字列 | アプリリリースの一意識別子 | "release-afc4d88c-7d89-4bc6-b364-7658cd60ba57" |
不可、Heroku が提供する値 |
| heroku.release.version | 文字列 | テレメトリーが生成された時点のアプリリリースのバージョン | "v19" |
不可、Heroku が提供する値 |
| heroku.workload.id | 文字列 | プロセスタイプによって定義されるワークロード識別子 | "web" |
不可、Heroku が提供する値 |
アプリケーションテレメトリー
Dyno ランタイム関連のメトリクス
Heroku は Dyno レベルのメトリクスを補足します。[コンテナメトリクス](https://opentelemetry.io/docs/specs/semconv/system/container-metrics/)のセマンティック規則に従います。 | 名前 | 種類 | 説明 | 例 | ユーザー設定の可否 | | :—- | :—- | :—- | :—- | :—- | | **container.cpu\_usage** | *ゲージ* | Dyno の CPU 使用率 (容量に対する割合) | `0.00029895` | 不可、Heroku が提供する値 | | **container.memory.available** | *ゲージ* | 利用可能な Dyno メモリ (バイト単位) | `530911232` | 不可、Heroku が提供する値 | | **container.memory.usage** | *ゲージ* | Dyno の合計メモリ使用量 (バイト単位) | `6291456` | 不可、Heroku が提供する値 | | **container.uptime** | *合計* | Dyno が起動してからの経過時間 (秒) | `348223` | 不可、Heroku が提供する値 | JSON Dyno メトリクスの例: “`json { "resource_schema_url”:null, “resource_attributes”:{ “heroku.app.id”:“c3d3df33-8afb-4323-ac49-a9bf41a50dd1”, “heroku.workload.id”:“web”, “heroku.release.version”:“v6”, “service.version”:“v6”, “heroku.release.id”:“release-3bd90b80-16a1-4f5b-9465-a61e1b7464d4”, “cloud.provider”:“heroku”, “service.instance.id”:“web-67dbf78464-q6kc6”, “heroku.app.name”:“test-app”, “service.namespace”:“test-namespace”, “service.name”:“test-app” }, “scope_metrics”:[ { “scope_schema_url”:null, “instrumentation_scope”:“github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kubeletstatsreceiver 0.0.9”, “metrics”:[ { “descriptor”:{ “name”:“container.memory.available”, “description”:“Container memory available”, “unit”:“By”, “data_type”:“Gauge” }, “number_data_points”:[ { “start_timestamp”:“2025-08-13T20:23:20Z”, “timestamp”:“2025-08-13T20:45:15.767066105Z”, “value”:460095488 } ] }, { “descriptor”:{ “name”:“container.memory.usage”, “description”:“Container memory usage”, “unit”:“By”, “data_type”:“Gauge” }, “number_data_points”:[ { “start_timestamp”:“2025-08-13T20:23:20Z”, “timestamp”:“2025-08-13T20:45:15.767066105Z”, “value”:76775424 } ] }, { “descriptor”:{ “name”:“container.uptime”, “description”:“The time since the container started”, “unit”:“s”, “data_type”:“Sum”, “is_monotonic”:true, “aggregation_temporality”:“Cumulative” }, “number_data_points”:[ { “start_timestamp”:“2025-08-13T20:23:20Z”, “timestamp”:“2025-08-13T20:45:15.767066105Z”, “value”:1315 } ] }, { “descriptor”:{ “name”:“container.cpu.usage”, “description”:“Container cpu utilization as a ratio of the container’s limits”, “unit”:“1”, “data_type”:“Gauge” }, “number_data_points”:[ { “start_timestamp”:“2025-08-13T20:23:20Z”, “timestamp”:“2025-08-13T20:45:15.767066105Z”, “value”:0.001771 } ] } ] } ] } “`ルーターシグナル
Heroku ルーターは Web アプリケーションのトラフィックを管理し、受信した HTTP リクエストを Heroku プラットフォーム内の適切な Web dyno に自動的に送信します。ルーターはさまざまなシグナルを出力します。
ルータートレーススパン
ルーターのトレースには、service.name 属性が常に heroku-router に設定されています。標準的な Heroku 属性に加えて、リクエストに関連する固有の追加属性も含まれます。
| 名前 | 種類 | 説明 | 例 | ユーザー設定の可否 |
|---|---|---|---|---|
| client.address | 文字列 | 転送元クライアントの IP アドレス | "204.14.236.213” | 不可、Heroku が提供する値 |
| heroku.router.connect | double | 接続を確立するのにかかった時間 (ミリ秒) | 0.000873262 | 不可、Heroku が提供する値 |
| heroku.router.service | double | リクエストを処理するのにかかった時間 (ミリ秒) | 0.000621714 | 不可、Heroku が提供する値 |
| http.request.method | 文字列 | データリクエストの種類 | “GET” | 不可、Heroku が提供する値 |
| http.response.status_code | 整数 | HTTP ステータスコード | 200 | 不可、Heroku が提供する値 |
| http.response.body.size | 整数 | レスポンスのサイズ (バイト単位) | 8826 | 不可、Heroku が提供する値 |
| server.address | 文字列 | HTTP リクエストの送信先のホスト識別子 | “example-app.com” | 不可、Heroku が提供する値 |
| tls.protocol.version | 文字列 | TLS プロトコルのバージョン | “tls1.3” | 不可、Heroku が提供する値 |
JSON ルータートレースの例:
{
"resource_schema_url":"https://opentelemetry.io/schemas/1.6.1",
"resource_attributes":{
"heroku.dyno.id":"web-67dbf78464-q6kc6",
"service.instance.id":"web-67dbf78464-q6kc6",
"heroku.app.id":"c3d3df33-8afb-4323-ac49-a9bf41a50dd1",
"heroku.workload.id":"web",
"heroku.release.version":"v6",
"service.version":"v6",
"heroku.release.id":"release-3bd90b80-16a1-4f5b-9465-a61e1b7464d4",
"cloud.provider":"heroku",
"heroku.app.name":"test-app",
"service.namespace":"test-namespace",
"service.name":"test-app"
},
"scope_spans":[
{
"scope_schema_url":null,
"instrumentation_scope":"heroku-router",
"spans":[
{
"trace_id":"4b26d26a52bcf26c31f9637a350c5df9",
"parent_id":null,
"id":"147c90133ba98656",
"name":"customer.request",
"kind":"internal",
"start_time":"2025-08-13T21:18:57.589468318Z",
"end_time":"2025-08-13T21:18:57.59109646Z",
"status_code":1,
"status_message":null,
"attributes":{
"client.address":"20.171.207.158",
"duration_ms":1.628142,
"heroku.router.connect":0.000873262,
"heroku.router.service":0.000621714,
"http.request.method":"GET",
"http.response.body.size":19,
"http.response.status_code":404,
"network.protocol.name":"http",
"server.address":"test-app-996f3244724d.redbud-virginia.herokuapp.com",
"span.num_events":0,
"span.num_links":0,
"tls.protocol.version":"tls1.3",
"type":"internal",
"url.path":"/",
"url.query":""
}
}
]
}
]
}
ルーターメトリクス
ルーターメトリクスはリクエスト処理時間の統計情報を提供します。標準の共通属性に加えて、以下の属性も含まれます。service.name は常に heroku-router です。
| 名前 | 種類 | 説明 | 例 | ユーザー設定の可否 |
|---|---|---|---|---|
| http.server.request.duration | ヒストグラム | 受信した HTTP サーバーリクエストの処理時間 (ミリ秒) | 不可、Heroku が提供する値 |
JSON ルーターメトリクスの例:
{
"resource_schema_url":"https://opentelemetry.io/schemas/1.6.1",
"resource_attributes":{
"service.instance.id":"web-67dbf78464-q6kc6",
"heroku.app.id":"c3d3df33-8afb-4323-ac49-a9bf41a50dd1",
"heroku.workload.id":"web",
"heroku.release.version":"v6",
"service.version":"v6",
"heroku.release.id":"release-3bd90b80-16a1-4f5b-9465-a61e1b7464d4",
"cloud.provider":"heroku",
"heroku.app.name":"test-app",
"service.namespace":"test-namespace",
"service.name":"test-app"
},
"scope_metrics":[
{
"scope_schema_url":null,
"instrumentation_scope":"otel-logger",
"metrics":[
{
"descriptor":{
"name":"http.server.request.duration",
"description":"The duration of incoming HTTP requests.",
"unit":"ms",
"data_type":"Histogram"
},
"summary_data_points":[
{
"time":"2025-08-13T21:19:27Z",
"sum":0.001518499,
"count":1,
"quantile_values":[
{
"quantile":0.001,
"value":0.0015184986321850637
},
{
"quantile":0.01,
"value":0.0015184986321850637
},
{
"quantile":0.05,
"value":0.0015184986321850637
},
{
"quantile":0.1,
"value":0.0015184986321850637
},
{
"quantile":0.2,
"value":0.0015184986321850637
},
{
"quantile":0.25,
"value":0.0015184986321850637
},
{
"quantile":0.5,
"value":0.0015184986321850637
},
{
"quantile":0.75,
"value":0.0015184986321850637
},
{
"quantile":0.8,
"value":0.0015184986321850637
},
{
"quantile":0.9,
"value":0.0015184986321850637
},
{
"quantile":0.95,
"value":0.0015184986321850637
},
{
"quantile":0.99,
"value":0.0015184986321850637
},
{
"quantile":0.999,
"value":0.0015184986321850637
}
]
}
]
}
]
}
]
}
ルーターログ
ルーターログには、標準的な Heroku 属性に加えて、以下の属性も含まれます。`service.name` は常に `heroku-router` です。 | 名前 | 種類 | 説明 | 例 | ユーザー設定の可否 | | :—- | :—- | :—- | :—- | :—- | | **body** | *文字列* | ルーターログの本文 | “at=info method=GET path=\”/js/twint\_ch.js\“ …” | 不可、Heroku が提供する値 | | **span\_id** | *文字列* | 処理スパンの一意識別子 | “051581bf3cb55c13”, | 不可、Heroku が提供する値 | | **trace\_id** | *文字列* | トレースの一意識別子 | “a7d348b6311009c36dda66fd7e6b0685” | 不可、Heroku が提供する値 | | **severity\_number** | *整数* | 重要度の数値 | 9 | 不可、Heroku が提供する値 | | **severity\_text** | *文字列* | イベントの重要度**例**: “Critical"、"Warning"、"Info” | “Info” | 不可、Heroku が提供する値 | JSON ルーターログの例: “`json { "resource_schema_url”:“https://opentelemetry.io/schemas/1.6.1”, “resource_attributes”:{ “service.instance.id”:“web-67dbf78464-q6kc6”, “heroku.app.id”:“c3d3df33-8afb-4323-ac49-a9bf41a50dd1”, “heroku.workload.id”:“web”, “heroku.release.version”:“v6”, “service.version”:“v6”, “heroku.release.id”:“release-3bd90b80-16a1-4f5b-9465-a61e1b7464d4”, “cloud.provider”:“heroku”, “heroku.app.name”:“test-app”, “service.namespace”:“test-namespace”, “service.name”:“test-app” }, “scope_logs”:[ { “scope_schema_url”:null, “instrumentation_scope”:“otel-logger”, “log_records”:[ { “observed_timestamp”:“2025-08-13T21:18:57.590973861Z”, “timestamp”:“2025-08-13T21:18:57.590973861Z”, “severity_text”:“info”, “severity_number”:9, “body”:“at=info method=GET path="/" host=test-app-996f3244724d.test.herokuapp.com”, “attributes”:{ “library.name”:“heroku-router”, “meta.annotation_type”:“span_event”, “flags”:“1” }, “trace_id”:“4b26d26a52bcf26c31f9637a350c5df9”, “span_id”:“147c90133ba98656” } ] } ] } “`
Heroku Platform API のログ
プラットフォームログ
Heroku Platform API のログには、Dyno のスケーリングやその他の管理コマンドなど、アプリケーションで実行された管理操作が記録されます。Heroku API プラットフォームのすべてのシグナルをフィルタリングするには、service.name 属性に値 heroku-api を指定します。
| 名前 | 種類 | 説明 | 例 | ユーザー設定の可否 |
|---|---|---|---|---|
| body | 文字列 | API ログの本文 | "Release v6 created by user heroku-postgresql@addons.heroku.com" |
不可、Heroku が提供する値 |
| cloud.provider | 文字列 | クラウドプロバイダーの名前、すべてのシグナルに表示される | "heroku" |
不可、Heroku が提供するデフォルト |
| heroku.app.id | 文字列 | アプリの一意識別子 | "9daa2797-e49b-4624-932f-ec3f9688e3da" |
不可、Heroku が提供する値 |
| heroku.app.name | 文字列 | アプリケーション名 | "test-app" |
可能、アプリケーションの作成時または名前の変更時に設定 |
| service.name | 文字列 | シグナル発信元のサービス名 | "heroku-api" |
不可、Heroku が提供する値 |
| service.namespace | 文字列 | アプリケーションのサービス名前空間 | "test-namespace" |
不可、Heroku が提供する値 |
| severity_number | 整数 | 重要度の数値 | 9 |
不可、Heroku が提供する値 |
| severity_text | 文字列 | イベントの重要度 例: "Critical"、"Warning"、"Info” |
"Info" |
不可、Heroku が提供する値 |
JSON Heroku Platform API のログの例:
{
"resource_schema_url":null,
"resource_attributes":{
"service.name":"heroku-api",
"cloud.provider":"heroku",
"heroku.app.name":"test-app",
"heroku.app.id":"c3d3df33-8afb-4323-ac49-a9bf41a50dd1",
"service.namespace":"test-namespace"
},
"scope_logs":[
{
"scope_schema_url":null,
"instrumentation_scope":null,
"log_records":[
{
"observed_timestamp":"1970-01-01T00:00:00Z",
"timestamp":"2025-08-13T20:58:50Z",
"severity_text":"Info",
"severity_number":9,
"body":"Release v6 created by user heroku-postgresql@addons.heroku.com",
"flags":0
}
]
}
]
}
その他のファーストパーティサービスのシグナル
アプリケーションに関連するシグナルは、ファーストパーティのアドオンからも送信されます。アプリケーションから直接発信されるものに加え、これらのシグナルには発信元のサービスを示す service.name 属性が含まれています。
heroku-postgresql: Heroku Postgres のログheroku-redis: Heroku Key-Value Store のログheroku-kafka: Apache Kafka on Heroku のログscheduler: Heroku Scheduler のログ
Heroku Postgres
Postgres のサービスログとメトリクスログ
Heroku が提供するマネージド SQL データベースサービスである Heroku Postgres は、実行されたクエリ、接続、インスタンスの状態など、すべての PostgreSQL ログを補足します。Heroku Postgres のすべてのシグナルをフィルタリングするには、service.name 属性に値 heroku-postgresql を指定します。
| 名前 | 種類 | 説明 | 例 | ユーザー設定の可否 |
|---|---|---|---|---|
| body | 文字列 | API ログの本文 | "at=info method=GET path=\"/js/twint_ch.js\" ..." |
不可、Heroku が提供する値 |
| cloud.provider | 文字列 | クラウドプロバイダーの名前、すべてのシグナルに表示される | "heroku" |
不可、Heroku が提供するデフォルト |
| heroku.app.id | 文字列 | アプリの一意識別子 | "9daa2797-e49b-4624-932f-ec3f9688e3da" |
不可、Heroku が提供する値 |
| heroku.app.name | 文字列 | アプリケーション名 | "test-app" |
可能、アプリケーションの作成時または名前の変更時に設定 |
| service.name | 文字列 | シグナル発信元のサービス名 | "heroku-postgresql" |
不可、Heroku が提供する値 |
| service.namespace | 文字列 | アプリケーションのサービス名前空間 | "test-namespace" |
不可、Heroku が提供する値 |
| severity_number | 整数 | 重要度の数値 | 9 |
不可、Heroku が提供する値 |
| severity_text | 文字列 | イベントの重要度 次のいずれか: “Critical"、"Warning"、"Info” |
"Info" |
不可、Heroku が提供する値 |
JSON Heroku Postgres のログの例:
{
"resource_schema_url":null,
"resource_attributes":{
"service.name":"heroku-postgresql",
"cloud.provider":"heroku",
"heroku.app.name":"test-app",
"heroku.app.id":"c3d3df33-8afb-4323-ac49-a9bf41a50dd1",
"service.namespace":"test-namespace"
},
"scope_logs":[
{
"scope_schema_url":null,
"instrumentation_scope":null,
"log_records":[
{
"observed_timestamp":"1970-01-01T00:00:00Z",
"timestamp":"2025-08-13T20:58:50Z",
"severity_text":"Info",
"severity_number":9,
"body":"source=HEROKU_POSTGRESQL_ORANGE addon=postgresql-curved-71720 sample#service-available=1 sample#current_transaction=774 sample#db_size=7957651bytes sample#db-max-size=68719476736bytes sample#db-size-percentage-used=0.00012 sample#tables=0 sample#active-connections=12 sample#waiting-connections=0 sample#max-connections=200 sample#connections-percentage-used=0.06000 sample#index-cache-hit-rate=0 sample#table-cache-hit-rate=0 sample#load-avg-1m=0.02 sample#load-avg-5m=0.005 sample#load-avg-15m=0.01 sample#read-iops=0 sample#write-iops=0.031579 sample#max-iops=3000 sample#iops-percentage-used=0.00001 sample#tmp-disk-used=543600640 sample#tmp-disk-available=72435191808 sample#memory-total=3944372kB sample#memory-free=2797144kB sample#memory-percentage-used=0.29085 sample#memory-cached=859524kB sample#memory-postgres=24288kB sample#wal-percentage-used=0.04938224410022926 sample#rollback-from=2025-08-19T17:21",
"flags":0
}
]
}
]
}
Heroku Key-Value Store
キー/値のメトリクスログ
Heroku のマネージドキー値ストアである Heroku Key-Value Store は、インスタンスの利用状況を示すログを補足します。Heroku Key-Value インスタンスのすべてのシグナルをフィルタリングするには、service.name 属性に値 heroku-redis を指定します。
| 名前 | 種類 | 説明 | 例 | ユーザー設定の可否 |
|---|---|---|---|---|
| body | 文字列 | API ログの本文 | "at=info method=GET path=\"/js/twint_ch.js\" ..." |
不可、Heroku が提供する値 |
| cloud.provider | 文字列 | クラウドプロバイダーの名前、すべてのシグナルに表示される | "heroku" |
不可、Heroku が提供するデフォルト |
| heroku.app.id | 文字列 | アプリの一意識別子 | "9daa2797-e49b-4624-932f-ec3f9688e3da" |
不可、Heroku が提供する値 |
| heroku.app.name | 文字列 | アプリケーション名 | "test-app" |
可能、アプリケーションの作成時または名前の変更時に設定 |
| service.name | 文字列 | シグナル発信元のサービス名 | "heroku-redis" |
不可、Heroku が提供する値 |
| service.namespace | 文字列 | アプリケーションのサービス名前空間 | "test-namespace" |
不可、Heroku が提供する値 |
| severity_number | 整数 | 重要度の数値 | 9 |
不可、Heroku が提供する値 |
| severity_text | 文字列 | イベントの重要度 例: “Critical"、"Warning"、"Info” |
"Info" |
不可、Heroku が提供する値 |
JSON Heroku Key-Value Store のログの例:
{
"resource_schema_url":null,
"resource_attributes":{
"service.name":"heroku-redis",
"cloud.provider":"heroku",
"heroku.app.name":"test-app",
"heroku.app.id":"c3d3df33-8afb-4323-ac49-a9bf41a50dd1",
"service.namespace":"test-namespace"
},
"scope_logs":[
{
"scope_schema_url":null,
"instrumentation_scope":null,
"log_records":[
{
"observed_timestamp":"1970-01-01T00:00:00Z",
"timestamp":"2025-08-13T20:58:50Z",
"severity_text":"Info",
"severity_number":9,
"body":"source=REDIS addon=redis-amorphous-75821 sample#active-connections=1 sample#max-connections=18 sample#connection-percentage-used=0.05556 sample#load-avg-1m=0.51 sample#load-avg-5m=0.56 sample#load-avg-15m=0.57 sample#read-iops=0 sample#write-iops=0 sample#max-iops=3000 sample#iops-percentage-used=0.00000 sample#memory-total=16167808kB sample#memory-free=6787836kB sample#memory-percentage-used=0.58016 sample#memory-cached=3235532kB sample#memory-redis=4782496bytes sample#hit-rate=1 sample#evicted-keys=0",
"flags":0
}
]
}
]
}
Apache Kafka on Heroku
Kafka のサービスログとメトリクスログ
[Apache Kafka on Heroku](kafka-on-heroku) は、Heroku プラットフォームに統合された、Kafka-as-a-service ソリューションです。Kafka クラスタからメトリクスやログ行を直接取得し、詳細なログを提供します。Apache Kafka on Heroku のすべてのシグナルをフィルタリングするには、`service.name` 属性に値 `heroku-kafka` を指定します。 | 名前 | 種類 | 説明 | 例 | ユーザー設定の可否 | | :—- | :—- | :—- | :—- | :—- | | **body** | *文字列* | API ログの本文 | `“at=info method=GET path="/js/twint_ch.js" …”` | 不可、Heroku が提供する値 | | **cloud.provider** | *文字列* | クラウドプロバイダーの名前、すべてのシグナルに表示される | `“heroku”` | 不可、Heroku が提供するデフォルト | | **heroku.app.id** | *文字列* | アプリの一意識別子 | `“9daa2797-e49b-4624-932f-ec3f9688e3da”` | 不可、Heroku が提供する値 | | **heroku.app.name** | *文字列* | アプリケーション名 | `“test-app”` | 可能、アプリケーションの作成時または名前の変更時に設定 | | **service.name** | *文字列* | シグナル発信元のサービス名 | `“heroku-kafka”` | 不可、Heroku が提供する値 | | **service.namespace** | *文字列* | アプリケーションのサービス名前空間 | `“test-namespace”` | 不可、Heroku が提供する値 | | **severity\_number** | *整数* | 重要度の数値 | `9` | 不可、Heroku が提供する値 | | **severity\_text** | *文字列* | イベントの重要度**例**: “Critical"、"Warning"、"Info” | `“Info”` | 不可、Heroku が提供する値 | JSON Apache Kafka on Heroku のログの例: “`json { "resource_schema_url”:null, “resource_attributes”:{ “service.name”:“heroku-kafka”, “cloud.provider”:“heroku”, “heroku.app.name”:“test-app”, “heroku.app.id”:“c3d3df33-8afb-4323-ac49-a9bf41a50dd1”, “service.namespace”:“test-namespace” }, “scope_logs”:[ { “scope_schema_url”:null, “instrumentation_scope”:null, “log_records”:[ { “observed_timestamp”:“1970-01-01T00:00:00Z”, “timestamp”:“2025-08-13T20:58:50Z”, “severity_text”:“Info”, “severity_number”:9, “body”:“source=KAFKA addon=kafka-defined-62412 sample#load-avg-1m=0.015 sample#load-avg-5m=0.0425 sample#load-avg-15m=0.0225 sample#read-iops=0 sample#write-iops=0.32099 sample#memory-total=16083140kB sample#memory-free=10618472kB sample#memory-percentage-used=0.33978 sample#memory-cached=655372kB sample#bytes-in-per-second=0.0 sample#bytes-out-per-second=0.0”, “flags”:0 } ] } ] } “`
Heroku Scheduler
スケジューラログ
Heroku Scheduler は、cron ジョブと同様に、アプリケーション上で、ユーザーがスケジュール済みのジョブを実行できるアドオンです。スケジュール済みのタスクによって生成されたすべてのログには共通のリソース属性が含まれており、heroku.workload.id 属性に値 scheduler を指定することでフィルタリングできます。
JSON Heroku Scheduler のログの例:
{
"resource_schema_url":null,
"resource_attributes":{
"service.instance.id":"scheduler-68d8d6dc59-vhjr9",
"heroku.app.id":"c3d3df33-8afb-4323-ac49-a9bf41a50dd1",
"heroku.workload.id":"scheduler",
"heroku.release.version":"v6",
"service.version":"v6",
"heroku.release.id":"release-3bd90b80-16a1-4f5b-9465-a61e1b7464d4",
"cloud.provider":"heroku",
"heroku.app.name":"test-app",
"service.namespace":"test-namespace",
"service.name":"test-app"
},
"scope_logs":[
{
"scope_schema_url":null,
"instrumentation_scope":null,
"log_records":[
{
"observed_timestamp":"2025-08-13T20:44:39.732192581Z",
"timestamp":"2025-08-13T20:44:39.591629411Z",
"severity_text":"INFO",
"severity_number":9,
"body":"Test task",
"attributes":{
"logtag":"F",
"log.iostream":"stdout"
},
"trace_id":null,
"span_id":null,
"flags":0
}
]
}
]
}