Поделиться через


Справочник по соединителю данных RestApiPoller для платформы соединителя без кода

Чтобы создать RestApiPoller соединитель данных с платформой CCP без кода, используйте эту ссылку в качестве дополнения к REST API Microsoft Sentinel для соединителей данных.

Каждый dataConnector представляет собой определенное соединение соединителя данных Microsoft Sentinel. Один соединитель данных может иметь несколько подключений, которые извлекает данные из разных конечных точек. Конфигурация JSON, созданная с помощью этого справочного документа, используется для завершения шаблона развертывания для соединителя данных CCP.

Дополнительные сведения см. в статье Создание соединителя без кода для Microsoft Sentinel.

Соединители данных — создание или обновление

Чтобы найти последнюю стабильную или предварительную версию API, см. инструкцию по созданию или обновлению в документации по REST API. Разница между созданием и операцией обновления заключается в том, что обновление требует значения etag.

Метод PUT

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

Параметры универсального кода ресурса (URI)

Дополнительные сведения о последней версии API см. в разделе "Соединители данных" — создание или обновление ПАРАМЕТРОВ URI.

Имя Описание
dataConnectorId Идентификатор соединителя данных должен быть уникальным именем и совпадает с name параметром в тексте запроса.
resourceGroupName Имя группы ресурсов, а не регистр.
subscriptionId Идентификатор целевой подписки.
имя рабочей области Имя рабочей области, а не идентификатор.
Шаблон регулярного выражения: ^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$
api-version Версия API, используемая для данной операции.

Текст запроса

Текст запроса для RestApiPoller соединителя данных CCP имеет следующую структуру:

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

RestApiPoller

RestApiPoller представляет соединитель данных CCP для опроса API, в котором настраивается разбиение на страницы, авторизация и полезные данные запроса и ответа для источника данных.

имени Обязательно Type Description
name Истина строка Уникальное имя подключения, соответствующего параметру URI
kind Истина строка Должен содержать значение RestApiPoller.
etag GUID Оставьте пустым для создания новых соединителей. Для операций обновления etag должен соответствовать тегу etag существующего соединителя (GUID).
properties.connectorDefinitionName строка Имя ресурса DataConnectorDefinition, определяющего конфигурацию пользовательского интерфейса соединителя данных. Дополнительные сведения см. в разделе "Определение соединителя данных".
свойства.auth Истина Вложенный массив JSON Описывает свойства проверки подлинности для опроса данных. Дополнительные сведения см . в разделе конфигурации проверки подлинности.
свойства.просьба Истина Вложенный массив JSON Описывает полезные данные запроса для опроса данных, таких как конечная точка API. Дополнительные сведения см. в разделе Конфигурация request.
свойства.ответ Истина Вложенный массив JSON Описывает объект response и вложенное сообщение, возвращенное из API при опросе данных. Дополнительные сведения см. в разделе Конфигурация response.
свойства.замещение страниц Вложенный массив JSON Описывает полезные данные разбиения на страницы при опросе данных. Дополнительные сведения см. в разделе Конфигурация paging.
свойства.dcrConfig Вложенный массив JSON Обязательные параметры при отправке данных в правило сбора данных (DCR). Дополнительные сведения см. в разделе конфигурации DCR.

Конфигурация проверки подлинности

CCP поддерживает следующие типы проверки подлинности:

Примечание.

Реализация CCP OAuth2 не поддерживает учетные данные сертификата клиента.

Рекомендуется использовать параметры в разделе проверки подлинности вместо учетных данных жесткого кодирования. Дополнительные сведения см. в разделе "Безопасные конфиденциальные входные данные".

Чтобы создать шаблон развертывания, который также использует параметры, необходимо экранировать параметры в этом разделе с дополнительным запуском [. Это позволяет параметрам назначать значение на основе взаимодействия пользователя с соединителем. Дополнительные сведения см. в статье "Выражения шаблонов", экранные символы.

Чтобы включить ввод учетных данных из пользовательского интерфейса, раздел connectorUIConfig требуется instructions с нужными параметрами. Дополнительные сведения см. в справочнике по определениям соединителя данных для платформы соединителя без кода.

Обычная проверка подлинности

Поле Обязательное поле Тип
UserName Истина строка
Пароль Истина строка

Пример базовой проверки подлинности с помощью параметров, определенных в connectorUIconfig:

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

APIKey

Поле Обязательное поле Type Описание Default value
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-адреса и будет использовать его для запроса маркера доступа.

Поле Обязательное поле Type Описание
ClientId Истина Строка Идентификатор клиента
ClientSecret Истина Строка секретом клиента;
Код авторизации True, если grantType = authorization_code Строка Если тип предоставления является authorization_code этим значением поля, будет код авторизации, возвращаемый из службы проверки подлинности.
Область применения True для authorization_code типа предоставления
необязательный для client_credentials типа предоставления
Строка Разделенный пробелами список областей для согласия пользователя. Дополнительные сведения см. в разделе "Области и разрешения OAuth2".
RedirectUri True, если grantType = authorization_code Строка URL-адрес перенаправления должен быть https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights
GrantType Истина Строка authorization_code или client_credentials
TokenEndpoint Истина Строка URL-адрес для обмена кодом с допустимым маркером в authorization_code предоставлении или идентификаторе клиента и секрете с допустимым маркером в client_credentials предоставлении.
TokenEndpointHeaders Object Необязательный объект значения ключа для отправки пользовательских заголовков на сервер токенов
TokenEndpointQueryParameters Object Необязательный объект значения ключа для отправки пользовательских парам запросов на сервер токенов
AuthorizationEndpoint Истина Строка URL-адрес согласия пользователя для authorization_code потока
AuthorizationEndpointHeaders Object Необязательный объект значения ключа для отправки пользовательских заголовков на сервер проверки подлинности
AuthorizationEndpointQueryParameters Object Необязательная пара значений ключа, используемая в запросе потока кода авторизации 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
}

Конфигурация request

В разделе запроса определяется, как соединитель данных CCP отправляет запросы в источник данных, например конечную точку API и как часто опрашивать такую конечную точку.

Поле Обязательное поле Type Описание
ApiEndpoint Истина Строка URL-адрес удаленного сервера. Определяет конечную точку, из которой извлекаются данные.
RateLimitQPS Целое Определяет количество вызовов или запросов, разрешенных за секунду.
QueryWindowInMin Целое Определяет доступное окно запроса в минутах. Минимальное значение составляет 1 минуту. Значение по умолчанию — 5 минут.
HttpMethod Строка Определяет метод API: GET(по умолчанию) или POST
QueryTimeFormat Строка Определяет формат даты и времени, который ожидает конечная точка (удаленный сервер). В CCP используется текущая дата и время, где используется эта переменная. Возможные значения : UnixTimestampUnixTimestampInMills или любое другое допустимое представление даты, например: yyyy-MM-ddMM/dd/yyyy HH:mm:ss
значение по умолчанию — ISO 8601 UTC
RetryCount Целое число (1...6) Определяет повторные 1 попытки, разрешенные для 6 восстановления после сбоя. По умолчанию — 3.
TimeoutInSeconds Целое число (1...180) Определяет время ожидания запроса (в секундах). Значение по умолчанию: 20.
IsPostPayloadJson Логический Определяет, представлены ли полезные данные POST в формате JSON. Значение по умолчанию: false.
Заголовки Object Пары "Ключ-значение", определяющие заголовки запроса.
QueryParameters Object Пары "Ключевое значение", определяющие параметры запроса запроса.
StartTimeAttributeName Значение True, если EndTimeAttributeName задано Строка Определяет имя параметра запроса для времени начала запроса. См. пример.
EndTimeAttributeName Значение True, если StartTimeAttributeName задано Строка Определяет имя параметра запроса для времени окончания запроса.
QueryTimeIntervalAttributeName Строка Если для конечной точки требуется специализированный формат для запроса данных в интервале времени, используйте это свойство с QueryTimeIntervalPrepend параметрами и параметрами QueryTimeIntervalDelimiter . См. пример.
QueryTimeIntervalPrepend Значение True, если QueryTimeIntervalAttributeName задано Строка См. раздел QueryTimeIntervalAttributeName.
QueryTimeIntervalDelimiter Значение True, если QueryTimeIntervalAttributeName задано Строка См. раздел QueryTimeIntervalAttributeName.
QueryParametersTemplate Строка Шаблон запроса, используемый при передаче параметров в расширенных сценариях.
Br>Например: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}"

Если API требует сложных параметров, используйте 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 в качестве API источника данных

В этом примере сообщения запрашиваются с параметром запроса фильтра. Дополнительные сведения см. в разделе параметров запроса API Microsoft Graph.

"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}"
  }
}

Другой вариант заключается в том, что источник данных ожидает 2 параметра запроса, один для времени начала и один для окончания.

Пример:

"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",
}

При этом отправляется запрос на GEThttps://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}))\"}"
}

Конфигурация response

Определите обработку ответов соединителя данных со следующими параметрами:

Поле Обязательное поле Type Описание
EventsJsonPaths Истина Список строк Определяет путь к сообщению в ответе JSON. Выражение пути JSON указывает путь к элементу (или набору элементов) в структуре JSON
SuccessStatusJsonPath Строка Определяет путь к сообщению об успешном выполнении в ответе JSON. При определении SuccessStatusValue этого параметра также следует определить параметр.
SuccessStatusValue Строка Определяет путь к значению сообщения об успешном выполнении в ответе JSON
IsGzipCompressed Логический Определяет, сжимается ли ответ в файле gzip
format Истина Строка json или csv или xml
CompressionAlgo Строка Алгоритм сжатия либо multi-gzip deflate. Для алгоритма сжатия gzip просто настройте IsGzipCompressed True вместо задания значения для этого параметра.
CsvDelimiter Строка Если формат ответа — CSV, и вы хотите изменить разделитель CSV по умолчанию ","
HasCsvBoundary Логический Указывает, имеет ли данные CSV границы
HasCsvHeader Логический Укажите, имеет ли данные CSV заголовок, значение по умолчанию True
CsvEscape Строка Escape-символ для границы поля по умолчанию "

Например, CSV-файл с заголовками и строкой данных, содержащей пробелы id,name,avg , например 1,"my name",5.5 , требует " границы поля.
ConvertChildPropertiesToArray Логический Особый случай, когда удаленный сервер возвращает объект вместо списка событий, в которых каждое свойство содержит данные в нем.

Примечание.

Тип формата CSV анализируется спецификацией RFC4180 .

Примеры конфигурации ответа

Ожидается ответ сервера с форматом JSON с запрошенными данными в значении свойства. Состояние свойства ответа указывает на прием данных только в том случае, если значение равноsuccess.

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

Ожидаемый ответ в этом примере готовится к csv-файлу без заголовка.

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

Конфигурация paging

Если источник данных не может отправлять все полезные данные ответа одновременно, соединитель данных CCP должен знать, как получать части данных на страницах ответа. Выбор типов разбиения по страницам:

Тип разбиения по страницам фактор принятия решений
Есть ли в ответе API ссылки на следующие и предыдущие страницы?
Имеет ли ответ API маркер или курсор для следующих и предыдущих страниц?
Поддерживает ли ответ API параметр для количества объектов, пропускаемых при разбиении по страницам?

Настройка LinkHeader или PersistentLinkHeader

Наиболее распространенный тип разбиения на страницы заключается в том, что API источника данных сервера предоставляет URL-адреса на следующие и предыдущие страницы данных. Дополнительные сведения о спецификации заголовка ссылки см. в rfC 5988.

LinkHeader Разбиение по страницам означает, что ответ API включает в себя:

  • Link Заголовок ответа HTTP
  • или путь JSON для получения ссылки из текста ответа.

PersistentLinkHeader Разбиение на страницы имеет те же свойства, что LinkHeaderи заголовок ссылки, сохраняется в серверном хранилище. Этот параметр включает ссылки на разбиение по страницам в окнах запросов. Например, некоторые API не поддерживают время начала запроса или время окончания. Вместо этого они поддерживают серверный курсор. Постоянные типы страниц можно использовать для запоминания курсора на стороне сервера. Дополнительные сведения см. в разделе "Что такое курсор?".

Примечание.

Существует только один запрос, выполняемый для соединителя с PersistentLinkHeader, чтобы избежать условий гонки на стороне сервера. Это может повлиять на задержку.

Поле Обязательное поле Type Описание
LinkHeaderTokenJsonPath False Строка Используйте это свойство, чтобы указать, где получить значение в тексте ответа.

Например, если источник данных возвращает следующий код JSON: { nextPage: "foo", value: [{data}]} затем LinkHeaderTokenJsonPath будет $.nextPage
PageSize False Целое Сколько событий на страницу
PageSizeParameterName False Строка Имя параметра запроса для размера страницы

Далее приводятся некоторые примеры.

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

Настройка NextPageUrl

NextPageUrl Разбиение по страницам означает, что ответ API содержит сложную ссылку в тексте ответа, аналогичную LinkHeaderurl-адресу, но URL-адрес включен в текст ответа вместо заголовка.

Поле Обязательное поле Type Описание
PageSize False Целое Сколько событий на страницу
PageSizeParameterName False Строка Имя параметра запроса для размера страницы
NextPageUrl False Строка Только если соединитель предназначен для API Coralogix
NextPageUrlQueryParameters False Пары "Ключ объекта" — добавление настраиваемого параметра запроса к каждому запросу для следующей страницы
NextPageParaName False Строка Определяет имя следующей страницы в запросе.
HasNextFlagJsonPath False Строка Определяет путь к атрибуту флага HasNextPage
NextPageRequestHeader False Строка Определяет имя заголовка следующей страницы в запросе.
NextPageUrlQueryParametersTemplate False Строка Только если соединитель предназначен для API Coralogix

Пример:

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 Разбиение на страницы использует маркер (хэш или курсор), представляющий состояние текущей страницы. Маркер включен в ответ API, и клиент добавляет его к следующему запросу, чтобы получить следующую страницу. Этот метод часто используется, когда серверу необходимо поддерживать точное состояние между запросами.

PersistentToken Разбиение на страницы использует маркер, сохраняющий сторону сервера. Сервер запоминает последний маркер, полученный клиентом, и предоставляет следующий маркер в последующих запросах. Клиент продолжает работу, даже если он выполняет новые запросы позже.

Поле Обязательное поле Type Описание
PageSize False Целое Сколько событий на страницу
PageSizeParameterName False строка Имя параметра запроса для размера страницы
NextPageTokenJsonPath False строка Путь JSON для следующего маркера страницы в тексте ответа.
NextPageTokenResponseHeader False строка Если NextPageTokenJsonPath маркер пуст, используйте этот маркер в этом имени заголовка для следующей страницы.
NextPageParaName False строка Определяет имя следующей страницы в запросе.
HasNextFlagJsonPath False строка Определяет путь к атрибуту флага HasNextPage при определении того, осталось ли в ответе больше страниц.
NextPageRequestHeader False строка Определяет имя заголовка следующей страницы в запросе.

Примеры:

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

Настройка смещения

Offset Разбиение на страницы указывает количество страниц, которые нужно пропустить, и ограничение на количество событий, которые нужно получить на каждую страницу в запросе. Клиенты получают определенный диапазон элементов из набора данных.

Поле Обязательное поле Type Описание
PageSize False Целое Сколько событий на страницу
PageSizeParameterName False Строка Имя параметра запроса для размера страницы
OffsetParaName False Строка Имя параметра запроса следующего запроса. CCP вычисляет значение смещения для каждого запроса (все события приема + 1)

Пример:

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

Конфигурация DCR

Поле Обязательное поле Type Описание
DataCollectionEndpoint Истина Строка Например https://example.ingest.monitor.azure.com, DCE (конечная точка сбора данных).
DataCollectionRuleImmutableId Истина Строка Неизменяемый идентификатор DCR. Найдите его, просмотрев ответ на создание DCR или используя API DCR
StreamName Истина строка Это значение определяется в DCR (префикс должен начинаться streamDeclaration с Custom-)

Пример соединителя данных CCP

Ниже приведен пример всех компонентов соединителя данных CCP вместе.

{
   "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": ["$"]
      }
   }
}