लॉग इन हो रहा है

Fleet Engine, डेटा को लॉग करने की एक आसान सेवा देता है. इसकी मदद से, एपीआई अनुरोधों और रिस्पॉन्स पेलोड को सेव किया जा सकता है. इन लॉग की मदद से, अपने इंटिग्रेशन को डीबग किया जा सकता है, निगरानी करने वाली मेट्रिक बनाई जा सकती हैं, और ट्रैफ़िक पैटर्न का विश्लेषण किया जा सकता है.

Fleet Engine, लॉग को Cloud लॉगिंग को प्लैटफ़ॉर्म लॉग के तौर पर भेजता है. इससे इन्हें ऐक्सेस करने के लिए, क्लाउड लॉग करने वाले टूल का इस्तेमाल किया जा सकता है.

फ़्लीट इंजन क्या लॉग करता है

फ़्लीट इंजन, क्लाउड लॉगिंग को कई तरह की जानकारी भेजता है. जैसे:

  • पुष्टि किए गए सभी REST और gRPC अनुरोध और उनके जवाब
  • गड़बड़ी के जवाब
  • ड्राइवर SDK टूल से Fleet Engine को किए गए कॉल से जुड़े अनुरोध, रिस्पॉन्स, और गड़बड़ी के मैसेज.
  • साथ काम करने वाले लॉग टाइप के लिए स्प्लिट लॉग:

लॉगिंग रेफ़रंस में उपलब्ध लॉग मैसेज और स्कीमा के लिए दस्तावेज़ देखें.

डेटा के रखरखाव की नीतियों का पालन करने के लिए, पाबंदी वाले और डिफ़ॉल्ट लॉग बकेट का इस्तेमाल करें

"सीमित" और "डिफ़ॉल्ट" बकेट का इस्तेमाल करने से, डेटा के सीमित और बिना पाबंदी वाले इस्तेमाल की साफ़ जानकारी मिलती है. मोबिलिटी सेवा की खास शर्तों के मुताबिक, फ़्लीट इंजन Google Maps Platform पर जो लॉग डेटा भेजता है, उसमें से कुछ का रखरखाव कुछ ही समय के लिए किया जा सकता है. यह पक्का करने के लिए कि आप सीमित समय तक सीमित डेटा को बनाए रखें, इस डेटा को TOS_RESTRICTED के रूप में लेबल किया जाना चाहिए (फ़्लीट इंजन पहले से ही ऐसा करता है) और एक खास बकेट में लॉग किया जाना चाहिए, जिसे "पाबंदी" कहा जाता है.

यहां से यह तय किया जा सकता है कि डेटा कितने समय तक सेव रखा जाए. साथ ही, क्लाउड लॉगिंग की सेटिंग का इस्तेमाल करके, खत्म होने की प्रोसेस के दौरान उसे अपने-आप पूरी तरह मिटाया जा सकता है. उदाहरण के लिए, सीमित इस्तेमाल वाले लॉग सिर्फ़ 30 दिनों तक सेव रखे जाने चाहिए.

बचे हुए सारे डेटा को "डिफ़ॉल्ट" बकेट में लॉग करें. ऐसा करने पर, मोबिलिटी सेवा की खास शर्तों (आम तौर पर, एक साल के लिए) में बताई गई ज़्यादा अवधि तक इसे सेव रखा जा सकता है. "सीमित" और "डिफ़ॉल्ट" बकेट का इस्तेमाल करने से, सीमित और बिना पाबंदी वाले डेटा खर्च की साफ़ तस्वीर मिलती है.

पाबंदी वाले और बिना पाबंदी वाले लॉग को मर्ज करके पूरा व्यू पाएं

सीमित इस्तेमाल वाले लॉग में, इस्तेमाल के लिए सीमित डेटा और डिफ़ॉल्ट लॉग का रेफ़रंस होता है, ताकि उन लॉग को एक साथ देखा जा सके. सीमित इस्तेमाल वाले लॉग में, parent_insert_id फ़ील्ड में डिफ़ॉल्ट लॉग का InsertId, रेफ़रंस के तौर पर शामिल होता है. दोनों लॉग का डेटा जोड़ने और पूरी जानकारी पाने के लिए, इस फ़ील्ड का इस्तेमाल किया जा सकता है.

लॉगिंग रेफ़रंस में सभी उपलब्ध लॉग मैसेज और स्कीमा के लिए दस्तावेज़ देखें.

क्लाउड लॉगिंग चालू करना

Fleet Engine, मोबिलिटी ग्राहकों के नए ग्राहकों के लिए डिफ़ॉल्ट लॉग को अपने-आप चालू करता है. यह सुविधा 10 फ़रवरी, 2022 को बनाए गए प्रोजेक्ट के साथ शुरू की जाती है. लॉग एक्सप्लोरर में इस क्वेरी का इस्तेमाल करके पुष्टि की जा सकती है कि लॉग इन करने की सुविधा चालू है या नहीं :

resource.type:"fleetengine.googleapis.com/DeliveryFleet"

अगर आपको उस क्वेरी के लिए कोई लॉग नहीं दिखता है, तो हो सकता है कि आपके प्रोजेक्ट के लिए Cloud Logging को चालू न किया गया हो. इस सुविधा को चालू करने के लिए, सहायता टीम से संपर्क करें.

प्रतिबंधित-इस्तेमाल के लॉग चालू करें

अनुरोध करने पर, सीमित इस्तेमाल के लॉग चालू कर दिए गए हैं. अगर आपको अपने Google Cloud प्रोजेक्ट के लिए ये लॉग चालू करने हैं, तो यह तरीका अपनाएं:

सीमित इस्तेमाल वाले लॉग पाने के लिए अपना प्रोजेक्ट तैयार करें

  1. Google Cloud कंसोल में, लॉग राऊटर पेज खोलें.
  2. सीमित इस्तेमाल वाले लॉग को शामिल न करने के लिए, _Default लॉगिंग बकेट को अपडेट करें.
    1. _डिफ़ॉल्ट लॉगिंग बकेट चुनें और फिर सिंक में बदलाव करें चुनें.
    2. "सिंक से बाहर फ़िल्टर करने के लिए लॉग चुनें" सेक्शन पर, "एक्सक्लूज़न जोड़ें" बटन पर क्लिक करें:
      1. बाहर रखे गए उपयोगकर्ताओं के लिए फ़िल्टर का नाम: extraप्रतिबंधितLogs
      2. बाहर रखने का फ़िल्टर: labels.restriction="TOS_RESTRICTED"
    3. "सिंक अपडेट करें" पर क्लिक करें.
  3. सीमित इस्तेमाल वाले लॉग को सेव करने के लिए, पाबंदी वाले लॉगिंग बकेट को अपडेट करें.
    1. लॉग राऊटर पेज पर, "सिंक बनाएं" चुनें.
    2. इन सेटिंग की मदद से सिंक बनाएं:
      1. सिंक की जानकारी:
        1. नाम: RestrictedLogs
        2. ब्यौरा: Routes Fleet Engine के सीमित इस्तेमाल वाले लॉग
      2. सिंक करने का डेस्टिनेशन:
        1. सिंक सेवा: डेटा लॉग करने की बकेट
        2. लॉग बकेट चुनें: नई लॉग बकेट बनाएं
          1. नाम: प्रतिबंधित
          2. जानकारी: इसमें Fleet Engine के प्रतिबंधित लॉग शामिल हैं
        3. निजी डेटा के रखरखाव की अवधि: 30 दिन
          1. ध्यान दें: डेटा के रखरखाव की समयसीमा 30 दिनों से ज़्यादा नहीं होनी चाहिए.
      3. सिंक में शामिल करने के लिए लॉग: खाली छोड़ें
      4. सिंक को फ़िल्टर करने के लिए लॉग: "एक्सक्लूज़न जोड़ें" पर क्लिक करें
        1. बाहर रखने के लिए फ़िल्टर का नाम: डालेंNonप्रतिबंधितLogs
        2. बाहर रखने के लिए फ़िल्टर: NOT (resource.type = "fleetengine.googleapis.com/Fleet" OR संसाधन.type = "fleetengine.googleapis.com/deliveryFleet") NOT (labels.restriction = "TOS_RESTRICTED")
      5. "सिंक बनाएं" पर क्लिक करें

सीमित इस्तेमाल के लॉग को चालू करने के लिए सहायता टीम से संपर्क करें

इसके बाद, सहायता टीम से संपर्क करें और अपने सहायता अनुरोध में यह जानकारी दें:

  1. चालू करने के लिए प्रोजेक्ट आईडी:
  2. बदलाव का अनुरोध करने वाले व्यक्ति का ईमेल पता:
    1. ध्यान दें: इस व्यक्ति के पास सूची में दिए गए Google Cloud प्रोजेक्ट में बदलाव करने का ऐक्सेस होना चाहिए.
  3. क्लाउड लॉगिंग में प्रतिबंधित इस्तेमाल वाले Google Maps कॉन्टेंट को चालू करने का मतलब है कि आप Google Maps Platform की शर्तों और चलने-फिरने से जुड़ी सेवा की खास शर्तों का पालन करने के लिए सहमत हैं. इसमें कैश मेमोरी और अनुमति के इस्तेमाल से जुड़ी ज़रूरी शर्तें भी शामिल हैं, क्योंकि ये Google Maps कॉन्टेंट से जुड़ी हैं. हां / नहीं

जब सहायता टीम को आपका अनुरोध मिल जाता है, तब वह इस बात की पुष्टि करता है कि आपके प्रोजेक्ट के लिए लॉग इन चालू हो गया है

क्लाउड लॉग को बांटें

क्लाउड लॉगिंग, इनकमिंग लॉग का साइज़ 256 केबी तक सीमित करता है. सेवा में, इस थ्रेशोल्ड के अलावा लॉग को कम किया जाता है. यह पक्का करने के लिए कि 'क्लाउड लॉगिंग' में बड़े लॉग सुरक्षित रहें, फ़्लीट इंजन उन्हें 256 केबी की सीमा के अंदर लॉग की सीरीज़ में बांट सकता है. ऐसे लॉग में एक सामान्य insertId प्रीफ़िक्स होता है, जो उस क्रम को दिखाता है जिसमें सेवा, बड़े साइज़ के ओरिजनल लॉग से छोटे लॉग को बांटती है. इसके बाद, उनके insertId के आधार पर, उन्हें एक साथ फिर से शामिल किया जा सकता है.

ओरिजनल अनप्लिट लॉग को ऐक्सेस करने के लिए, स्प्लिट लॉग को उनके insertId के हिसाब से उस क्रम में मर्ज करें जिस क्रम में उन्हें बांटा गया था. यह डेटा, क्लाउड लॉग एंट्री में मौजूद उनके इंडेक्स से पता चलता है.

स्प्लिट लॉग का स्ट्रक्चर, Cloud ऑडिट लॉग के लिए स्प्लिट ऑडिट लॉग एंट्री गाइड में बताए गए स्ट्रक्चर जैसा ही है. फ़्लीट लॉगिंग में स्प्लिट लॉग के बीच मुख्य अंतर यह है कि स्प्लिट protoPayload फ़ील्ड के बजाय, jsonPayload फ़ील्ड में होता है. अगले सेक्शन में, उदाहरण के तौर पर दिया गया स्प्लिट देखें.

साथ काम करने वाले लॉग टाइप

Fleet Engine सिर्फ़ इन लॉग टाइप के लिए, लॉग को अलग-अलग करने की सुविधा देता है. ऐसे लॉग का साइज़ 256 केबी से ज़्यादा होता है:

स्प्लिट लॉग स्ट्रक्चर का उदाहरण

// First Split Log
{
  // insertId appended with an increasing number
  "insertId": "ABCDE-1",
  "jsonPayload": {
    "request": {
      "filter": "tracking_id=tracking-test-splitting-task"
    },
    "@type": "type.googleapis.com/maps.fleetengine.delivery.log.v1.ListTasksLog",
    "response": {
      "tasks": [
        {
          "name": "providers/providers-123/tasks/test-splitting-task-id-0",
          // ...
        },
        {
          "name": "providers/providers-123/tasks/test-splitting-task-id-1",
          // ...
        },
        {
          "name": "providers/providers-123/tasks/test-splitting-task-id-2"
          // ...
        },
        {
          "name": "providers/providers-123/tasks/test-splitting-task-id-3",
          // ...
        },
      ]
    },
    "header": {}
  },
  "resource": {
    "type": "fleetengine.googleapis.com/DeliveryFleet",
    "labels": {
      "resource_container": "projects/providers-123",
      "location": "global"
    }
  },
  // Same timestamp
  "timestamp": "2024-01-29T23:35:58.076515Z",
  "labels": {
  },
  "logName": "projects/providers-123/logs/fleetengine.googleapis.com%2Flist_tasks",
  "receiveTimestamp": "2024-01-29T23:35:59.278858322Z",
  "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": {
    "request": {
      "filter": "tracking_id=tracking-test-splitting-task"
    },
    "@type": "type.googleapis.com/maps.fleetengine.delivery.log.v1.ListTasksLog",
    "response": {
      "tasks": [
         // Previous tasks appear as empty objects in subsequent splits
        {}, {}, {}, {},
        {
          "name": "providers/providers-123/tasks/test-splitting-task-id-4",
          // ...
        }
      ]
    },
    "header": {}
  },
  "resource": {
    "type": "fleetengine.googleapis.com/DeliveryFleet",
    "labels": {
      "resource_container": "projects/providers-123",
      "location": "global"
    }
  },
  // Same timestamp
  "timestamp": "2024-01-29T23:35:58.076515Z",
  "labels": {
  },
  "logName": "projects/providers-123/logs/fleetengine.googleapis.com%2Flist_tasks",
  "receiveTimestamp": "2024-01-29T23:35:59.278858322Z",
  "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
  }
}

अपने लॉग ऐक्सेस करना

क्लाउड लॉग को LogEntry फ़ॉर्मैट के हिसाब से बनाया गया है. Fleet Engine, LogEntry के resource.type को fleetengine.googleapis.com पर सेट करके, Cloud Logging को लॉग भेजता है. अपने लॉग देखने के लिए क्वेरी लिखने के लिए, लॉग एक्सप्लोरर का इस्तेमाल किया जा सकता है.

उदाहरण के लिए, Fleet Engine को ऐसे सभी RPC देखने के लिए जिनसे गड़बड़ी मिली है, इन लॉग एक्सप्लोरर क्वेरी का इस्तेमाल करें:

resource.type:"fleetengine.googleapis.com/DeliveryFleet"
severity=ERROR

प्रोजेक्ट example-project-id के लिए, UpdateDeliveryVehicle तरीके से बनाए गए RPC के लॉग देखने के लिए, इस लॉग एक्सप्लोरर क्वेरी का इस्तेमाल करें:

logName="projects/project-id/logs/fleetengine.googleapis.com%2Fupdate_delivery_vehicle"

इस उदाहरण में, UpdateDeliveryVehicle लॉग के लिए 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.UpdateDeliveryVehicleLog"
      },
      "resource": {
        "type": "fleetengine.googleapis.com/DeliveryFleet",
        "labels": {2}
      },
      "timestamp": "2021-01-01T00:00:00.000000000Z",
      "labels": {2},
      "logName": "projects/example-project-id/logs/fleetengine.googleapis.com%2Fupdate_delivery_vehicle",
      "receiveTimestamp": "2021-01-01T00:00:00.000000000Z"
    }

अगर कोई RPC गड़बड़ी मिलती है, तो responseDeliveryVehicle फ़ील्ड को हटा दिया जाता है और errorResponse फ़ील्ड को सेट कर दिया जाता है और jsonPayload में अपने-आप भर जाता है:

    {
      "insertId": "2ead60bdec561836a1bb84a90e9915cd",
      "jsonPayload": {
        "@type": "type.googleapis.com/maps.fleetengine.delivery.log.v1.UpdateDeliveryVehicleLog",
        "header": {
          "languageCode": "en",
          "osVersion": "11",
          "platform": "PLATFORM_LOG_ANDROID",
          "regionCode": "US",
          "sdkType": "SDK_TYPE_LOG_DRIVER",
          "sdkVersion": "4.4.3"
        },
        "request": {
          "deliveryVehicle": {4},
          "deliveryVehicleId": "uniqueDeliveryVehicleId",
          "updateMask": "lastLocation"
        },
        "response": {
          "lastLocation": {14},
          "name": "providers/example-project-id/deliveryVehicles/uniqueDeliveryVehicleId",
          "navigationStatus": "NAVIGATION_STATUS_ARRIVED_AT_DESTINATION",
          "remainingDistanceMeters": "430",
          "remainingDuration": "10s"
        }
      },
      "labels": {
        "delivery_vehicle_id": "uniqueDeliveryVehicleId"
      },
      "logName": "projects/example-project-id/logs/fleetengine.googleapis.com%2Fupdate_delivery_vehicle",
      "receiveTimestamp": "2023-07-14T22:57:51.156515110Z",
      "resource": {
        "labels": {2},
        "type": "fleetengine.googleapis.com/DeliveryFleet"
      },
      "timestamp": "2023-07-14T22:57:51.018045Z"
    }

लॉग करने वाली क्वेरी की भाषा के बारे में ज़्यादा जानकारी के लिए, क्वेरी की भाषा लॉग करना देखें. मेट्रिक बनाने के लिए लॉग का इस्तेमाल करने का तरीका जानने के लिए, लॉग पर आधारित मेट्रिक की खास जानकारी देखें.

डेटा लॉग करने की लागत मैनेज करना

लॉग इन करने के बाद, आपको यह तय करना होगा कि लॉग को कैसे रूट करना है, सेव करना है, और अपने लॉग को सेव रखना है. अगर आपने डेटा का इस्तेमाल और रखरखाव की सीमा पार कर ली है, तो आपसे Google Cloud में लॉग डेटा डालने और उसका रखरखाव करने के लिए अतिरिक्त शुल्क लिए जा सकते हैं. हालांकि, इनमें से कोई एक तरीका अपनाकर, डेटा लॉग करने की लागत को कंट्रोल किया जा सकता है:

डेटा को लॉग करने की सुविधा का इस्तेमाल कम करें

कुछ लॉग एंट्री को बाहर रखकर, लॉग डेटा डालने के समय को सीमित किया जा सकता है.

लॉग एक्सपोर्ट करें या रूट करें

लॉग को अन्य Google Cloud या बाहरी डेस्टिनेशन पर रूट किया जा सकता है, ताकि डेटा डालने और स्टोरेज की डिफ़ॉल्ट लागतों से बचा जा सके. पक्का करें कि आपने डेटा डालने के शुल्क से बचने के लिए, लॉग में डेटा डालने की सुविधा बंद कर दी हो, जैसा कि अगले सेक्शन में बताया गया है.

शुल्क से बचने के लिए, लॉग में डेटा डालने की सुविधा बंद करें

लॉग का डेटा डालने की सुविधा बंद करने के बजाय, लॉग को एक्सपोर्ट या रूट करने जैसे काम को कम करें. हालांकि, अगर आपको फ़्लीट इंजन लॉग का इस्तेमाल नहीं करना है, तो डेटा डालने की सुविधा बंद करके, क्लाउड लॉगिंग के संभावित शुल्क से बचा जा सकता है. डिफ़ॉल्ट रूप से, Fleet Engine लॉग को _Default लॉग बकेट में रूट किया जाता है.

यह कमांड, _Default लॉगिंग बकेट को अपडेट करता है, ताकि फ़्लीट इंजन लॉग का डेटा इंपोर्ट न किया जा सके.

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 Console खोलें. इसके बाद, लॉगिंग और फिर लॉग एक्सप्लोरर चुनें. सभी उपलब्ध Fleet Engine लॉग की सूची देखने के लिए, Fleet Engine रिसॉर्स टाइप पर क्लिक करें. कुछ डिलीवरी एपीआई लॉग पर टास्क आईडी और डिलीवरी वाहन का आईडी लेबल होता है. अपने पसंदीदा टास्क या वाहनों के लॉग चुनने के लिए, इन लेबल का इस्तेमाल करें.

लेबल को लॉग करें

डिलीवरी वाहन के आईडी के हिसाब से लॉग फ़िल्टर करें

लॉग एक्सप्लोरर में, किसी खास वाहन के लॉग को सीमित करने के लिए इस क्वेरी का इस्तेमाल किया जा सकता है:

    resource.type="fleetengine.googleapis.com/DeliveryFleet"
    labels.delivery_vehicle_id="delivery_vehicle_id"

वाहन फ़िल्टर करें

टास्क आईडी के हिसाब से लॉग फ़िल्टर करें

लॉग एक्सप्लोरर में, लॉग को किसी खास टास्क तक सीमित करने के लिए इस क्वेरी का इस्तेमाल किया जा सकता है:

    resource.type="fleetengine.googleapis.com/DeliveryFleet"
    labels.task_id=~"task_id"

किसी तय समयावधि के हिसाब से वाहन के लॉग फ़िल्टर करें

लॉग एक्सप्लोरर में, किसी खास समयावधि के दौरान किसी वाहन के लॉग को सीमित करने के लिए, इस क्वेरी का इस्तेमाल किया जा सकता है:

    resource.type="fleetengine.googleapis.com/DeliveryFleet"
    labels.delivery_vehicle_id="delivery_vehicle_id"
    timestamp>="2020-09-24T20:00:00.000Z"
    timestamp<"2020-09-24T21:00:00.000Z"

लॉग-आधारित मेट्रिक का उदाहरण

नीचे दिए गए उदाहरण में, समय के साथ बनाए गए टास्क की संख्या को ट्रैक करने के लिए, लॉग-आधारित मेट्रिक का इस्तेमाल करने का तरीका बताया गया है.

  1. लॉग एक्सप्लोरर को खोलने के लिए, Cloud Console में लॉगिंग चुनें. इसके बाद, लॉग एक्सप्लोरर चुनें. इसके बाद, यह फ़िल्टर लगाएं:

    resource.type="fleetengine.googleapis.com/DeliveryFleet" resource.labels.location="global"
    logName="projects/ProjectID/logs/fleetengine.googleapis.com%2Fupdate_task"
    jsonPayload.request.task.taskOutcome="TASK_OUTCOME_LOG_SUCCEEDED"
    jsonPayload.request.updateMask="taskOutcome"
    jsonPayload.response.type= ("TASK_TYPE_LOG_PICKUP" OR "TASK_TYPE_LOG_DELIVERY")
    
  2. क्वेरी के नतीजे वाले पैनल में, कार्रवाई ड्रॉप-डाउन चुनें. इसके बाद, मेट्रिक बनाएं चुनें.

    मेट्रिक बनाएं

  3. मेट्रिक एडिटर डायलॉग में:

    • मेट्रिक को कोई नाम दें. उदाहरण के लिए, billable_tasks.
    • मेट्रिक का ब्यौरा दें, जैसे कि उन टास्क की संख्या जिनकी बिलिंग की जा सकती है.
    • यूनिट विकल्प को खाली छोड़ दें. _ टाइप विकल्प को काउंटर के तौर पर छोड़ें.

    इसके बाद, मेट्रिक बनाएं बटन चुनें.

  4. लॉग-आधारित मेट्रिक पेज पर, आपको यह पुष्टि करने वाला मैसेज दिखेगा कि मेट्रिक बना दी गई है. साथ ही, उपयोगकर्ता की तय की गई मेट्रिक सेक्शन में नई मेट्रिक दिखेगी. मिलते-जुलते लॉग जनरेट होते ही, मेट्रिक में जानकारी अपने-आप भर जाएगी.

  5. नई मेट्रिक के दाईं ओर मौजूद वर्टिकल ड्रॉप-डाउन को चुनें. इसके बाद, मेट्रिक्स एक्सप्लोरर में देखें चुनें.

    मेट्रिक देखें

  6. 'अपनी क्वेरी बनाएं' में बाएं पैनल में, संसाधन टाइप को फ़्लीट इंजन पर सेट करें और Billable_tasks मेट्रिक खोजें.

    खोज मीट्रिक

    दाईं ओर का ग्राफ़, बिल किए जा सकने वाले_टास्क्स कॉल की दर दिखाता है.

BigQuery का इस्तेमाल करना

BigQuery, आंकड़े तैयार करने के लिए एक बेहतरीन टूल है. इसका इस्तेमाल लंबे समय तक चलने वाले लॉग सेव करने और डेटा के लिए ज़रूरत के हिसाब से एसक्यूएल जैसी क्वेरी करने के लिए किया जा सकता है.

लॉग को BigQuery में रूटिंग करना

BigQuery का फ़ायदा लेने के लिए, लॉग को BigQuery डेटास्टोर पर रूट करना ज़रूरी है, जैसा कि यहां बताया गया है:

  1. Cloud Console में, लॉगिंग चुनें. इसके बाद, लॉग एक्सप्लोरर चुनें.

  2. ऐसा फ़िल्टर बनाएं जो Fleet Engine लॉग को अलग करे. लॉग फ़ील्ड एक्सप्लोरर में, Fleetengine.googleapis.com/DeliveryFleet संसाधन टाइप चुनें.

    फ़िल्टर बनाएं

  3. क्वेरी के नतीजे वाले पैनल में, कार्रवाई वाले ड्रॉप-डाउन पर क्लिक करें और सिंक बनाएं चुनें.

    सिंक बनाएं

  4. सिंक सेवा चुनने के डायलॉग बॉक्स में, BigQuery डेटासेट चुनें.

    सिंक चुनें

  5. सिंक में बदलाव करें डायलॉग में, नीचे दिए गए विकल्प चुनें:

    • सिंक का नाम डालें (उदाहरण के लिए, FleetEngineLogsSink).
    • सिंक सेवा को BigQuery के तौर पर छोड़ें.
    • पार्टिशन्ड टेबल का इस्तेमाल करें विकल्प चुनें. इससे क्वेरी की परफ़ॉर्मेंस बेहतर होगी.
    • सिंक डेस्टिनेशन में जाकर, नया BigQuery डेटासेट बनाएं चुनें. इसके बाद, BigQuery डेटासेट का नाम तय करें (उदाहरण के लिए, FleetEngineLogs).
    • सिंक बनाएं बटन पर क्लिक करें.

    सिंक में बदलाव करें

अब आपके लॉग BigQuery डेटासेट में दिखने लगेंगे. Cloud Console के BigQuery सेक्शन में डेटा देखा जा सकता है.

BigQuery
सेक्शन

FleetEngineLogs डेटासेट के तहत कई टेबल अपने-आप भर जाएंगी, जिनमें हर लॉग टाइप के लिए एक टेबल होगी:

  • CreateDeliveryVehicle
  • GetDeliveryVehicle
  • ListDeliveryVehicle
  • UpdateDeliveryVehicle
  • CreateTask
  • GetTask
  • UpdateTask
  • ListTasks
  • SearchTasks

टेबल के नाम में इस पैटर्न का इस्तेमाल किया जाता है:

project_id.data_set.log_name

उदाहरण के लिए, अगर प्रोजेक्ट का नाम test_project है और डेटासेट का नाम FleetEngineLogs है, तो CreateTask टेबल का नाम यह होगा:

test_project.FleetEngineLogs.fleetengine_googleapis_com_create_task

क्वेरी के उदाहरण

इस सेक्शन में उन क्वेरी के उदाहरण दिए गए हैं जिन्हें बनाया जा सकता है.

हर घंटे बनाए गए टास्क

नीचे दी गई क्वेरी, CreateTasks के लॉग की गिनती करती है और उन्हें घंटे के हिसाब से ग्रुप में बांटती है.

    SELECT TIMESTAMP_TRUNC(timestamp, HOUR) as hour,
           count(*) as num_tasks_created
    FROM
    `ProjectId.FleetEngineLogs.fleetengine_googleapis_com_create_task`
    GROUP BY hour
    ORDER by hour

हर घंटे में एक वाहन के स्टॉप की संख्या

नीचे दी गई क्वेरी, उन स्टॉप की संख्या जनरेट करती है जहां वाहन चलाया जा रहा है और इन्हें घंटे के हिसाब से बांटा गया है.

उदाहरण के लिए, इस क्वेरी से पता चल सकता है कि पिछले एक घंटे में:

  • वाहन A ने घंटे 12 में 10 स्टॉप और 13 घंटे में 8 स्टॉप पूरे किए.
  • वाहन B ने घंटे 11 में 5 स्टॉप और 12 घंटे में 7 स्टॉप पूरे किए.
  • वाहन C ने घंटे 13 में 12 स्टॉप और 14 घंटे में 9 स्टॉप पूरे किए.

    SELECT
      jsonpayload_v1_updatedeliveryvehiclelog.request.deliveryvehicleid AS vehicle,
      TIMESTAMP_TRUNC(timestamp, HOUR) AS hour,
      COUNT(*) AS num_stops
    FROM
      `ProjectId.FleetEngineLogs.fleetengine_googleapis_com_update_delivery_vehicle`
    WHERE
    ARRAY_LENGTH(jsonpayload_v1_updatedeliveryvehiclelog.request.deliveryvehicle.remainingvehiclejourneysegments) > 0
    AND jsonpayload_v1_updatedeliveryvehiclelog.request.deliveryvehicle.remainingvehiclejourneysegments[
    OFFSET
    (0)].stop.state = 'VEHICLE_STOP_STATE_LOG_ARRIVED'
    GROUP BY
    1,
    2
    ORDER BY
    2
    

पहली डिलीवरी की सफलता की दर

इस क्वेरी में पहली डिलीवरी में सफल होने का प्रतिशत दिखाया गया है.

    SELECT
     vehicle_id,
     COUNTIF(outcome = "TASK_OUTCOME_LOG_SUCCEEDED") AS num_success,
     COUNT(*) AS total_deliveries,
     COUNTIF(outcome = "TASK_OUTCOME_LOG_SUCCEEDED") * 100/ COUNT(*) AS success_rate
    FROM (
     SELECT
       labels.delivery_vehicle_id AS vehicle_id,
       jsonpayload_v1_updatetasklog.response.trackingid AS trackingid,
       ARRAY_AGG(jsonpayload_v1_updatetasklog.response.taskoutcome
       ORDER BY
         timestamp ASC)[ORDINAL(1)] AS outcome,
     FROM
     `ProjectId.FleetEngineLogsfleetengine_googleapis_com_update_task`
     WHERE
      jsonpayload_v1_updatetasklog.response.type = "TASK_TYPE_LOG_DELIVERY"
     GROUP BY 1, 2
     ORDER BY 1, 2)
    GROUP BY 1
    ORDER BY 1

Datastudio के डैशबोर्ड

BigQuery को बिज़नेस इंटेलिजेंस टूल के साथ इंटिग्रेट किया जा सकता है. साथ ही, कारोबार से जुड़े आंकड़ों के लिए, डैशबोर्ड बनाए जा सकते हैं.

नीचे दिए गए उदाहरण में डैशबोर्ड बनाने का तरीका बताया गया है, जिस पर मैप पर टास्क और गाड़ियों की मूवमेंट को विज़ुअलाइज़ किया जा सकता है.

  1. नया Datastudio डैशबोर्ड लॉन्च करें और डेटा कनेक्शन के तौर पर BigQuery चुनें.

    डेटा
कनेक्शन

  2. कस्टम क्वेरी चुनें और वह क्लाउड प्रोजेक्ट चुनें जिसे बिल करना है.

    प्रोजेक्ट चुनें

  3. क्वेरी बॉक्स में यह क्वेरी डालें.

    क्वेरी डालें

    SELECT
     timestamp,
     labels.delivery_vehicle_id,
    jsonpayload_v1_updatedeliveryvehiclelog.response.lastlocation.rawlocation.latitude AS lat,
    jsonpayload_v1_updatedeliveryvehiclelog.response.lastlocation.rawlocation.longitude AS lng
    FROM
    `ProjectId.FleetEngineLogs.fleetengine_googleapis_com_update_delivery_vehicle`
  1. चार्ट टाइप को बबल मैप के तौर पर चुनें. इसके बाद, जगह की जानकारी वाला फ़ील्ड चुनें.

    चार्ट
टाइप

  2. फ़ील्ड बनाएं चुनें.

    फ़ील्ड
बनाएं

  3. फ़ील्ड को नाम दें और यह फ़ॉर्मूला जोड़ें: CONCAT(lat, ",", lng).

    इसके बाद, टाइप को भौगोलिक->अक्षांश, देशांतर पर सेट करें.

    टाइप सेट करें

  4. डेटा फ़िल्टर करने के लिए, डैशबोर्ड में कंट्रोल जोड़े जा सकते हैं. उदाहरण के लिए, तारीख की सीमा वाला फ़िल्टर चुनें.

    कंट्रोल जोड़ें

  5. तारीख की डिफ़ॉल्ट सीमा चुनने के लिए, तारीख की सीमा वाले बॉक्स में बदलाव करें.

    तारीख
की सीमा

  6. Delivery_vehicle_id के लिए, ड्रॉप-डाउन सूची के अन्य कंट्रोल जोड़ने का विकल्प होता है.

    ड्रॉप-डाउन
सूची

इन कंट्रोल की मदद से, डिलीवरी के दौरान वाहन या मूवमेंट को विज़ुअलाइज़ किया जा सकता है.