Fleet Engine が提供するシンプルなロギング サービスを使用すると、 API リクエストとレスポンス ペイロード。これらのログを使用すると、 モニタリング指標の作成、トラフィック パターンの分析といったタスクが含まれます。
Fleet Engine はログをプラットフォーム ログ からクラウドへ Cloud Logging を使用し、 アクセスするためのロギングツール。
Fleet Engine が記録する内容
Fleet Engine は、複数の情報をクラウド 次のようなロギング:
- 認証済みのすべての REST および gRPC リクエストとレスポンス
- エラー レスポンス
- ドライバが開始した呼び出しからのリクエスト、レスポンス、エラー メッセージ Fleet Engine に統合します。
- サポートされているログタイプでログを分割:
<ph type="x-smartling-placeholder">
- </ph>
- SearchVehicles
利用可能なログ メッセージとスキーマについては、Logging API から リファレンスをご覧ください。
制限付きのログバケットとデフォルトのログバケットを使用してデータ保持ポリシーに準拠する
「制限付き」の使用「default」を指定Google Cloud Storage バケットにより、 データの使用が制限されます。Fleet Engine が収集するログデータには、 Google Maps Platform に送信されるデータは、限られた期間のみ保持できます。 モビリティ サービス仕様に準拠 利用規約。 制限付きデータを許可された期間のみ保持するには、 このようなデータには TOS_RESTRICTED というラベルを付ける必要があります(Fleet Engine はすでにこれを行っています)。 「restricted」という専用バケットに記録されます。
ここで、保持期間を指定したり、 Cloud Logging の設定を使用して有効にします。たとえば、使用制限のあるログは、 30 日間しか保持されません。
制限のない残りのデータはすべて「デフォルト」として記録する保存したり、バケット内で モビリティ サービス固有の条項で定義されているように、長期間保持される) 利用規約 (通常は 1 年間)。「制限付き」の使用「default」を指定バケットは 制限ありと無制限のデータ使用の状況を把握できます
制限のない残りのログデータをすべて「デフォルト」に送信するクラスタ内の 無期限に残ります。
制限付きログと制限なしログを結合して全体像を把握
制限付き使用ログには、使用制限データと、
まとめて検討できるようにします。使用制限のログ
参照としてデフォルトログの insertId を parent_insert_id
に含む
表示されます。このフィールドを使用して、両方のログのデータを結合し、
可視化できます。
利用可能なすべてのログメッセージとスキーマについては、Logging で リファレンスをご覧ください。
Cloud Logging を有効にする
Fleet Engine では、モビリティの新規のお客様に対して自動的にデフォルトのログが有効になります。 2022 年 2 月 10 日に作成されたプロジェクトから始まります。新しい P-MAX キャンペーンを ロギングを有効にするには、[ログ エクスプローラ :
resource.type:"fleetengine.googleapis.com"
そのクエリのログが表示されない場合は、Cloud Logging が 有効にする必要がありますお問い合わせ サポート(ご希望の場合) 有効にします。
制限付き使用ログを有効にする
使用制限付きログは、リクエストに応じて有効になります。Google Cloud コンソールでこれらのログを有効にするには、 次の手順を完了します。
使用制限のあるログを受信できるようにプロジェクトを準備する
- Google Cloud コンソールで、[ログルーター] ページを開きます。
- _Default ロギング バケットを更新して、制限付き使用ログを除外する。
- _Default ロギング バケットを選択し、[シンクを編集] を選択します。
- [シンクに含めないログの選択] で、[追加] をクリックし、
除外」ボタン:
<ph type="x-smartling-placeholder">
- </ph>
- 除外フィルタ名: ExcludeRestrictedLogs
- 除外フィルタ: labels.restriction="TOS_RESTRICTED"
- [シンクを更新] をクリックします。
- 制限付き使用のログを保存するように制限付きロギング バケットを更新する。
- [ログルーター] ページで [シンクの作成] を選択します。
- 次の設定でシンクを作成します。
<ph type="x-smartling-placeholder">
- </ph>
- シンクの詳細:
<ph type="x-smartling-placeholder">
- </ph>
- 名前: RestrictedLogs
- 説明: Routes Fleet Engine の制限付き使用ログ
- シンクの宛先:
<ph type="x-smartling-placeholder">
- </ph>
- シンクサービス: Logging バケット
- ログバケットの選択: 新しいログバケットの作成
<ph type="x-smartling-placeholder">
- </ph>
- 名前: 制限付き
- 説明: Fleet Engine の制限付き使用ログが含まれます。
- 保持期間: 30 日
<ph type="x-smartling-placeholder">
- </ph>
- 注: 保持期間は 30 日以内にする必要があります。
- シンクに含めるログ: 空白のままにします
- シンクに含めないログ: [除外を追加] をクリックします。
<ph type="x-smartling-placeholder">
- </ph>
- 除外フィルタ名: ExcludeNonRestrictedLogs
- 除外フィルタ: NOT(resource.type = "fleetengine.googleapis.com/Fleet"OR resource.type = "fleetengine.googleapis.com/DeliveryFleet") NOT (labels.restriction = "TOS_RESTRICTED")
- [シンクを作成] をクリックします
- シンクの詳細:
<ph type="x-smartling-placeholder">
使用制限のログを有効にするには、サポートにお問い合わせください
その後、 サポートし、 サポート リクエストに以下の情報を含めてください。
- 有効にするプロジェクト ID:
- 変更をリクエストしているユーザーのメールアドレス:
<ph type="x-smartling-placeholder">
- </ph>
- 注: このユーザーには、Google Cloud プロジェクトの編集権限が必要です。 表示されます。
- Cloud Logging で Google マップ コンテンツの使用制限を有効にすると、同意したものとみなされます Google Maps Platform 利用規約とモビリティ サービス 利用規約 (Google に関連するキャッシュや許可された使用要件を含む) マップのコンテンツ。○ / ×
サポートチームがリクエストを受信すると、サポートチームは、 プロジェクトで有効になっている
クラウドログの分割
Cloud Logging では、受信ログのサイズが 256 KB に制限されます。サービスはログを 超えていますCloud Logging でサイズの大きいログを保持できるように、フリート 256 KB のしきい値を下回る一連のログに分割できます。このようなログ 共通する insertId 分割する順序を示す接頭辞は、サービスが新しい 元の特大ログ。元のルールに基づいて再度結合できます。 insertId。
元の分割されていないログにアクセスするには、分割されたログを insertIds 元の順序で分割されます。これは、 Cloud Logging に記録されます。
分割ログの構造は、分割の監査で説明した構造と同じです。
ログエントリ ガイド
Cloud Audit Logs です。フリート ロギングの分割ログの主な違いは、
分割は protoPayload
ではなく jsonPayload
フィールドで行われます。
表示されます。次のセクションに示す分割例をご覧ください。
サポートされているログタイプ
Fleet Engine は、次のログタイプに対してのみログ分割をサポートします。 ログサイズが 256 KB を超える場合:
分割ログの構造の例
// First Split Log
{
// insertId appended with an increasing number
"insertId": "ABCDE-1",
"jsonPayload": {
"response": {
"matches": [
{
// ...
"vehicle": {
"name": "providers/test-123/vehicles/test-vehicle-0",
// ...
}
},
{
// ...
"vehicle": {
"name": "providers/test-123/vehicles/test-vehicle-1",
// ...
}
}
]
},
"@type": "type.googleapis.com/maps.fleetengine.v1.SearchVehiclesLog",
"request": {
"searchTripTypes": [
"EXCLUSIVE_TRIP"
],
"pickupPoint": {},
"count": 50,
"pickupRadiusMeters": 400,
"minimumCapacity": 1,
"matchOrderBy": "PICKUP_POINT_ETA",
"vehicleTypes": [
{
"vehicleCategory": "TAXI"
}
]
}
},
"resource": {
"type": "fleetengine.googleapis.com/Fleet",
"labels": {
"resource_container": "projects/test-123",
"location": "global"
}
},
// Same timestamp
"timestamp": "2024-02-06T22:48:50.620713Z",
"logName": "projects/test-123/logs/fleetengine.googleapis.com%2Fsearch_vehicles",
"receiveTimestamp": "2024-02-06T22:48:52.006308491Z",
"split": {
// UID for this logical log entry (same across splits)
"uid": "ABCDE",
"totalSplits": 2
}
}
// Second Split Log
{
// insertId appended with an increasing number
"insertId": "ABCDE-2",
"jsonPayload": {
"response": {
"matches": [
{},{} // Previous matches appear as empty objects
{
// ...
"vehicle": {
"name": "providers/test-123/vehicles/test-vehicle-2",
// ...
},
}
]
},
"@type": "type.googleapis.com/maps.fleetengine.v1.SearchVehiclesLog",
"request": {
"searchTripTypes": [
"EXCLUSIVE_TRIP"
],
"pickupPoint": {},
"count": 50,
"pickupRadiusMeters": 400,
"minimumCapacity": 1,
"matchOrderBy": "PICKUP_POINT_ETA",
"vehicleTypes": [
{
"vehicleCategory": "TAXI"
}
]
}
},
"resource": {
"type": "fleetengine.googleapis.com/Fleet",
"labels": {
"resource_container": "projects/test-123",
"location": "global"
}
},
// Same timestamp
"timestamp": "2024-02-06T22:48:50.620713Z",
"logName": "projects/test-123/logs/fleetengine.googleapis.com%2Fsearch_vehicles",
"receiveTimestamp": "2024-02-06T22:48:52.006308491Z",
"split": {
// UID for this logical log entry (same across splits)
"uid": "ABCDE",
// Subsequent logs after the original will have a zero based index
"index": 1,
"totalSplits": 2
}
}
ログにアクセスする
Cloud ログは、
LogEntry
使用できます。Fleet Engine は、LogEntry を使用して Cloud Logging にログを送信します。
resource.type
を fleetengine.googleapis.com
に設定しました。[ログ
エクスプローラ
ログを表示するためのクエリを作成します
たとえば、エラーを返した Fleet Engine へのすべての RPC を表示するには、次のコマンドを使用します。 ログ エクスプローラのクエリを実行します。
resource.type:"fleetengine.googleapis.com"
severity=ERROR
UpdateVehicle
メソッドに対して行われた RPC のログを表示するには、
project example-project-id を表示するには、次のログ エクスプローラ クエリを使用します。
logName="projects/project-id/logs/fleetengine.googleapis.com%2Fupdate_vehicle"
次の例は、UpdateVehicle
の LogEntry を示しています。
できます。RPC リクエストとレスポンスは jsonPayload
フィールド内にあります。
{
"insertId": "c6b85fbc927343fc8a85338c57a65733",
"jsonPayload": {
"request": {
"header": {4},
"updateMask": "deviceSettings",
"vehicleId": "uniqueVehicleId",
"vehicle": {2}
},
"response": {
"name": "providers/example-project-id/vehicles/uniqueVehicleId",
"availableCapacity": 2,
"state": "VEHICLE_STATE_OFFLINE",
"maximumCapacity": 2,
"vehicleType": {1},
"supportedTrips": {1}
},
"@type": "type.googleapis.com/maps.fleetengine.v1.UpdateVehicleLog"
},
"resource": {
"type": "fleetengine.googleapis.com/Fleet",
"labels": {2}
},
"timestamp": "2021-01-01T00:00:00.000000000Z",
"labels": {2},
"logName": "projects/example-project-id/logs/fleetengine.googleapis.com%2Fupdate_vehicle",
"receiveTimestamp": "2021-01-01T00:00:00.000000000Z"
}
RPC エラーが返された場合、responseVehicle
フィールド
クリアされ、errorResponse
フィールドが設定され、jsonPayload
内に値が入力されます。
{
"insertId": "c6b85fbc927343fc8a85338c57a65733",
"jsonPayload": {
"errorResponse": {
"httpStatusCode": 404,
"code": "NOT_FOUND",
"message": "No entity with id invalidVehicleId exists"
},
"@type": "type.googleapis.com/maps.fleetengine.v1.UpdateVehicleLog",
"request": {
"vehicle": {3},
"updateMask": "deviceSettings",
"vehicleId": "fakeVehicleId",
"header": {4}
}
},
"resource": {
"type": "fleetengine.googleapis.com/Fleet",
"labels": {2}
},
"timestamp": "2021-01-01T00:00:00.000000000Z",
"severity": "ERROR",
"labels": {2}
"logName": "projects/example-project-id/logs/fleetengine.googleapis.com%2Fupdate_vehicle",
"receiveTimestamp": "2021-01-01T00:00:00.000000000Z"
}
ロギングクエリ言語の詳細については、ロギングクエリをご覧ください 言語。 ログを使用して指標を作成する方法については、概要 フルマネージドの 指標をご覧ください。
ロギングの費用を管理する
ロギングを有効にしたら、組織でロギング方法を設定する必要があります。 ログのルーティング、保存、保持を行います追加の Google Cloud リソースへの ログに対する料金 使用量と保持の上限を超過した場合に、取り込みと保持の 。ただし、ロギングの費用は、次のいずれかの方法で制御できます。
ロギングの使用量を減らす
特定のログエントリを除外することで、ログデータの取り込み量を制限できます。
ログをエクスポートまたはルーティングする
ログを他の Google Cloud または外部の宛先にルーティングして、 取り込みと保存の費用を抑えることができます必ずログ取り込みをオフにしてください。 これについては、次のセクションで説明するとおり、取り込み費用の発生を回避する必要があります。
ログの取り込みを無効にして課金が発生しないようにする
ロギングの使用量を減らすこと、またはログをエクスポートまたはルーティングするほうが、 使用できます。ただし、Fleet Engine ログを使用する予定がない場合は、 取り込みをオフにすることで、Cloud Logging の課金が発生しないようにできます。デフォルトでは Fleet Engine ログは _Default ログバケットにルーティングされます。
次のコマンドは、フリートを取り込みないように _Default ロギング バケットを更新します Engine のログ。
gcloud logging sinks update _Default \
--log-filter='NOT LOG_ID("cloudaudit.googleapis.com/activity") \
AND NOT LOG_ID("externalaudit.googleapis.com/activity") \
AND NOT LOG_ID("cloudaudit.googleapis.com/system_event") \
AND NOT LOG_ID("externalaudit.googleapis.com/system_event") \
AND NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") \
AND NOT LOG_ID("externalaudit.googleapis.com/access_transparency") \
AND NOT resource.type:"fleetengine.googleapis.com"''
詳細については、Cloud Logging をご覧ください。 除外設定と除外 ログをご覧ください。Cloud Logging エクスポートとエクスポート ログ
ログ エクスプローラを使用する
ログ エクスプローラを使用するには、Cloud コンソールを開き、[ロギング] を選択してから、 ログ エクスプローラ。利用可能なすべての Fleet Engine ログのリストを表示するには、 Fleet Engine リソースタイプ。一部の API ログは、トリップ ID と 車両 ID。これらのラベルを使用して、ルートや車両のログを選択できます。 できます。
車両 ID でログをフィルタ
ログ エクスプローラでは、次のクエリを使用して、指定したログにログを 特定の車両:
resource.type="fleetengine.googleapis.com/Fleet"
labels.vehicle_id="vehicle_id"
ルート ID でログをフィルタする
ログ エクスプローラでは、次のクエリを使用して、指定したログにログを ルート:
resource.type="fleetengine.googleapis.com/Fleet"
labels.trip_id=~"trip_id"
特定の期間の車両のログをフィルタする
ログ エクスプローラでは、次のクエリを使用して、ログを目的のものに限定できます。 特定の期間における車両:
resource.type="fleetengine.googleapis.com/Fleet"
labels.vehicle_id="vehicle_id"
timestamp>="2020-09-24T20:00:00.000Z"
timestamp<"2020-09-24T21:00:00.000Z"
ログベースの指標の例
次の例は、ログベースの指標を使用して、指標スコープ内で 一定期間内に作成されたルートが表示されます
Cloud コンソールで、[ロギング]、[ログ エクスプローラ] の順に選択して開きます。 表示されます。次に、以下のフィルタを適用します。
resource.type="audited_resource" resource.labels.method="maps.fleetengine.v1.TripService.ReportBillableTrip"
[クエリ結果] ペインで、[アクション] プルダウンを選択し、 [指標を作成] をクリックします。
[指標エディタ] ダイアログで、次の操作を行います。
- 指標名を指定します(例: billable_trips)。
- 指標の説明を指定します(例: 請求対象のルート数、 呼び出し)。
- [単位] オプションは空白のままにします。_ [タイプ] オプションは、 カウンタ。
次に、[指標を作成] ボタンを選択します。
[ログベースの指標] ページに、 作成され、新しい指標は ユーザー定義指標のセクション。指標が一致するものとして 生成されます。
新しい指標の右側にあるプルダウンを選択して、 [Metrics Explorer で表示する] を選択します。
左側のペインの [クエリの作成] で、リソースタイプを [フリート Engine で billingable_trips 指標を検索します。
右側のグラフは、billingable_trips 呼び出しの割合を示しています。
BigQuery を使用
BigQuery は分析を行うための強力なツールです。データの保存と SQL のようなアドホックなクエリを実行できます。
BigQuery にログを転送する
BigQuery を活用するには、次のように、ログを BigQuery データストアにルーティングする必要があります。 次のようになります。
Cloud コンソールで、[ロギング]、[ログ エクスプローラ] の順に選択します。
Fleet Engine ログを分離するフィルタを作成します。ログのフィールドエクスプローラで Fleetengine.googleapis.com/Fleet リソースタイプを選択します。
[クエリ結果] ペインで、[アクション] プルダウンをクリックし、[作成 シンク。
[シンクサービスの選択] ダイアログで、[BigQuery データセット] を選択します。
[シンクの編集] ダイアログで、次のオプションを指定します。
- シンク名を指定します(例: FleetEngineLogsSink)。
- シンクサービスは [BigQuery] のままにします。
- [パーティション分割テーブルを使用する] オプションを選択します。クエリが増加し 向上します
- [シンクの宛先] で [新しい BigQuery データセットを作成する] を選択し、 BigQuery データセット名(FleetEngineLogs など)を指定します。
- [シンクを作成] ボタンをクリックします。
これで、BigQuery データセットへのログの記録が開始されます。詳しくは、 Cloud コンソールの [BigQuery] セクションで確認できます。
FleetEngineLogs データセットの複数のテーブルにデータが入力されます。 ログタイプごとに 1 つずつ自動的に作成されます。
- CreateVehicle
- GetVehicle
- ListVehicles
- SearchVehicles
- UpdateVehicle
- CreateTrip
- GetTrip
- UpdateTrip
- ListTrips
テーブル名は次のパターンを使用します。
project_id.data_set.log_name
たとえば、プロジェクトの名前が test_project で、データセット名が FleetEngineLogs の場合、CreateTrip テーブルの名前は次のとおりです。
test_project.FleetEngineLogs.fleetengine_googleapis_com_create_trip
クエリの例
このセクションでは、作成できるクエリの例を示します。
1 時間あたりに作成されたルート数
次のクエリは、CreateTrips ログの数をカウントし、グループ化します。 できます。
SELECT TIMESTAMP_TRUNC(timestamp, HOUR) as hour,
count(*) as num_trips_created
FROM
`ProjectId.FleetEngineLogs.fleetengine_googleapis_com_create_trip`
GROUP BY hour
ORDER by hour
車両 1 台 1 時間あたりの経由地数
次のクエリは、車両が運行、または運行停止した停車地の数を生成します。 削減できます
たとえば、このクエリでは過去 1 時間の結果を確認できます。
- 車両 A は 12 時間目に 10 か所の停留所を、13 時間目に 8 か所の停留所を完了しました。
- 車両 B は 11 時間目に 5 か所、12 時間目に 7 か所しか到着していません。
車両 C は 13 時間で 12 駅、14 時間目に 9 駅を完了しました。
SELECT jsonpayload_v1_updatevehiclelog.request.vehicleid AS vehicle, TIMESTAMP_TRUNC(timestamp, HOUR) AS hour, COUNT(*) AS num_stops FROM `ProjectId.FleetEngineLogs.fleetengine_googleapis_com_update__vehicle` WHERE ARRAY_LENGTH(jsonpayload_v1_updatevehiclelog.request.vehicle.remainingvehiclejourneysegments) > 0 AND jsonpayload_v1_updatevehiclelog.request.vehicle.remainingvehiclejourneysegments[ OFFSET (0)].stop.state = 'VEHICLE_STOP_STATE_LOG_ARRIVED' GROUP BY 1, 2 ORDER BY 2
データポータル ダッシュボード
BigQuery はビジネス インテリジェンス ツールと統合でき、ダッシュボードは ビジネス分析のために作成します。
次の例は、路面電車と車両が走行するダッシュボードを作成する方法を示しています。 動きを地図上で可視化できます。
新しいデータポータル ダッシュボードを起動し、データとして BigQuery を選択する 接続します
[カスタムクエリ] を選択し、クエリの対象とする Cloud プロジェクトを選択する できます。
クエリボックスに次のクエリを入力します。
SELECT timestamp, labels.vehicle_id, jsonpayload_v1_updatevehiclelog.response.lastlocation.location.latitude AS lat, jsonpayload_v1_updatevehiclelog.response.lastlocation.location.longitude AS lng FROM `ProjectId.FleetEngineLogs.fleetengine_googleapis_com_update_vehicle`
[グラフの種類] で [バブルマップ] を選択し、位置フィールドを選択します。
[フィールドを作成] を選択します。
フィールドに名前を付け、数式 CONCAT(lat, ",", lng) を追加します。
タイプを [Geo] -> [Latitude, Longitude] に設定します。
ダッシュボードにコントロールを追加して、データをフィルタできます。たとえば、 期間フィルタを使用します。
期間ボックスを編集して、デフォルトの期間を選択します。
車両 ID にプルダウン リスト コントロールを追加できます。
これらのコントロールにより、車両の動きや ルート内の移動を追跡できます