Справочник по соединителю данных 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.
Текст запроса
Текст запроса для 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 используется текущая дата и время, где используется эта переменная. Возможные значения : UnixTimestamp UnixTimestampInMills или любое другое допустимое представление даты, например: yyyy-MM-dd MM/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",
}
При этом отправляется запрос на 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}))\"}"
}
Конфигурация 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 содержит сложную ссылку в тексте ответа, аналогичную LinkHeader
url-адресу, но 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": ["$"]
}
}
}