Referência do conector de dados RestApiPoller para a plataforma de conector sem código
Para criar um conector de RestApiPoller
dados com a CCP (Plataforma do Conector Sem Código), use essa referência como um complemento aos documentos da API REST do Microsoft Sentinel para Conectores de Dados.
Cada dataConnector
um representa uma conexão específica de um conector de dados do Microsoft Sentinel. Um conector de dados pode ter várias conexões, que buscam dados de diferentes pontos de extremidade. A configuração JSON criada usando este documento de referência é usada para concluir o modelo de implantação do conector de dados CCP.
Para obter mais informações, confira Criar um conector sem código para o Microsoft Sentinel.
Conectores de dados - Criar ou atualizar
Consulte a operação Criar ou Atualizar nos documentos da API REST para encontrar a versão mais recente da API estável ou de visualização. A diferença entre a operação de criação e atualização é que a atualização requer o 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 do URI
Para obter mais informações sobre a versão mais recente da API, consulte Conectores de dados – Criar ou atualizar parâmetros de URI.
Nome | Descrição |
---|---|
dataConnectorId | A ID do conector de dados deve ser um nome exclusivo e é o mesmo que o name parâmetro no corpo da solicitação. |
resourceGroupName | O nome do grupo de recursos, sem distinção entre maiúsculas e minúsculas. |
subscriptionId | A ID da assinatura de destino. |
workspaceName | O nome do workspace, não a ID. Padrão Regex: ^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$ |
api-version | A versão da API a ser usada para esta operação. |
Corpo da solicitação
O corpo da solicitação para um RestApiPoller
conector de dados CCP tem a seguinte estrutura:
{
"name": "{{dataConnectorId}}",
"kind": "RestApiPoller",
"etag": "",
"properties": {
"connectorDefinitionName": "",
"auth": {},
"request": {},
"response": {},
"paging": "",
"dcrConfig": ""
}
}
RestApiPoller
RestApiPoller representa um conector de dados do API Poller CCP em que você personaliza cargas de paginação, autorização e solicitação/resposta para sua fonte de dados.
Nome | Obrigatória | Type | Descrição |
---|---|---|---|
name | True | string | O nome exclusivo da conexão correspondente ao parâmetro URI |
kind | True | string | Precisa ser RestApiPoller |
etag | GUID | Deixe vazio para a criação de novos conectores. Para operações de atualização, a etag deve corresponder à etag (GUID) do conector existente. | |
properties.connectorDefinitionName | string | O nome do recurso DataConnectorDefinition que define a configuração da interface do usuário do conector de dados. Para obter mais informações, consulte Definição do conector de dados. | |
Propriedades.Auth | Verdadeiro | JSON aninhado | Descreve as propriedades de autenticação para sondar os dados. Para obter mais informações, consulte configuração de autenticação. |
Propriedades.pedir | Verdadeiro | JSON aninhado | Descreve o conteúdo da solicitação para sondar os dados, como o ponto de extremidade da API. Para mais informações, confira configuração de request. |
Propriedades.resposta | Verdadeiro | JSON aninhado | Descreve o objeto de resposta e a mensagem aninhada retornada da API ao sondar os dados. Para mais informações, confira configuração de response. |
Propriedades.Paginação | JSON aninhado | Descreve o conteúdo de paginação ao sondar os dados. Para obter mais informações, confira configuração de paging. | |
Propriedades.dcrConfig | JSON aninhado | Parâmetros necessários quando os dados são enviados para uma Regra de Coleta de Dados (DCR). Para obter mais informações, consulte Configuração do DCR. |
Configuração de autenticação
O CCP oferece suporte aos seguintes tipos de autenticação:
Observação
A implementação do CCP OAuth2 não oferece suporte a credenciais de certificado do cliente.
Como prática recomendada, use parâmetros na seção auth em vez de credenciais codificadas. Para obter mais informações, consulte Proteger a entrada confidencial.
Para criar o modelo de implantação que também usa parâmetros, você precisa escapar dos parâmetros nesta seção com um .[
Isso permite que os parâmetros atribuam um valor com base na interação do usuário com o conector. Para obter mais informações, consulte Caracteres de escape de expressões de modelo.
Para permitir que as credenciais sejam inseridas na interface do usuário, a connectorUIConfig
seção requer instructions
os parâmetros desejados. Para obter mais informações, consulte Referência de definições de conector de dados para a Plataforma de Conector Sem Código.
Autenticação básica
Campo | Obrigatório | Tipo |
---|---|---|
UserName | True | string |
Senha | True | string |
Exemplo Autenticação básica usando parâmetros definidos em connectorUIconfig
:
"auth": {
"type": "Basic",
"UserName": "[[parameters('username')]",
"Password": "[[parameters('password')]"
}
APIKey
Campo | Obrigatório | Type | Descrição | Valor padrão |
---|---|---|---|---|
ApiKey | True | string | Chave secreta do usuário | |
Nome da Chave Api | string | nome do cabeçalho Uri que contém o valor ApiKey | Authorization |
|
Identificador de ApiKey | string | string para preceder o token | token |
|
IsApiKeyInPostPayload | boolean | enviar segredo no corpo do POST em vez do cabeçalho | false |
Exemplos de autenticação APIKey:
"auth": {
"type": "APIKey",
"ApiKey": "[[parameters('apikey')]",
"ApiKeyName": "X-MyApp-Auth-Header",
"ApiKeyIdentifier": "Bearer"
}
Este exemplo resulta no segredo definido da entrada do usuário enviada no seguinte cabeçalho: X-MyApp-Auth-Header: Portador apikey
"auth": {
"type": "APIKey",
"ApiKey": "123123123",
}
Este exemplo usa os valores padrão e resulta no seguinte cabeçalho: Authorization: token 123123123
"auth": {
"type": "APIKey",
"ApiKey": "123123123",
"ApiKeyName": ""
}
Como o ApiKeyName
é explicitamente definido como ""
, o resultado é o seguinte cabeçalho: Autorização: 123123123
OAuth2
A plataforma Codeless Connector oferece suporte à concessão de código de autorização OAuth 2.0 e credenciais de cliente. O tipo de concessão de Código de Autorização é usado por clientes confidenciais e públicos para trocar um código de autorização por um token de acesso. Depois que o usuário retornar ao cliente por meio da URL de redirecionamento, o aplicativo obterá o código de autorização da URL e usará para solicitar um token de acesso.
Campo | Obrigatório | Type | Descrição |
---|---|---|---|
ID do cliente | True | String | O ID do cliente |
Segredo do cliente | True | String | O segredo do cliente |
Código de autorização | True quando grantType = authorization_code |
String | Se o tipo de concessão for authorization_code esse valor de campo será o código de autorização retornado do servidor de autenticação. |
Escopo | True para authorization_code o tipo de concessãoopcional para client_credentials o tipo de concessão |
String | Uma lista separada por espaços de escopos para consentimento do usuário. Para obter mais informações, consulte Escopos e permissões do OAuth2. |
RedirectUri | True quando grantType = authorization_code |
String | URL para redirecionamento, deve ser https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights |
Tipo de concessão | True | String | authorization_code ou client_credentials |
TokenEndpoint | True | String | URL para trocar código com token válido na authorization_code concessão ou ID do cliente e segredo com token válido na client_credentials concessão. |
TokenEndpointHeaders | Objeto | Um objeto de valor de chave opcional para enviar cabeçalhos personalizados para o servidor de token | |
TokenEndpointQueryParameters | Objeto | Um objeto de valor de chave opcional para enviar parâmetros de consulta personalizados para o servidor de token | |
AuthorizationEndpoint | True | String | URL para consentimento do usuário para authorization_code fluxo |
AuthorizationEndpointHeaders | Objeto | Um objeto de valor de chave opcional para enviar cabeçalhos personalizados ao servidor de autenticação | |
AuthorizationEndpointQueryParameters | Objeto | Um par de valores de chave opcional usado na solicitação de fluxo de código de autorização OAuth2 |
O fluxo de código de autenticação é para buscar dados em nome das permissões de um usuário e as credenciais do cliente são para buscar dados com permissões de aplicativo. O servidor de dados concede acesso ao aplicativo. Como não há nenhum usuário no fluxo de credenciais do cliente, nenhum endpoint de autorização é necessário, apenas um endpoint de token.
Exemplo: tipo de concessão 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"
}
Exemplo: tipo de concessão 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
Exemplo: JSON Web token (JWT)
"auth": {
"type": "JwtToken",
"userName": {
"key":"username",
"value":"[[parameters('UserName')]"
},
"password": {
"key":"password",
"value":"[[parameters('Password')]"
},
"TokenEndpoint": {"https://token_endpoint.contoso.com"},
"IsJsonRequest": true
}
Configuração de solicitação
A seção de solicitação define como o conector de dados CCP envia solicitações para sua fonte de dados, como o endpoint da API e com que frequência sondar esse endpoint.
Campo | Obrigatório | Type | Descrição |
---|---|---|---|
ApiEndpoint | True | String | URL para servidor remoto. Define o ponto de extremidade do qual efetuar pull dos dados. |
TaxaLimitQPS | Inteiro | Define o número de chamadas ou consultas permitidas em um segundo. | |
QueryWindowInMin | Inteiro | Define a janela de consulta disponível em minutos. O mínimo é de 1 minuto. O padrão é de 5 minutos. | |
Método HTTP | String | Define o método da API: GET (padrão) ou POST |
|
QueryTimeFormat | String | Define o formato de data e hora que o ponto de extremidade (servidor remoto) espera. O CCP usa a data e hora atuais sempre que essa variável é usada. Os valores possíveis são as constantes: UnixTimestamp , UnixTimestampInMills ou qualquer outra representação válida de data e hora, por exemplo: yyyy-MM-dd , MM/dd/yyyy HH:mm:ss o padrão é ISO 8601 UTC |
|
Contagem de Tentativas | Inteiro (1...6) | Define 1 como 6 novas tentativas permitidas para se recuperar de uma falha. O padrão é 3 . |
|
Tempo limite em segundos | Inteiro (1...180) | Define o tempo limite da solicitação, em segundos. O padrão é 20 |
|
IsPostPayloadJson | Booliano | Determina se o conteúdo POST está no formato JSON. O padrão é false |
|
Cabeçalhos | Objeto | Pares de chave-valor que definem os cabeçalhos de solicitação. | |
QueryParameters | Objeto | Pares de valores-chave que definem os parâmetros de consulta de solicitação. | |
StartTimeAttributeName | True quando EndTimeAttributeName é definido |
String | Define o nome do parâmetro de consulta para a hora de início da consulta. Confira o exemplo. |
EndTimeAttributeName | True quando StartTimeAttributeName é definido |
String | Define o nome do parâmetro de consulta para a hora de término da consulta. |
QueryTimeIntervalAttributeName | String | Se o ponto de extremidade exigir um formato especializado para consultar os dados em um período de tempo, use essa propriedade com os QueryTimeIntervalPrepend parâmetros e .QueryTimeIntervalDelimiter Confira o exemplo. |
|
QueryTimeIntervalPrepend | True quando QueryTimeIntervalAttributeName é definido |
String | Veja QueryTimeIntervalAttributeName |
QueryTimeIntervalDelimiter | True quando QueryTimeIntervalAttributeName é definido |
String | Veja QueryTimeIntervalAttributeName |
QueryParametersTemplate | String | Modelo de consulta a ser usado ao passar parâmetros em cenários avançados. >br Por exemplo: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}" |
Quando a API exigir parâmetros complexos, use o queryParameters
ou queryParametersTemplate
que inclui algumas variáveis integradas.
variável embutida | para uso em queryParameters |
para uso em queryParametersTemplate |
---|---|---|
_QueryWindowStartTime |
sim | sim |
_QueryWindowEndTime |
sim | sim |
_APIKeyName |
não | sim |
_APIKey |
não | sim |
Exemplo de StartTimeAttributeName
Considere este exemplo:
StartTimeAttributeName
=from
EndTimeAttributeName
=until
ApiEndpoint
=https://www.example.com
A consulta enviada ao servidor remoto é: https://www.example.com?from={QueryTimeFormat}&until={QueryTimeFormat + QueryWindowInMin}
Exemplo de QueryTimeIntervalAttributeName
Considere este exemplo:
QueryTimeIntervalAttributeName
=interval
QueryTimeIntervalPrepend
=time:
QueryTimeIntervalDelimiter
=..
ApiEndpoint
=https://www.example.com
A consulta enviada ao servidor remoto é: https://www.example.com?interval=time:{QueryTimeFormat}..{QueryTimeFormat + QueryWindowInMin}
Exemplos de solicitação usando o Microsoft Graph como API de fonte de dados
Este exemplo consulta mensagens com um parâmetro de consulta de filtro. Para obter mais informações, consulte Parâmetros de consulta da API do 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 "
}
O exemplo anterior envia uma GET
solicitação para .https://graph.microsoft.com/v1.0/me/messages?filter=receivedDateTime gt {time of request} and receivedDateTime lt 2019-09-01T17:00:00.0000000
O carimbo de data/hora é atualizado para cada queryWindowInMin
vez.
Os mesmos resultados são obtidos com este exemplo:
"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}"
}
}
Outra opção é quando a fonte de dados espera 2 parâmetros de consulta, um para a hora de início e outro para a hora de término.
Exemplo:
"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",
}
Isso envia uma GET
solicitação para https://graph.microsoft.com/me/calendarView?startDateTime=2019-09-01T09:00:00.0000000&endDateTime=2019-09-01T17:00:00.0000000
Para consultas complexas, use QueryParametersTemplate
. O próximo exemplo envia uma POST
solicitação com parâmetros no corpo.
Exemplo:
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}))\"}"
}
Configuração de resposta
Defina o tratamento de resposta do conector de dados com os seguintes parâmetros:
Campo | Obrigatório | Type | Descrição |
---|---|---|---|
EventosJsonPaths | Verdadeiro | Lista de strings | Define o caminho para a mensagem no JSON de resposta. Uma expressão de caminho JSON especifica um caminho para um elemento ou um conjunto de elementos em uma estrutura JSON |
SuccessStatusJsonPath | String | Define o caminho para a mensagem de êxito no JSON de resposta. Quando esse parâmetro é definido, o SuccessStatusValue parâmetro também deve ser definido. |
|
SuccessStatusValue | String | Define o caminho para o valor da mensagem de êxito no JSON de resposta | |
IsGzipCompressed | Booliano | Determina se a resposta é compactada em um arquivo gzip | |
format | True | String | json ou csv ou xml |
CompressãoAlgo | String | O algoritmo de compressão, ou multi-gzip deflate . Para o algoritmo de compactação gzip, basta configurar IsGzipCompressed para True em vez de definir um valor para este parâmetro. |
|
CsvDelimiter | String | Se o formato de resposta for CSV e você quiser alterar o delimitador CSV padrão de "," |
|
HasCsvLimite | Booliano | Indique se os dados CSV têm um limite | |
HasCsvHeader | Booliano | Indique se os dados CSV têm um cabeçalho, o padrão é True |
|
Fuga CsvEscape | String | Caractere de escape para um limite de campo, o padrão é " Por exemplo, um CSV com cabeçalhos id,name,avg e uma linha de dados contendo espaços como 1,"my name",5.5 requer o limite do " campo. |
|
ConvertChildPropertiesToArray | Booliano | Caso especial em que o servidor remoto retorna um objeto em vez de uma lista de eventos em que cada propriedade contém dados. |
Exemplos de configuração de resposta
Uma resposta do servidor com o formato JSON é esperada, com os dados solicitados no valor da propriedade. O status da propriedade de resposta indica a ingestão dos dados somente se o valor for success
.
"response": {
"EventsJsonPaths ": ["$.value"],
"format": "json",
"SuccessStatusJsonPath": "$.status",
"SuccessStatusValue": "success",
"IsGzipCompressed: true
}
A resposta esperada neste exemplo se prepara para um CSV sem cabeçalho.
"response": {
"EventsJsonPaths ": ["$"],
"format": "csv",
"HasCsvHeader": false
}
Configuração de paginação
Quando a fonte de dados não pode enviar toda a carga de resposta de uma só vez, o conector de dados CCP precisa saber como receber partes dos dados nas páginas de resposta. Os tipos de paginação a serem escolhidos são:
Tipo de paginação | fator de decisão |
---|---|
A resposta da API tem links para as páginas seguintes e anteriores? | |
A resposta da API tem um token ou cursor para as páginas seguinte e anterior? | |
A resposta da API oferece suporte a um parâmetro para o número de objetos a serem ignorados durante a paginação? |
Configurar LinkHeader ou PersistentLinkHeader
O tipo de paginação mais comum é quando uma API de fonte de dados do servidor fornece URLs para as páginas de dados seguintes e anteriores. Para obter mais informações sobre a especificação do cabeçalho do link, consulte RFC 5988.
LinkHeader
paginação significa que a resposta da API inclui:
- o cabeçalho de
Link
resposta HTTP - ou um caminho JSON para recuperar o link do corpo da resposta.
PersistentLinkHeader
A paginação tem as mesmas propriedades LinkHeader
que , exceto que o cabeçalho do link persiste no armazenamento de back-end. Essa opção habilita links de paginação entre janelas de consulta. Por exemplo, algumas APIs não dão suporte a horários de início ou término de consulta. Em vez disso, eles suportam um cursor do lado do servidor. Os tipos de página persistentes podem ser usados para lembrar o cursor do lado do servidor. Para obter mais informações, consulte O que é um cursor?.
Observação
Pode haver apenas uma consulta em execução para o conector com PersistentLinkHeader para evitar condições de corrida no cursor do lado do servidor. Isso pode afetar a latência.
Campo | Obrigatório | Type | Descrição |
---|---|---|---|
LinkHeaderTokenJsonPath | Falso | String | Use essa propriedade para indicar onde obter o valor no corpo da resposta. Por exemplo, se a fonte de dados retornar o seguinte JSON: { nextPage: "foo", value: [{data}]} then LinkHeaderTokenJsonPath será $.nextPage |
PageSize | Falso | Inteiro | Quantos eventos por página |
PageSizeParameterName | Falso | String | Nome do parâmetro de consulta para o tamanho da página |
Veja alguns exemplos:
Paging: {
"pagingType": "LinkHeader",
"linkHeaderTokenJsonPath" : "$.metadata.links.next"
}
Paging: {
"pagingType" : "PersistentLinkHeader",
"pageSizeParameterName" : "limit",
"pageSize" : 500
}
Configurar NextPageUrl
NextPageUrl
paginação significa que a resposta da API inclui um link complexo no corpo da resposta semelhante a LinkHeader
, mas a URL é incluída no corpo da resposta em vez do cabeçalho.
Campo | Obrigatório | Type | Descrição |
---|---|---|---|
PageSize | Falso | Inteiro | Quantos eventos por página |
PageSizeParameterName | Falso | String | Nome do parâmetro de consulta para o tamanho da página |
Url da próxima página | Falso | String | Somente se o conector for para a API Coralogix |
Parâmetros de consulta de URL da próxima página | Falso | Pares de valores de chave de objeto – adicionando parâmetro de consulta personalizado a cada solicitação para a próxima página | |
PróximoPageParaName | Falso | String | Determina o nome da próxima página na solicitação. |
HasNextFlagJsonPath | Falso | String | Define o caminho para o atributo de sinalizador HasNextPage |
NextPageRequestHeader | Falso | String | Determina o nome do cabeçalho da próxima página na solicitação. |
PróximoPageUrlQueryParametersTemplate | Falso | String | Somente se o conector for para a API Coralogix |
Exemplo:
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 ou PersistentToken
NextPageToken
A paginação usa um token (um hash ou um cursor) que representa o estado da página atual. O token é incluído na resposta da API e o cliente o anexa à próxima solicitação para buscar a próxima página. Esse método geralmente é usado quando o servidor precisa manter o estado exato entre as solicitações.
PersistentToken
A paginação usa um token que persiste no lado do servidor. O servidor lembra o último token recuperado pelo cliente e fornece o próximo token em solicitações subsequentes. O cliente continua de onde parou, mesmo que faça novas solicitações posteriormente.
Campo | Obrigatório | Type | Descrição |
---|---|---|---|
PageSize | Falso | Inteiro | Quantos eventos por página |
PageSizeParameterName | Falso | string | Nome do parâmetro de consulta para o tamanho da página |
PróximoPageTokenJsonPath | Falso | string | Caminho JSON para o token da próxima página no corpo da resposta. |
NextPageTokenResponseHeader | Falso | string | Se NextPageTokenJsonPath estiver vazio, use o token está neste nome de cabeçalho para a próxima página. |
PróximoPageParaName | Falso | string | Determina o nome da próxima página na solicitação. |
HasNextFlagJsonPath | Falso | string | Define o caminho para um atributo de sinalizador HasNextPage ao determinar se mais páginas são deixadas na resposta. |
NextPageRequestHeader | Falso | string | Determina o nome do cabeçalho da próxima página na solicitação. |
Exemplos:
Paging: {
"pagingType" : "NextPageToken",
"nextPageRequestHeader" : "ETag",
"nextPageTokenResponseHeader" : "ETag"
}
Paging: {
"pagingType" : "PersistentToken",
"nextPageParaName" : "gta",
"nextPageTokenJsonPath" : "$.alerts[-1:]._id"
}
Configurar deslocamento
Offset
A paginação especifica o número de páginas a serem ignoradas e um limite no número de eventos a serem recuperados por página na solicitação. Os clientes buscam um intervalo específico de itens do conjunto de dados.
Campo | Obrigatório | Type | Descrição |
---|---|---|---|
PageSize | Falso | Inteiro | Quantos eventos por página |
PageSizeParameterName | Falso | String | Nome do parâmetro de consulta para o tamanho da página |
OffsetParaName | Falso | String | O nome do parâmetro de consulta da próxima solicitação. O CCP calcula o valor de deslocamento para cada solicitação (todos os eventos ingeridos + 1) |
Exemplo:
Paging: {
"pagingType": "Offset",
"offsetParaName": "offset"
}
Configuração DCR
Campo | Obrigatório | Type | Descrição |
---|---|---|---|
DataCollectionEndpoint | True | String | DCE (Data Collection Endpoint), por exemplo: https://example.ingest.monitor.azure.com . |
DataCollectionRuleImmutableId | True | String | A ID imutável do DCR. Encontre-o exibindo a resposta de criação do DCR ou usando a API do DCR |
StreamName | True | string | Esse valor é definido streamDeclaration no DCR (o prefixo deve começar com Custom-) |
Exemplo de conector de dados CCP
Aqui está um exemplo de todos os componentes do JSON do conector de dados 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": ["$"]
}
}
}