BigQuery로 로그 분석

BigQuery는 분석을 실행하기 위한 강력한 도구입니다. 이를 통해 장기 로그를 저장하고 데이터에 대해 SQL과 유사한 쿼리를 수행할 수 있습니다. BigQuery를 분석에 사용하려면 다음 섹션에 설명된 대로 로그를 BigQuery로 명시적으로 라우팅해야 합니다.

BigQuery로 로그 라우팅

  1. 로그 탐색기에서 Fleet Engine 로그를 격리하는 필터(Fleetengine.googleapis.com/Fleet)를 만듭니다.
  2. 쿼리 결과 창에서 작업 또는 작업 더보기 메뉴를 클릭하고 싱크 만들기를 선택합니다.
  3. 싱크 이름을 지정합니다(예: FleetEngineLogsSink). 다음을 클릭합니다.
  4. 싱크 대상 위치에서 BigQuery 데이터 세트를 선택합니다.
  5. BigQuery 데이터 세트 선택에서 새 BigQuery 데이터 세트 만들기를 선택합니다.
  6. 데이터 세트 만들기 대화상자에 데이터 세트 ID를 입력합니다.
  7. 나머지는 모두 그대로 두고 데이터 세트 만들기를 클릭합니다.
  8. 파티션을 나눈 테이블 사용을 선택합니다. 다음을 클릭합니다.
  9. 싱크에 포함할 로그 선택싱크에서 필터링할 로그 선택 그대로 둡니다.
  10. 싱크 만들기를 클릭합니다.

이제 로그가 BigQuery 데이터 세트를 채우기 시작합니다. 이 작업은 다소 시간이 걸릴 수 있습니다. 지원되는 대상으로 로그 라우팅도 참조하세요.

로그 데이터를 BigQuery로 라우팅하면 FleetEngineLogs 데이터 세트 아래에 로그 유형별로 하나씩 여러 테이블이 자동으로 채워집니다.

  • 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

BigQuery 쿼리 예

다음 쿼리 예는 BigQuery에서 다양한 로그 항목을 검색하는 방법을 보여줍니다.

시간별로 그룹화된 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대당 시간당 정류장 수

    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

예를 들어, 다음 쿼리를 통해 지난 1시간 동안의 다음과 같은 정보를 알 수 있습니다.

  • 차량 A는 12시에 정류장 10개를, 13시에 정류장 8개를 완료했습니다.
  • 차량 B는 11시간에 5개의 정류장을, 12시간에 7개의 정류장을 완료했습니다.
  • 차량 C는 13시간에 12번 정차를 완료했고 14시간에 9번 정차를 완료했습니다.

BigQuery로 라우팅된 로그 보기도 참고하세요.

BigQuery를 Looker Studio와 통합

BigQuery를 비즈니스 인텔리전스 도구와 통합하여 비즈니스 분석용 대시보드를 만들 수 있습니다. Looker Studio를 참고하세요.

다음 예는 경로 및 차량 이동을 지도에 시각화하기 위해 Looker Studio 대시보드를 빌드하는 방법을 보여줍니다.

  1. Looker Studio 대시보드를 실행하고 BigQuery를 데이터 연결로 선택합니다.
  2. 커스텀 쿼리를 선택하고 요금이 청구될 Cloud 프로젝트를 직접 입력하거나 선택합니다.
  3. 쿼리 상자에 다음 쿼리 중 하나를 입력합니다.

주문형 이동 쿼리 예시

    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.TableName.fleetengine_googleapis_com_update_vehicle`

예약된 작업 쿼리 예

    SELECT
    labels.delivery_vehicle_id,
    jsonpayload_v1_updatedeliveryvehiclelog.response.lastlocation.rawlocation.longitude as lat, jsonpayload_v1_updatedeliveryvehiclelog.response.lastlocation.rawlocation.latitude as lng
    FROM `ProjectID.TableName.fleetengine_googleapis_com_update_delivery_vehicle`
  1. 차트 유형을 풍선 지도로 선택한 다음 위치 필드를 선택합니다.
  2. 필드 추가를 선택합니다.
  3. 필드 이름을 지정하고 다음 수식을 추가합니다. CONCAT(lat, ",", lng)
  4. 유형을 지역->위도, 경도로 설정합니다.
  5. 대시보드에 컨트롤을 추가하여 데이터를 필터링할 수 있습니다. 예를 들어 기간 필터를 선택합니다.
  6. 기간 상자를 수정하여 기본 기간을 선택합니다.
  7. vehicle_id드롭다운 목록 컨트롤을 추가할 수 있습니다. 이러한 컨트롤을 사용하면 차량의 움직임이나 이동 내의 움직임을 시각화할 수 있습니다.

Looker Studio 출력 예시:

Looker Studio 출력 예시

다음 단계

데이터 보관 정책을 준수하려면 로그 보관 제한을 참조하세요.