Share via


Referência do conector de dados para a plataforma Codeless Connector

Para criar um conector de dados com a CCP (Codeless Connector Platform), use este documento como um suplemento para os documentos de referência da API REST do Microsoft Sentinel para Conectores de Dados. Especificamente, este documento de referência expande os seguintes detalhes:

  • O tipo de conector de dados, RestApiPoller, que é usado para o CCP.
  • Configuração de autorização
  • Opções de configuração de solicitação e resposta da fonte de dados
  • Opções de paginação de fluxo de dados
  • Mapa de regras de coleta 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 pontos de extremidade diferentes. A configuração JSON criada usando este documento de referência é usada para concluir o modelo de implantação para o 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 localizar a versão estável ou de visualização mais recente da API. A diferença entre a operação de criação e a operação de 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 O 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, não diferencia maiúsculas de minúsculas.
subscriptionId A ID da assinatura de destino.
workspaceName O nome do espaço de trabalho, não o 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 o conector de dados CCP tem a seguinte estrutura:

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

RestApiPoller representa o conector de API Poller sem código.

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 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 DCR (Regra de Coleta de Dados). Para obter mais informações, consulte Configuração de 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.

Como prática recomendada, use parâmetros na seção de autenticação em vez de credenciais de codificação. Para obter mais informações, consulte Proteger 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 início [extra . 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 a partir da interface do usuário, a connectorUIConfig seção requer instructions com os parâmetros desejados. Para obter mais informações, consulte Referência de definições de conector de dados para a plataforma Codeless Connector.

Autenticação básica

Campo Obrigatório Tipo
UserName True string
Senha True string

Exemplo de 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
ApiKeyName string nome do cabeçalho Uri que contém o valor ApiKey Authorization
ApiKeyIdentifier string valor da cadeia de caracteres 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 a partir da entrada do usuário enviada no seguinte cabeçalho: X-MyApp-Auth-Header: Bearer apikey

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

Este exemplo usa os valores padrão e resulta no seguinte cabeçalho: Autorização: token 123123123

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

Como o ApiKeyName está explicitamente definido como "", o resultado é o seguinte cabeçalho: Autorização: 123123123

OAuth2

A plataforma Codeless Connector oferece suporte a 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
ClientSecret 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 serviço de autenticação.
Escopo True para authorization_code o tipo de concessão
opcional para client_credentials tipo de concessão
String Uma lista separada por espaço 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 em authorization_code grant ou id de cliente e secret com token válido em client_credentials grant.
TokenEndpointHeaders Objeto Um objeto de valor de chave opcional para enviar cabeçalhos personalizados ao 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 para o 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 ponto de extremidade de autorização é necessário, apenas um ponto de extremidade de token.

Exemplo: concessão de código de autenticação OAuth2

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

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

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 ponto de extremidade da API e com que frequência sondar esse ponto de extremidade.

Campo Obrigatório Type Descrição
ApiEndpoint True String URL para servidor remoto. Define o ponto de extremidade do qual efetuar pull dos dados.
RateLimitQPS 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 esperado pelo ponto de extremidade (servidor remoto). A CCP usa a data e a hora atuais onde quer que essa variável seja 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
RetryCount Inteiro (1...6) Define 1 as 6 tentativas permitidas para recuperação de uma falha. O padrão é 3.
TimeoutInSeconds 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 valores de chave que definem os cabeçalhos de solicitação.
QueryParameters Objeto Pares de valores de chave que definem os parâmetros de consulta de solicitação.
StartTimeAttributeName True quando EndTimeAttributeName está 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 está 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 está definido String Confira QueryTimeIntervalAttributeName
QueryTimeIntervalDelimiter True quando QueryTimeIntervalAttributeName está definido String Confira 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 requer parâmetros complexos, use o queryParameters ou queryParametersTemplate que incluem algumas variáveis internas.

variável interna 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 hora de início e outro para 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. Este 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 cadeias de caracteres 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, ele SuccessStatusValue 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-gzipdeflate. Para o algoritmo de compactação gzip, basta configurar IsGzipCompressed para True em vez de definir um valor para esse parâmetro.
CsvDelimitador String Se o formato de resposta for CSV e você quiser alterar o delimitador CSV padrão de ","
HasCsvBoundary Booliano Indicar se os dados CSV têm um limite
HasCsvHeader Booliano Indicar se os dados CSV têm um cabeçalho, o padrão é True
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 tem dados.

Observação

O tipo de formato CSV é analisado pela especificação RFC4180.

Exemplos de configuração de resposta

Uma resposta do servidor com 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 prepara 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 em 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 páginas próximas 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 seguinte e anterior. Para obter mais informações sobre a especificação Link Header , 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 que LinkHeader, exceto que o cabeçalho do link persiste no armazenamento de back-end. Essa opção habilita links de paginação em janelas de consulta. Por exemplo, algumas APIs não oferecem suporte a horas de início ou término de consulta. Em vez disso, eles oferecem suporte a 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}]}LinkHeaderTokenJsonPath então 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

Estes são 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 ao 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
NextPageUrl Falso String Somente se o conector for para a API Coralogix
NextPageUrlQueryParameters Falso Pares de valores de Chave de Objeto – adicionando parâmetro de consulta personalizado a cada solicitação para a próxima página
NextPageParaName 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.
NextPageUrlQueryParametersTemplate 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 acrescenta à 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 mais tarde.

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
NextPageTokenJsonPath 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.
NextPageParaName 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 pagination 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 próximo parâmetro de consulta de solicitação. A CCP calcula o valor de deslocamento para cada solicitação, (todos os eventos ingeridos + 1)

Exemplo:

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

Configuração de 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 O ID imutável do DCR. Encontre-o exibindo a resposta de criação de DCR ou usando a API DCR
StreamName True string Esse valor é o definido no DCR (o prefixo streamDeclaration deve começar com Custom-)

Exemplo de conector de dados CCP

Aqui está um exemplo de todos os componentes do conector de dados CCP JSON 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": ["$"]
      }
   }
}