Referencia del conector de datos restApiPoller para codeless Connector Platform
Para crear un RestApiPoller
conector de datos con codeless Connector Platform (CCP), use esta referencia como complemento de la documentación de la API REST de Microsoft Sentinel para conectores de datos.
Cada dataConnector
representa una conexión específica de un conector de datos de Microsoft Sentinel. Un conector de datos puede tener varias conexiones, que capturan datos de distintos puntos de conexión. La configuración json creada con este documento de referencia se usa para completar la plantilla de implementación para el conector de datos ccp.
Para más información, consulte Creación de un conector sin código para Microsoft Sentinel.
Conectores de datos: creación o actualización
Consulte la operación Crear o actualizar en los documentos de la API REST para encontrar la versión más reciente de la API estable o preliminar. La diferencia entre la creación y la operación de actualización es que la actualización requiere el valor etag .
Método PUT
https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.OperationalInsights/workspaces/{{workspaceName}}/providers/Microsoft.SecurityInsights/dataConnectors/{{dataConnectorId}}?api-version={{apiVersion}}
Parámetros del identificador URI
Para obtener más información sobre la versión más reciente de la API, consulte Conectores de datos: creación o actualización de parámetros de URI.
Nombre | Descripción |
---|---|
dataConnectorId | El identificador del conector de datos debe ser un nombre único y es el mismo que el name parámetro en el cuerpo de la solicitud. |
resourceGroupName | Nombre del grupo de recursos, no distingue mayúsculas de minúsculas. |
subscriptionId | Identificador de la suscripción de destino. |
workspaceName | Nombre del área de trabajo, no el identificador. Patrón de expresión regular: ^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$ . |
api-version | Versión de API que se usará para la operación. |
Cuerpo de la solicitud
El cuerpo de la solicitud para un RestApiPoller
conector de datos CCP tiene la siguiente estructura:
{
"name": "{{dataConnectorId}}",
"kind": "RestApiPoller",
"etag": "",
"properties": {
"connectorDefinitionName": "",
"auth": {},
"request": {},
"response": {},
"paging": "",
"dcrConfig": ""
}
}
RestApiPoller
RestApiPoller representa un conector de datos ccp de sondeo de API donde se personalizan las cargas de paginación, autorización y solicitud/respuesta del origen de datos.
Nombre | Obligatorio | Type | Descripción |
---|---|---|---|
name | True | string | Nombre único de la conexión que coincide con el parámetro URI |
kind | True | string | Debe ser RestApiPoller |
etag | GUID | Deje vacío para la creación de nuevos conectores. Para las operaciones de actualización, la etiqueta electrónica debe coincidir con la etag (GUID) del conector existente. | |
properties.connectorDefinitionName | string | Nombre del recurso DataConnectorDefinition que define la configuración de la interfaz de usuario del conector de datos. Para más información, consulte Definición del conector de datos. | |
Propiedades.Auth | True | JSON anidado | Describe las propiedades de autenticación para sondear los datos. Para obtener más información, consulte configuración de autenticación. |
Propiedades.pedir | True | JSON anidado | Describe la carga de solicitud para sondear los datos, como el punto de conexión de la API. Para más información, consulte configuración de solicitud. |
Propiedades.respuesta | True | JSON anidado | Describe el objeto de respuesta y el mensaje anidado devueltos por la API al sondear los datos. Para más información, consulte configuración de respuesta. |
Propiedades.paginación | JSON anidado | Describe la carga de paginación al sondear los datos. Para más información, consulte Configuración de paginación. | |
Propiedades.dcrConfig | JSON anidado | Parámetros necesarios cuando los datos se envían a una regla de recopilación de datos (DCR). Para obtener más información, consulte Configuración de DCR. |
Configuración de autenticación
La CCP admite los siguientes tipos de autenticación:
Nota:
La implementación de CCP OAuth2 no admite credenciales de certificado de cliente.
Como procedimiento recomendado, use parámetros en la sección de autenticación en lugar de credenciales de codificación rígida. Para obtener más información, consulte Protección de la entrada confidencial.
Para crear la plantilla de implementación que también usa parámetros, debe escapar los parámetros de esta sección con un inicio [
adicional. Esto permite que los parámetros asignen un valor en función de la interacción del usuario con el conector. Para obtener más información, consulte Caracteres de escape de expresiones de plantilla.
Para permitir que las credenciales se escriban desde la interfaz de usuario, la connectorUIConfig
sección requiere instructions
con los parámetros deseados. Para más información, consulte Referencia de definiciones de conectores de datos para codeless Connector Platform.
Autenticación básica
Campo | Obligatorio | Tipo |
---|---|---|
UserName | True | string |
Contraseña | True | string |
Ejemplo de autenticación básica mediante parámetros definidos en connectorUIconfig
:
"auth": {
"type": "Basic",
"UserName": "[[parameters('username')]",
"Password": "[[parameters('password')]"
}
APIKey
Campo | Obligatorio | Type | Descripción | Default value |
---|---|---|---|---|
ApiKey | True | string | clave secreta de usuario | |
ApiKeyName | string | nombre del encabezado URI que contiene el valor apiKey | Authorization |
|
ApiKeyIdentifier | string | valor de cadena para anteponer el token | token |
|
IsApiKeyInPostPayload | boolean | enviar secreto en el cuerpo POST en lugar del encabezado | false |
Ejemplos de autenticación de APIKey:
"auth": {
"type": "APIKey",
"ApiKey": "[[parameters('apikey')]",
"ApiKeyName": "X-MyApp-Auth-Header",
"ApiKeyIdentifier": "Bearer"
}
Este ejemplo da como resultado el secreto definido a partir de la entrada del usuario enviada en el siguiente encabezado: X-MyApp-Auth-Header: Bearer apikey
"auth": {
"type": "APIKey",
"ApiKey": "123123123",
}
En este ejemplo se usan los valores predeterminados y se produce el siguiente encabezado: Autorización: token 123123123
"auth": {
"type": "APIKey",
"ApiKey": "123123123",
"ApiKeyName": ""
}
Dado que se ApiKeyName
establece ""
explícitamente en , el resultado es el siguiente encabezado: Authorization: 123123123
OAuth2
Codeless Connector Platform admite la concesión de código de autorización de OAuth 2.0 y las credenciales de cliente. Los clientes confidenciales y públicos usan el tipo de concesión de código de autorización para intercambiar un código de autorización para un token de acceso. Después de que el usuario vuelva al cliente a través de la dirección URL de redireccionamiento, la aplicación obtendrá el código de autorización de la dirección URL y lo usará para solicitar un token de acceso.
Campo | Obligatorio | Type | Descripción |
---|---|---|---|
ClientId | True | String | Identificador de cliente |
ClientSecret | True | String | El secreto de cliente |
AuthorizationCode | True cuando grantType = authorization_code |
Cadena | Si el tipo de concesión es authorization_code este valor de campo, el código de autorización devuelto por el servicio de autenticación. |
Ámbito | True para el authorization_code tipo de concesiónopcional para client_credentials el tipo de concesión |
Cadena | Una lista separada por espacios de ámbitos para el consentimiento del usuario. Para obtener más información, consulte Ámbitos y permisos de OAuth2. |
RedirectUri | True cuando grantType = authorization_code |
Cadena | La dirección URL para el redireccionamiento debe ser https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights |
GrantType | True | String | authorization_code o client_credentials |
TokenEndpoint | True | String | Dirección URL para intercambiar código con token válido en authorization_code concesión o identificador de cliente y secreto con token válido en client_credentials concesión. |
TokenEndpointHeaders | Object | Objeto de valor de clave opcional para enviar encabezados personalizados al servidor de tokens | |
TokenEndpointQueryParameters | Object | Objeto de valor de clave opcional para enviar parámetros de consulta personalizados al servidor de tokens | |
AuthorizationEndpoint | True | String | Dirección URL del consentimiento del usuario para authorization_code el flujo |
AuthorizationEndpointHeaders | Object | Objeto de valor de clave opcional para enviar encabezados personalizados al servidor de autenticación | |
AuthorizationEndpointQueryParameters | Object | Un par de valores de clave opcional usado en la solicitud de flujo de código de autorización de OAuth2 |
El flujo de código de autenticación es para capturar datos en nombre de los permisos de un usuario y las credenciales de cliente es para capturar datos con permisos de aplicación. El servidor de datos concede acceso a la aplicación. Dado que no hay ningún usuario en el flujo de credenciales de cliente, no se necesita ningún punto de conexión de autorización, solo se necesita un punto de conexión de token.
Ejemplo: Tipo de concesión de 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"
}
Ejemplo: Tipo de concesión de 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
Ejemplo: token web 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
}
Configuración de la solicitud
En la sección de solicitud se define cómo el conector de datos ccp envía solicitudes al origen de datos, como el punto de conexión de API y la frecuencia con la que sondear ese punto de conexión.
Campo | Obligatorio | Type | Descripción |
---|---|---|---|
ApiEndpoint | True | String | Dirección URL del servidor remoto. Define el punto de conexión del que se extraerán los datos. |
RateLimitQPS | Entero | Define el número de llamadas o consultas permitidas en un segundo. | |
QueryWindowInMin | Entero | Define la ventana de consulta disponible en minutos. El mínimo es de 1 minuto. El valor predeterminado es 5 minutos. | |
HttpMethod | Cadena | Define el método de API: GET (valor predeterminado) o POST |
|
QueryTimeFormat | Cadena | Define el formato de fecha y hora que espera el punto de conexión (servidor remoto). La CCP usa la fecha y hora actuales donde se use esta variable. Los valores posibles son las constantes: UnixTimestamp , UnixTimestampInMills o cualquier otra representación válida de fecha y hora, por ejemplo: yyyy-MM-dd , MM/dd/yyyy HH:mm:ss el valor predeterminado es ISO 8601 UTC |
|
RetryCount | Entero (1...6) | Define los 6 reintentos permitidos 1 para recuperarse de un error. El valor predeterminado es 3 . |
|
TimeoutInSeconds | Entero (1...180) | Define el tiempo de espera de la solicitud, en segundos. Valor predeterminado: 20 |
|
IsPostPayloadJson | Booleano | Determina si la carga de POST está en formato JSON. Valor predeterminado: false |
|
Encabezados | Object | Pares clave-valor que definen los encabezados de solicitud. | |
QueryParameters | Object | Pares clave-valor que definen los parámetros de consulta de solicitud. | |
StartTimeAttributeName | True cuando EndTimeAttributeName se establece |
Cadena | Define el nombre del parámetro de consulta para la hora de inicio de la consulta. Vea el ejemplo. |
EndTimeAttributeName | True cuando StartTimeAttributeName se establece |
Cadena | Define el nombre del parámetro de consulta para la hora de finalización de la consulta. |
QueryTimeIntervalAttributeName | Cadena | Si el punto de conexión requiere un formato especializado para consultar los datos en un período de tiempo, use esta propiedad con los QueryTimeIntervalPrepend QueryTimeIntervalDelimiter parámetros y . Vea el ejemplo. |
|
QueryTimeIntervalPrepend | True cuando QueryTimeIntervalAttributeName se establece |
Cadena | Consulte QueryTimeIntervalAttributeName . |
QueryTimeIntervalDelimiter | True cuando QueryTimeIntervalAttributeName se establece |
Cadena | Consulte QueryTimeIntervalAttributeName . |
QueryParametersTemplate | Cadena | Plantilla de consulta que se usará al pasar parámetros en escenarios avanzados. br>Por ejemplo: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}" |
Cuando la API requiere parámetros complejos, use queryParameters
o queryParametersTemplate
que incluya algunas variables integradas.
Variable integrada | para su uso en queryParameters |
para su uso en queryParametersTemplate |
---|---|---|
_QueryWindowStartTime |
sí | sí |
_QueryWindowEndTime |
sí | sí |
_APIKeyName |
no | sí |
_APIKey |
no | sí |
Ejemplo de StartTimeAttributeName
Considere este ejemplo:
StartTimeAttributeName
=from
EndTimeAttributeName
=until
ApiEndpoint
=https://www.example.com
La consulta enviada al servidor remoto es: https://www.example.com?from={QueryTimeFormat}&until={QueryTimeFormat + QueryWindowInMin}
Ejemplo de QueryTimeIntervalAttributeName
Considere este ejemplo:
QueryTimeIntervalAttributeName
=interval
QueryTimeIntervalPrepend
=time:
QueryTimeIntervalDelimiter
=..
ApiEndpoint
=https://www.example.com
La consulta enviada al servidor remoto es: https://www.example.com?interval=time:{QueryTimeFormat}..{QueryTimeFormat + QueryWindowInMin}
Solicitar ejemplos de uso de Microsoft Graph como API de origen de datos
En este ejemplo se consultan mensajes con un parámetro de consulta de filtro. Para obtener más información, consulte Parámetros de consulta de 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 "
}
En el ejemplo anterior se envía una GET
solicitud a https://graph.microsoft.com/v1.0/me/messages?filter=receivedDateTime gt {time of request} and receivedDateTime lt 2019-09-01T17:00:00.0000000
. La marca de tiempo se actualiza cada queryWindowInMin
vez.
Los mismos resultados se logran con este ejemplo:
"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}"
}
}
Otra opción es cuando el origen de datos espera 2 parámetros de consulta, uno para la hora de inicio y otro para la hora de finalización.
Ejemplo:
"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",
}
Esto envía una GET
solicitud a https://graph.microsoft.com/me/calendarView?startDateTime=2019-09-01T09:00:00.0000000&endDateTime=2019-09-01T17:00:00.0000000
Para consultas complejas, use QueryParametersTemplate
. En este ejemplo siguiente se envía una POST
solicitud con parámetros en el cuerpo.
Ejemplo:
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}))\"}"
}
Configuración de respuesta
Defina el control de respuestas del conector de datos con los parámetros siguientes:
Campo | Obligatorio | Type | Descripción |
---|---|---|---|
EventsJsonPaths | True | Lista de cadenas | Define la ruta de acceso al mensaje en el JSON de respuesta. Una expresión de ruta de acceso JSON especifica una ruta de acceso a un elemento o un conjunto de elementos en una estructura JSON |
SuccessStatusJsonPath | Cadena | Define la ruta de acceso al mensaje de operación correcta en el JSON de respuesta. Cuando se define este parámetro, también se debe definir el SuccessStatusValue parámetro . |
|
SuccessStatusValue | Cadena | Define la ruta de acceso al valor del mensaje de operación correcta en el JSON de respuesta | |
IsGzipCompressed | Booleano | Determina si la respuesta se comprime en un archivo gzip. | |
format | True | String | json , csv o xml |
CompressionAlgo | Cadena | Algoritmo de compresión, ya sea multi-gzip o deflate . Para el algoritmo de compresión gzip, solo tiene que configurar IsGzipCompressed para True en lugar de establecer un valor para este parámetro. |
|
CsvDelimiter | Cadena | Si el formato de respuesta es CSV y desea cambiar el delimitador CSV predeterminado de "," |
|
HasCsvBoundary | Booleano | Indica si los datos CSV tienen un límite | |
HasCsvHeader | Booleano | Indica si los datos CSV tienen un encabezado, el valor predeterminado es True |
|
CsvEscape | Cadena | Carácter de escape para un límite de campo, el valor predeterminado es " Por ejemplo, un CSV con encabezados id,name,avg y una fila de datos que contienen espacios como 1,"my name",5.5 requiere el límite del " campo. |
|
ConvertChildPropertiesToArray | Booleano | Caso especial en el que el servidor remoto devuelve un objeto en lugar de una lista de eventos donde cada propiedad tiene datos en él. |
Nota:
La especificación RFC4180 analiza el tipo de formato CSV.
Ejemplos de configuración de respuesta
Se espera una respuesta del servidor con formato JSON, con los datos solicitados en el valor de la propiedad. El estado de la propiedad de respuesta indica que se ingieren los datos solo si el valor es success
.
"response": {
"EventsJsonPaths ": ["$.value"],
"format": "json",
"SuccessStatusJsonPath": "$.status",
"SuccessStatusValue": "success",
"IsGzipCompressed: true
}
La respuesta esperada de este ejemplo se prepara para un CSV sin encabezado.
"response": {
"EventsJsonPaths ": ["$"],
"format": "csv",
"HasCsvHeader": false
}
Configuración de paginación
Cuando el origen de datos no puede enviar toda la carga de respuesta a la vez, el conector de datos ccp debe saber cómo recibir partes de los datos en las páginas de respuesta. Los tipos de paginación entre los que elegir son:
Tipo de paginación | factor de decisión |
---|---|
¿La respuesta de la API tiene vínculos a las páginas siguientes y anteriores? | |
¿La respuesta de la API tiene un token o cursor para las páginas siguientes y anteriores? | |
¿La respuesta de la API admite un parámetro para el número de objetos que se omitirán al paginar? |
Configuración de LinkHeader o PersistentLinkHeader
El tipo de paginación más común es cuando una API de origen de datos de servidor proporciona direcciones URL a las páginas de datos siguientes y anteriores. Para obtener más información sobre la especificación de encabezado de vínculo, consulte RFC 5988.
LinkHeader
la paginación significa que la respuesta de la API incluye:
- encabezado de
Link
respuesta HTTP - o una ruta de acceso JSON para recuperar el vínculo del cuerpo de la respuesta.
PersistentLinkHeader
la paginación tiene las mismas propiedades que LinkHeader
, excepto que el encabezado de vínculo persiste en el almacenamiento back-end. Esta opción permite paginar vínculos entre ventanas de consulta. Por ejemplo, algunas API no admiten las horas de inicio o las horas de finalización de consultas. En su lugar, admiten un cursor del lado servidor. Los tipos de página persistente se pueden usar para recordar el cursor del lado servidor. Para obtener más información, consulte ¿Qué es un cursor?.
Nota:
Solo puede haber una consulta en ejecución para el conector con PersistentLinkHeader para evitar condiciones de carrera en el cursor del lado servidor. Esto puede afectar a la latencia.
Campo | Obligatorio | Type | Descripción |
---|---|---|---|
LinkHeaderTokenJsonPath | False | Cadena | Use esta propiedad para indicar dónde obtener el valor en el cuerpo de la respuesta. Por ejemplo, si el origen de datos devuelve el siguiente JSON: { nextPage: "foo", value: [{data}]} LinkHeaderTokenJsonPath $.nextPage |
PageSize | False | Entero | Número de eventos por página |
PageSizeParameterName | False | Cadena | Nombre del parámetro de consulta para el tamaño de página |
Estos son algunos ejemplos:
Paging: {
"pagingType": "LinkHeader",
"linkHeaderTokenJsonPath" : "$.metadata.links.next"
}
Paging: {
"pagingType" : "PersistentLinkHeader",
"pageSizeParameterName" : "limit",
"pageSize" : 500
}
Configurar NextPageUrl
NextPageUrl
la paginación significa que la respuesta de la API incluye un vínculo complejo en el cuerpo de la respuesta similar a LinkHeader
, pero la dirección URL se incluye en el cuerpo de la respuesta en lugar del encabezado.
Campo | Obligatorio | Type | Descripción |
---|---|---|---|
PageSize | False | Entero | Número de eventos por página |
PageSizeParameterName | False | Cadena | Nombre del parámetro de consulta para el tamaño de página |
NextPageUrl | False | Cadena | Solo si el conector es para coralogix API |
NextPageUrlQueryParameters | False | Pares de valor clave de objeto: adición de parámetros de consulta personalizados a cada solicitud de la página siguiente | |
NextPageParaName | False | Cadena | Determina el nombre de la página siguiente en la solicitud. |
HasNextFlagJsonPath | False | Cadena | Define la ruta de acceso al atributo de marca HasNextPage. |
NextPageRequestHeader | False | Cadena | Determina el nombre de encabezado de la página siguiente en la solicitud. |
NextPageUrlQueryParametersTemplate | False | Cadena | Solo si el conector es para coralogix API |
Ejemplo:
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\")}"
}
Configurar NextPageToken o PersistentToken
NextPageToken
la paginación usa un token (un hash o un cursor) que representa el estado de la página actual. El token se incluye en la respuesta de la API y el cliente lo anexa a la siguiente solicitud para capturar la página siguiente. Este método se usa a menudo cuando el servidor necesita mantener el estado exacto entre las solicitudes.
PersistentToken
paginación usa un token que conserva el lado servidor. El servidor recuerda el último token recuperado por el cliente y proporciona el siguiente token en las solicitudes posteriores. El cliente continúa donde se dejó incluso si realiza nuevas solicitudes más adelante.
Campo | Obligatorio | Type | Descripción |
---|---|---|---|
PageSize | False | Entero | Número de eventos por página |
PageSizeParameterName | False | string | Nombre del parámetro de consulta para el tamaño de página |
NextPageTokenJsonPath | False | string | Ruta de acceso JSON para el token de página siguiente en el cuerpo de la respuesta. |
NextPageTokenResponseHeader | False | string | Si NextPageTokenJsonPath está vacío, use el token en este nombre de encabezado para la página siguiente. |
NextPageParaName | False | string | Determina el nombre de la página siguiente en la solicitud. |
HasNextFlagJsonPath | False | string | Define la ruta de acceso a un atributo de marca HasNextPage al determinar si quedan más páginas en la respuesta. |
NextPageRequestHeader | False | string | Determina el nombre de encabezado de la página siguiente en la solicitud. |
Ejemplos:
Paging: {
"pagingType" : "NextPageToken",
"nextPageRequestHeader" : "ETag",
"nextPageTokenResponseHeader" : "ETag"
}
Paging: {
"pagingType" : "PersistentToken",
"nextPageParaName" : "gta",
"nextPageTokenJsonPath" : "$.alerts[-1:]._id"
}
Configurar desplazamiento
Offset
paginación especifica el número de páginas que se van a omitir y un límite en el número de eventos que se van a recuperar por página en la solicitud. Los clientes capturan un intervalo específico de elementos del conjunto de datos.
Campo | Obligatorio | Type | Descripción |
---|---|---|---|
PageSize | False | Entero | Número de eventos por página |
PageSizeParameterName | False | Cadena | Nombre del parámetro de consulta para el tamaño de página |
OffsetParaName | False | Cadena | Nombre del parámetro de consulta de solicitud siguiente. La CCP calcula el valor de desplazamiento de cada solicitud (todos los eventos ingeridos + 1) |
Ejemplo:
Paging: {
"pagingType": "Offset",
"offsetParaName": "offset"
}
Configuración de DCR
Campo | Obligatorio | Type | Descripción |
---|---|---|---|
DataCollectionEndpoint | True | String | DCE (punto de conexión de recopilación de datos) por ejemplo: https://example.ingest.monitor.azure.com . |
DataCollectionRuleImmutableId | True | String | Identificador inmutable de DCR. Para encontrarlo, consulte la respuesta de creación de DCR o use la API de DCR. |
StreamName | True | string | Este valor es el streamDeclaration definido en dcR (el prefijo debe comenzar por Custom-) |
Conector de datos CCP de ejemplo
Este es un ejemplo de todos los componentes del json del conector de datos CCP juntos.
{
"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": ["$"]
}
}
}