مرجع موصل بيانات RestApiPoller للنظام الأساسي للموصل بدون تعليمات برمجية

لإنشاء موصل RestApiPoller بيانات باستخدام Codeless Connector Platform (CCP)، استخدم هذا المرجع كملحق لواجهة برمجة تطبيقات REST ل Microsoft Sentinel لمستندات موصلات البيانات.

يمثل كل dataConnector منها اتصالا محددا لموصل بيانات Microsoft Sentinel. قد يكون لموصل بيانات واحد اتصالات متعددة، والتي تجلب البيانات من نقاط نهاية مختلفة. يتم استخدام تكوين JSON الذي تم إنشاؤه باستخدام هذا المستند المرجعي لإكمال قالب التوزيع لموصل بيانات CCP.

لمزيد من المعلومات، راجع إنشاء موصل بدون تعليمات برمجية لـ Microsoft Azure Sentinel.

موصلات البيانات - إنشاء أو تحديث

راجع عملية الإنشاء أو التحديث في مستندات واجهة برمجة تطبيقات REST للعثور على أحدث إصدار ثابت أو إصدار معاينة لواجهة برمجة التطبيقات. الفرق بين عملية الإنشاء والتحديث هو أن التحديث يتطلب قيمة etag.

أسلوب PUT

https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.OperationalInsights/workspaces/{{workspaceName}}/providers/Microsoft.SecurityInsights/dataConnectors/{{dataConnectorId}}?api-version={{apiVersion}}

معلمات URI

لمزيد من المعلومات حول أحدث إصدار من واجهة برمجة التطبيقات، راجع موصلات البيانات - إنشاء معلمات URI أو تحديثها.

Name ‏‏الوصف
معرف اتصال البيانات يجب أن يكون معرف موصل البيانات اسما فريدا وهو نفس المعلمة name في نص الطلب.
resourceGroupName اسم مجموعة الموارد، وليس حساسا لحالة الأحرف.
subscriptionId معرف الاشتراك الهدف.
اسم مساحة العمل اسم مساحة العمل، وليس المعرف.
نمط Regex: ^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$
إصدار واجهة برمجة التطبيقات إصدار واجهة برمجة التطبيقات لاستخدامه لهذه العملية.

نص الطلب

يحتوي نص الطلب لموصل RestApiPoller بيانات CCP على البنية التالية:

{
   "name": "{{dataConnectorId}}",
   "kind": "RestApiPoller",
   "etag": "",
   "properties": {
        "connectorDefinitionName": "",
        "auth": {},
        "request": {},
        "response": {},
        "paging": "",
        "dcrConfig": ""
   }
}

RestApiPoller

يمثل RestApiPoller موصل بيانات API Poller CCP حيث تقوم بتخصيص البيانات الأساسية للترحيل والتخويل والطلب/الاستجابة لمصدر البيانات.

الاسم مطلوبة نوع ‏‏الوصف
الاسم صواب سلسلة الاسم الفريد للاتصال المطابق لمعلمة URI
النوع صواب سلسلة يجب أن يكونRestApiPoller
etag GUID اتركها فارغة لإنشاء موصلات جديدة. لعمليات التحديث، يجب أن يتطابق etag مع etag للموصل الموجود (GUID).
properties.connectorDefinitionName سلسلة اسم مورد DataConnectorDefinition الذي يعرف تكوين واجهة المستخدم لموصل البيانات. لمزيد من المعلومات، راجع تعريف موصل البيانات.
خصائص.المصادقه صواب JSON المتداخل وصف خصائص المصادقة لاستقصاء البيانات. لمزيد من المعلومات، راجع تكوين المصادقة.
خصائص.طلب صواب JSON المتداخل وصف حمولة الطلب لاستقصاء البيانات، مثل نقطة نهاية واجهة برمجة التطبيقات. لمزيد من المعلومات، راجع تكوين الطلب.
خصائص.استجابه صواب JSON المتداخل وصف عنصر الاستجابة والرسالة المتداخلة التي جرى إرجاعها من واجهة برمجة التطبيقات عند استقصاء البيانات. لمزيد من المعلومات، راجع تكوين الاستجابة.
خصائص.ترحيل الصفحات JSON المتداخل وصف حمولة فصل الصفحات عند استقصاء البيانات. لمزيد من المعلومات، راجع تكوين الترحيل.
خصائص.تكوين dcr JSON المتداخل المعلمات المطلوبة عند إرسال البيانات إلى قاعدة تجميع البيانات (DCR). لمزيد من المعلومات، راجع تكوين DCR.

تكوين المصادقة

يدعم CCP أنواع المصادقة التالية:

إشعار

لا يدعم تنفيذ CCP OAuth2 بيانات اعتماد شهادة العميل.

كأفضل ممارسة، استخدم المعلمات في قسم المصادقة بدلا من بيانات اعتماد الترميز الثابت. لمزيد من المعلومات، راجع إدخال سري آمن.

لإنشاء قالب التوزيع الذي يستخدم المعلمات أيضا، تحتاج إلى إلغاء المعلمات في هذا القسم ببدء [إضافي . يسمح هذا للمعلمات بتعيين قيمة استنادا إلى تفاعل المستخدم مع الموصل. لمزيد من المعلومات، راجع أحرف إلغاء تعبيرات القالب.

لتمكين إدخال بيانات الاعتماد من واجهة المستخدم، connectorUIConfig يتطلب instructions القسم المعلمات المطلوبة. لمزيد من المعلومات، راجع مرجع تعريفات موصل البيانات للنظام الأساسي للموصل بدون تعليمات برمجية.

المصادقة الأساسية

الحقل المطلوب نوع
UserName صواب سلسلة
كلمة المرور صواب سلسلة

مثال المصادقة الأساسية باستخدام المعلمات المحددة في connectorUIconfig:

"auth": {
    "type": "Basic",
    "UserName": "[[parameters('username')]",
    "Password": "[[parameters('password')]"
}

APIKey

الحقل المطلوب نوع الوصف القيمة الافتراضية
مفتاح واجهة برمجة التطبيقات صواب سلسلة مفتاح سر المستخدم
ApiKeyName سلسلة اسم عنوان Uri الذي يحتوي على قيمة ApiKey Authorization
ApiKeyIdentifier سلسلة قيمة السلسلة لإبقاء الرمز المميز مسبقا token
IsApiKeyInPostPayload boolean إرسال البيانات السرية في نص POST بدلا من العنوان false

أمثلة مصادقة APIKey:

"auth": {
    "type": "APIKey",
    "ApiKey": "[[parameters('apikey')]",
    "ApiKeyName": "X-MyApp-Auth-Header",
    "ApiKeyIdentifier": "Bearer"
}

ينتج عن هذا المثال السر المعرف من إدخال المستخدم المرسل في العنوان التالي: X-MyApp-Auth-Header: Bearer apikey

"auth": { 
    "type": "APIKey",
    "ApiKey": "123123123",
}

يستخدم هذا المثال القيم الافتراضية والنتائج في العنوان التالي: التخويل: الرمز المميز 123123123

"auth": { 
    "type": "APIKey",
    "ApiKey": "123123123",
    "ApiKeyName": ""
}

ApiKeyName نظرا لتعيين بشكل صريح إلى ""، فإن النتيجة هي العنوان التالي: التخويل: 123123123

OAuth2

يدعم النظام الأساسي للموصل بدون تعليمات برمجية منح رمز التخويل OAuth 2.0 وبيانات اعتماد العميل. يستخدم العميل العام والسري نوع منح "رمز التخويل" لتبادل رمز التخويل للرمز المميز للوصول. بعد عودة المستخدم إلى العميل عبر عنوان URL لإعادة التوجيه، سيحصل التطبيق على رمز التخويل من عنوان URL ويستخدمه لطلب الرمز المميز للوصول.

الحقل المطلوب نوع ‏‏الوصف
معرف العميل صواب السلسلة‬ معرف العميل
ClientSecret صواب السلسلة‬ سر العميل
رمز التخويل صواب عند grantType = authorization_code السلسلة‬ إذا كان نوع المنحة عبارة authorization_code عن قيمة الحقل هذه، فسيكون رمز التخويل الذي يتم إرجاعه من خدمة المصادقة.
النطاق صواب لنوع المنحة authorization_code
اختياري لنوع المنحة client_credentials
السلسلة‬ قائمة نطاقات مفصولة بمسافة لموافقة المستخدم. لمزيد من المعلومات، راجع نطاقات وأذونات OAuth2.
RedirectUri صواب عند grantType = authorization_code السلسلة‬ يجب أن يكون عنوان URL لإعادة التوجيه https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights
نوع المنحة صواب السلسلة‬ authorization_code أو client_credentials
TokenEndpoint صواب السلسلة‬ عنوان URL لتبادل التعليمات البرمجية برمز مميز صالح في authorization_code المنحة أو معرف العميل والسر مع رمز مميز صالح في client_credentials المنحة.
TokenEndpointHeaders ‏‏الكائن كائن قيمة مفتاح اختياري لإرسال رؤوس مخصصة إلى خادم الرمز المميز
TokenEndpointQueryParameters ‏‏الكائن كائن قيمة مفتاح اختياري لإرسال معلمات استعلام مخصصة إلى خادم الرمز المميز
AuthorizationEndpoint صواب السلسلة‬ URL لموافقة المستخدم على authorization_code التدفق
AuthorizationEndpointHeaders ‏‏الكائن كائن قيمة مفتاح اختياري لإرسال رؤوس مخصصة إلى خادم المصادقة
AuthorizationEndpointQueryParameters ‏‏الكائن زوج قيمة مفتاح اختياري مستخدم في طلب تدفق رمز التخويل OAuth2

تدفق رمز المصادقة هو لجلب البيانات نيابة عن أذونات المستخدم وبيانات اعتماد العميل لجلب البيانات باستخدام أذونات التطبيق. يمنح خادم البيانات حق الوصول إلى التطبيق. نظرا لعدم وجود مستخدم في تدفق بيانات اعتماد العميل، لا توجد حاجة إلى نقطة نهاية تخويل، فقط نقطة نهاية رمز مميز.

مثال: نوع منح OAuth2 authorization_code

"auth": {
    "type": "OAuth2",
    "ClientId": "[[parameters('appId')]",
    "ClientSecret": "[[parameters('appSecret')]",
    "tokenEndpoint": "https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/token",
    "authorizationEndpoint": "https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/authorize",
    "authorizationEndpointHeaders": {},
    "authorizationEndpointQueryParameters": {
        "prompt": "consent"
    },
    "redirectUri": "https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights",
    "tokenEndpointHeaders": {
        "Accept": "application/json",
        "Content-Type": "application/x-www-form-urlencoded"
    },
    "TokenEndpointQueryParameters": {},
    "scope": "openid offline_access some_scope",
    "grantType": "authorization_code"
}

مثال: نوع منح OAuth2 client_credentials

"auth": {
    "type": "OAuth2",
    "ClientId": "[[parameters('appId')]",
    "ClientSecret": "[[parameters('appSecret')]",
    "tokenEndpoint": "https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/token",
    "tokenEndpointHeaders": {
        "Accept": "application/json",
        "Content-Type": "application/x-www-form-urlencoded"
    },
    "TokenEndpointQueryParameters": {},
    "scope": "openid offline_access some_scope",
    "grantType": "client_credentials"
}

Jwt

مثال: رمز ويب JSON المميز (JWT)

"auth": {
    "type": "JwtToken",
    "userName": {
        "key":"username",
        "value":"[[parameters('UserName')]"
    },
    "password": {
        "key":"password",
        "value":"[[parameters('Password')]"
    },
    "TokenEndpoint": {"https://token_endpoint.contoso.com"},
    "IsJsonRequest": true
}

تكوين الطلب

يحدد قسم الطلب كيفية إرسال موصل بيانات CCP للطلبات إلى مصدر البيانات الخاص بك، مثل نقطة نهاية واجهة برمجة التطبيقات ومدى تكرار استقصاء نقطة النهاية هذه.

الحقل المطلوب نوع ‏‏الوصف
نقطة نهاية Api صواب السلسلة‬ عنوان URL للخادم البعيد. يحدد نقطة النهاية لسحب البيانات منها.
RateLimitQPS رقم صحيح يحدد عدد الاستدعاءات أو الاستعلامات المسموح بها في ثانية واحدة.
QueryWindowInMin رقم صحيح تعريف نافذة الاستعلام المتوفرة في دقائق. الحد الأدنى هو دقيقة واحدة. الوقت الافتراضي هو 5 دقائق.
HttpMethod السلسلة‬ تعريف أسلوب API: GET(افتراضي) أو POST
تنسيق وقت الاستعلام السلسلة‬ يحدد تنسيق التاريخ والوقت الذي تتوقعه نقطة النهاية (الخادم البعيد). يستخدم CCP التاريخ والوقت الحاليين أينما يتم استخدام هذا المتغير. القيم المحتملة هي الثوابت: UnixTimestamp، UnixTimestampInMills أو أي تمثيل صالح آخر لوقت التاريخ، على سبيل المثال: yyyy-MM-dd، MM/dd/yyyy HH:mm:ss
الافتراضي هو ISO 8601 UTC
إعادة المحاولة عدد صحيح (1...6) 1 6 تعريف لإعادة المحاولة المسموح لها بالتعافي من الفشل. القيمة الافتراضية هي 3.
المهلةInSeconds عدد صحيح (1...180) يحدد مهلة الطلب، بالثواني. القيمة الافتراضية هي 20
IsPostPayloadJson Boolean يحدد ما إذا كانت حمولة POST بتنسيق JSON. القيمة الافتراضية هي false
رؤوس ‏‏الكائن أزواج القيمة الرئيسية التي تحدد عناوين الطلب.
QueryParameters ‏‏الكائن أزواج القيمة الرئيسية التي تحدد معلمات استعلام الطلب.
StartTimeAttributeName صواب عند EndTimeAttributeName تعيين السلسلة‬ تعريف اسم معلمة الاستعلام لوقت بدء الاستعلام. راجع المثال.
EndTimeAttributeName صواب عند StartTimeAttributeName تعيين السلسلة‬ تعريف اسم معلمة الاستعلام لوقت انتهاء الاستعلام.
QueryTimeIntervalAttributeName السلسلة‬ إذا كانت نقطة النهاية تتطلب تنسيقا متخصصا للاستعلام عن البيانات في إطار زمني، فاستخدم هذه الخاصية مع QueryTimeIntervalPrepend المعلمتين و QueryTimeIntervalDelimiter . راجع المثال.
QueryTimeIntervalPrepend صواب عند QueryTimeIntervalAttributeName تعيين السلسلة‬ راجع QueryTimeIntervalAttributeName
QueryTimeIntervalDelimiter صواب عند QueryTimeIntervalAttributeName تعيين السلسلة‬ راجع QueryTimeIntervalAttributeName
QueryParametersTemplate السلسلة‬ قالب الاستعلام لاستخدامه عند تمرير المعلمات في سيناريوهات متقدمة.
br>على سبيل المثال: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}"

عندما تتطلب واجهة برمجة التطبيقات معلمات معقدة، استخدم queryParameters أو queryParametersTemplate التي تتضمن بعض المتغيرات المضمنة.

متغير مضمن للاستخدام في queryParameters للاستخدام في queryParametersTemplate
_QueryWindowStartTime yes yes
_QueryWindowEndTime yes yes
_APIKeyName no yes
_APIKey no yes

مثال StartTimeAttributeName

فكِّر في هذا المثال:

  • StartTimeAttributeName = from
  • EndTimeAttributeName = until
  • ApiEndpoint = https://www.example.com

الاستعلام المرسل إلى الخادم البعيد هو: https://www.example.com?from={QueryTimeFormat}&until={QueryTimeFormat + QueryWindowInMin}

مثال QueryTimeIntervalAttributeName

فكِّر في هذا المثال:

  • QueryTimeIntervalAttributeName = interval
  • QueryTimeIntervalPrepend = time:
  • QueryTimeIntervalDelimiter = ..
  • ApiEndpoint = https://www.example.com

الاستعلام المرسل إلى الخادم البعيد هو: https://www.example.com?interval=time:{QueryTimeFormat}..{QueryTimeFormat + QueryWindowInMin}

طلب أمثلة باستخدام Microsoft Graph كواجهة برمجة تطبيقات مصدر بيانات

يستعلم هذا المثال عن الرسائل باستخدام معلمة استعلام عامل تصفية. لمزيد من المعلومات، راجع معلمات استعلام Microsoft Graph API.

"request": {
  "apiEndpoint": "https://graph.microsoft.com/v1.0/me/messages",
  "httpMethod": "Get",
  "queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
  "queryWindowInMin": 10,
  "retryCount": 3,
  "rateLimitQPS": 20,
  "headers": {
    "Accept": "application/json",
    "User-Agent": "Example-app-agent"
  },
  "QueryTimeIntervalAttributeName": "filter",
  "QueryTimeIntervalPrepend": "receivedDateTime gt ",
  "QueryTimeIntervalDelimiter": " and receivedDateTime lt "
}

يرسل GET المثال السابق طلبا إلى https://graph.microsoft.com/v1.0/me/messages?filter=receivedDateTime gt {time of request} and receivedDateTime lt 2019-09-01T17:00:00.0000000. يتم تحديث الطابع الزمني لكل queryWindowInMin مرة.

يتم تحقيق نفس النتائج مع هذا المثال:

"request": {
  "apiEndpoint": "https://graph.microsoft.com/v1.0/me/messages",
  "httpMethod": "Get",
  "queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
  "queryWindowInMin": 10,
  "retryCount": 3,
  "rateLimitQPS": 20,
  "headers": {
    "Accept": "application/json",
  },
  "queryParameters": {
    "filter": "receivedDateTime gt {_QueryWindowStartTime} and receivedDateTime lt {_QueryWindowEndTime}"
  }
}

خيار آخر هو عندما يتوقع مصدر البيانات معلمتين للاستعلام، واحدة لوقت البدء وواحدة لوقت الانتهاء.

مثال:

"request": {
  "apiEndpoint": "https://graph.microsoft.com/v1.0/me/calendarView",
  "httpMethod": "Get",
  "queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
  "queryWindowInMin": 10,
  "retryCount": 3,
  "rateLimitQPS": 20,
  "headers": {
    "Accept": "application/json",
  },
  "StartTimeAttributeName": "startDateTime",
  "EndTimeAttributeName": "endDateTime",
}

يؤدي هذا إلى إرسال GET طلب إلى https://graph.microsoft.com/me/calendarView?startDateTime=2019-09-01T09:00:00.0000000&endDateTime=2019-09-01T17:00:00.0000000

بالنسبة للاستعلامات المعقدة، استخدم QueryParametersTemplate. يرسل POST هذا المثال التالي طلبا مع معلمات في النص الأساسي.

مثال:

request: {
  "apiEndpoint": "https://graph.microsoft.com/v1.0/me/messages",
  "httpMethod": "POST",
  "queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
  "queryWindowInMin": 10,
  "retryCount": 3,
  "rateLimitQPS": 20,
  "headers": {
    "Accept": "application/json",
  },
  "isPostPayloadJson": true,
  "queryParametersTemplate": "{\"query":"TableName | where createdTimestamp between (datetime({_QueryWindowStartTime}) .. datetime({_QueryWindowEndTime}))\"}"
}

تكوين الاستجابة

حدد معالجة الاستجابة لموصل البيانات الخاص بك باستخدام المعلمات التالية:

الحقل المطلوب نوع ‏‏الوصف
EventsJsonPaths صواب قائمة السلاسل يحدد المسار إلى الرسالة في استجابة JSON. يحدد تعبير مسار JSON مسارًا إلى عنصر أو مجموعة من العناصر في بنية JSON
SuccessStatusJsonPath السلسلة‬ يحدد المسار إلى رسالة النجاح في الاستجابة JSON. عند تعريف هذه المعلمة، يجب أيضا تعريف المعلمة SuccessStatusValue .
SuccessStatusValue السلسلة‬ يحدد المسار إلى قيمة رسالة النجاح في الاستجابة JSON
IsGzipCompressed Boolean تحديد ما إذا كانت الاستجابة مضغوطة في ملف gzip
format صواب السلسلة‬ json أو csv أو xml
الضغطالجو السلسلة‬ خوارزمية الضغطات، إما multi-gzip أو deflate. بالنسبة لخوارزمية ضغط gzip، ما عليك سوى التكوين IsGzipCompressed إلى True بدلا من تعيين قيمة لهذه المعلمة.
CsvDelimiter السلسلة‬ إذا كان تنسيق الاستجابة CSV وتريد تغيير محدد CSV الافتراضي ل ","
HasCsvBoundary Boolean الإشارة إلى ما إذا كانت بيانات CSV تحتوي على حد
HasCsvHeader Boolean الإشارة إلى ما إذا كانت بيانات CSV تحتوي على رأس، فإن الإعداد الافتراضي هو True
CsvEscape السلسلة‬ حرف الإلغاء لحدود الحقل، الافتراضي هو "

على سبيل المثال، يتطلب " CSV مع رؤوس id,name,avg وصف من البيانات التي تحتوي على مسافات مثل 1,"my name",5.5 حد الحقل.
ConvertChildPropertiesToArray Boolean حالة خاصة يقوم فيها الخادم البعيد بإرجاع كائن بدلا من قائمة الأحداث حيث تحتوي كل خاصية على بيانات فيه.

إشعار

يتم تحليل نوع تنسيق CSV حسب مواصفات RFC4180 .

أمثلة تكوين الاستجابة

من المتوقع استجابة خادم بتنسيق JSON، مع البيانات المطلوبة في قيمة الخاصية. تشير حالة خاصية الاستجابة إلى استيعاب البيانات فقط إذا كانت القيمة هي success.

"response": {
  "EventsJsonPaths ": ["$.value"],
  "format": "json",
  "SuccessStatusJsonPath": "$.status",
  "SuccessStatusValue": "success",
  "IsGzipCompressed: true
 }

تستعد الاستجابة المتوقعة في هذا المثال ل CSV بدون عنوان.

"response": {
  "EventsJsonPaths ": ["$"],
  "format": "csv",
  "HasCsvHeader": false
 }

تكوين الترحيل

عندما لا يمكن لمصدر البيانات إرسال حمولة الاستجابة بأكملها في وقت واحد، يحتاج موصل بيانات CCP إلى معرفة كيفية تلقي أجزاء من البيانات في صفحات الاستجابة. أنواع الترحيل للاختيار من بينها هي:

نوع الترحيل عامل القرار
هل تحتوي استجابة واجهة برمجة التطبيقات على ارتباطات إلى الصفحات التالية والسابقة؟
هل تحتوي استجابة واجهة برمجة التطبيقات على رمز مميز أو مؤشر للصفحتين التالية والسابقة؟
هل تدعم استجابة واجهة برمجة التطبيقات معلمة لعدد الكائنات التي يجب تخطيها عند الترحيل؟

تكوين LinkHeader أو PersistentLinkHeader

نوع الترحيل الأكثر شيوعا هو عندما توفر واجهة برمجة تطبيقات مصدر بيانات الخادم عناوين URL للصفحات التالية والسابقة من البيانات. لمزيد من المعلومات حول مواصفات رأس الارتباط، راجع RFC 5988.

LinkHeader الترحيل يعني أن استجابة واجهة برمجة التطبيقات تتضمن إما:

  • رأس استجابة Link HTTP
  • أو مسار JSON لاسترداد الارتباط من نص الاستجابة.

PersistentLinkHeader الترحيل له نفس خصائص LinkHeader، باستثناء أن عنوان الارتباط يستمر في تخزين الواجهة الخلفية. يتيح هذا الخيار ارتباطات الترحيل عبر نوافذ الاستعلام. على سبيل المثال، لا تدعم بعض واجهات برمجة التطبيقات أوقات بدء الاستعلام أو أوقات الانتهاء. بدلا من ذلك، فإنها تدعم مؤشر جانب الخادم. يمكن استخدام أنواع الصفحات الثابتة لتذكر مؤشر جانب الخادم. لمزيد من المعلومات، راجع ما هو المؤشر؟.

إشعار

يمكن أن يكون هناك استعلام واحد فقط قيد التشغيل للموصل مع PersistentLinkHeader لتجنب حالات السباق على المؤشر من جانب الخادم. قد يؤثر هذا على زمن الانتقال.

الحقل المطلوب نوع ‏‏الوصف
LinkHeaderTokenJsonPath خطأ السلسلة‬ استخدم هذه الخاصية للإشارة إلى مكان الحصول على القيمة في نص الاستجابة.

على سبيل المثال، إذا أرجع مصدر البيانات JSON التالي: { nextPage: "foo", value: [{data}]} فسيكون LinkHeaderTokenJsonPath$.nextPage
PageSize خطأ رقم صحيح عدد الأحداث لكل صفحة
PageSizeParameterName خطأ السلسلة‬ اسم معلمة الاستعلام لحجم الصفحة

إليك بعض الأمثلة:

Paging: {
  "pagingType": "LinkHeader",
  "linkHeaderTokenJsonPath" : "$.metadata.links.next"
}
Paging: {
 "pagingType" : "PersistentLinkHeader", 
 "pageSizeParameterName" : "limit", 
 "pageSize" : 500 
}

تكوين NextPageUrl

NextPageUrl الترحيل يعني أن استجابة واجهة برمجة التطبيقات تتضمن ارتباطا معقدا في نص الاستجابة مشابها ل LinkHeader، ولكن يتم تضمين عنوان URL في نص الاستجابة بدلا من العنوان.

الحقل المطلوب نوع ‏‏الوصف
PageSize خطأ رقم صحيح عدد الأحداث لكل صفحة
PageSizeParameterName خطأ السلسلة‬ اسم معلمة الاستعلام لحجم الصفحة
NextPageUrl خطأ السلسلة‬ فقط إذا كان الموصل ل Coralogix API
NextPageUrlQueryParameters خطأ أزواج قيمة مفتاح الكائن - إضافة معلمة استعلام مخصصة إلى كل طلب للصفحة التالية
NextPageParaName خطأ السلسلة‬ يحدد اسم "الصفحة التالية" في الطلب.
HasNextFlagJsonPath خطأ السلسلة‬ تعريف المسار إلى سمة علامة HasNextPage
NextPageRequestHeader خطأ السلسلة‬ يحدد عنوان "الصفحة التالية" في الطلب.
NextPageUrlQueryParametersTemplate خطأ السلسلة‬ فقط إذا كان الموصل ل Coralogix API

مثال:

Paging: {
 "pagingType" : "NextPageUrl", 
  "nextPageTokenJsonPath" : "$.data.repository.pageInfo.endCursor", 
  "hasNextFlagJsonPath" : "$.data.repository.pageInfo.hasNextPage", 
  "nextPageUrl" : "https://api.github.com/graphql", 
  "nextPageUrlQueryParametersTemplate" : "{'query':'query{repository(owner:\"xyz\")}" 
}

تكوين NextPageToken أو PersistentToken

NextPageToken يستخدم ترقيم الصفحات رمزا مميزا (تجزئة أو مؤشر) يمثل حالة الصفحة الحالية. يتم تضمين الرمز المميز في استجابة واجهة برمجة التطبيقات، ويلحقه العميل بالطلب التالي لجلب الصفحة التالية. غالبا ما يتم استخدام هذا الأسلوب عندما يحتاج الخادم إلى الحفاظ على الحالة الدقيقة بين الطلبات.

PersistentToken يستخدم ترقيم الصفحات رمزا مميزا يستمر من جانب الخادم. يتذكر الخادم الرمز المميز الأخير الذي قام العميل باسترداده ويوفر الرمز المميز التالي في الطلبات اللاحقة. يستمر العميل من حيث توقف حتى إذا قام بإجراء طلبات جديدة لاحقا.

الحقل المطلوب نوع ‏‏الوصف
PageSize خطأ رقم صحيح عدد الأحداث لكل صفحة
PageSizeParameterName خطأ سلسلة اسم معلمة الاستعلام لحجم الصفحة
NextPageTokenJsonPath خطأ سلسلة مسار JSON للرمز المميز للصفحة التالية في نص الاستجابة.
NextPageTokenResponseHeader خطأ سلسلة إذا كان NextPageTokenJsonPath فارغا، فاستخدم الرمز المميز في اسم الرأس هذا للصفحة التالية.
NextPageParaName خطأ سلسلة يحدد اسم "الصفحة التالية" في الطلب.
HasNextFlagJsonPath خطأ سلسلة يحدد المسار إلى سمة علامة HasNextPage عند تحديد ما إذا كان هناك المزيد من الصفحات المتبقية في الاستجابة.
NextPageRequestHeader خطأ سلسلة يحدد عنوان "الصفحة التالية" في الطلب.

أمثلة:

Paging: {
 "pagingType" : "NextPageToken", 
 "nextPageRequestHeader" : "ETag", 
 "nextPageTokenResponseHeader" : "ETag" 
}
Paging: {
 "pagingType" : "PersistentToken", 
    "nextPageParaName" : "gta", 
    "nextPageTokenJsonPath" : "$.alerts[-1:]._id" 
}

تكوين الإزاحة

Offset يحدد ترقيم الصفحات عدد الصفحات التي يجب تخطيها والحد الأقصى لعدد الأحداث التي يجب استردادها لكل صفحة في الطلب. يجلب العملاء مجموعة محددة من العناصر من مجموعة البيانات.

الحقل المطلوب نوع ‏‏الوصف
PageSize خطأ رقم صحيح عدد الأحداث لكل صفحة
PageSizeParameterName خطأ السلسلة‬ اسم معلمة الاستعلام لحجم الصفحة
OffsetParaName خطأ السلسلة‬ اسم معلمة استعلام الطلب التالي. يحسب CCP قيمة الإزاحة لكل طلب، (جميع الأحداث التي تم استيعابها + 1)

مثال:

Paging: {
   
       "pagingType": "Offset", 
        "offsetParaName": "offset" 
 }

تكوين DCR

الحقل المطلوب نوع ‏‏الوصف
نقطة نهاية تجميع البيانات صواب السلسلة‬ DCE (نقطة نهاية تجميع البيانات) على سبيل المثال: https://example.ingest.monitor.azure.com.
DataCollectionRuleImmutableId صواب السلسلة‬ معرف DCR غير القابل للتغيير. ابحث عنه عن طريق عرض استجابة إنشاء DCR أو باستخدام واجهة برمجة تطبيقات DCR
اسم الدفق صواب سلسلة هذه القيمة هي streamDeclaration المحددة في DCR (يجب أن تبدأ البادئة ب Custom-)

مثال على موصل بيانات CCP

فيما يلي مثال على جميع مكونات موصل بيانات CCP JSON معا.

{
   "kind": "RestApiPoller",
   "properties": {
      "connectorDefinitionName": "ConnectorDefinitionExample",
      "dcrConfig": {
           "streamName": "Custom-ExampleConnectorInput",
           "dataCollectionEndpoint": "https://example-dce-sbsr.location.ingest.monitor.azure.com",
           "dataCollectionRuleImmutableId": "dcr-32_character_hexadecimal_id"
            },
      "dataType": "ExampleLogs",
      "auth": {
         "type": "Basic",
         "password": "[[parameters('username')]",
         "userName": "[[parameters('password')]"
      },
      "request": {
         "apiEndpoint": "https://rest.contoso.com/example",
         "rateLimitQPS": 10,
         "queryWindowInMin": 5,
         "httpMethod": "GET",
         "queryTimeFormat": "UnixTimestamp",
         "startTimeAttributeName": "t0",
         "endTimeAttributeName": "t1",
         "retryCount": 3,
         "timeoutInSeconds": 60,
         "headers": {
            "Accept": "application/json",
            "User-Agent": "Example-app-agent"
         } 
      },
      "paging": {
         "pagingType": "LinkHeader"
      },
      "response": {
         "eventsJsonPaths": ["$"]
      }
   }
}