Bagikan melalui


Referensi konektor data RestApiPoller untuk Platform Konektor Tanpa Kode

Untuk membuat RestApiPoller konektor data dengan Codeless Connector Platform (CCP), gunakan referensi ini sebagai suplemen untuk dokumen MICROSOFT Sentinel REST API for Data Connectors .

Masing-masing dataConnector mewakili koneksi tertentu dari konektor data Microsoft Azure Sentinel. Satu konektor data mungkin memiliki beberapa koneksi, yang mengambil data dari titik akhir yang berbeda. Konfigurasi JSON yang dibangun menggunakan dokumen referensi ini digunakan untuk menyelesaikan templat penyebaran untuk konektor data CCP.

Untuk informasi selengkapnya, lihat Membuat konektor tanpa kode untuk Microsoft Sentinel.

Konektor Data - Membuat atau memperbarui

Referensikan operasi Buat atau Perbarui di dokumen REST API untuk menemukan versi API stabil atau pratinjau terbaru. Perbedaan antara operasi buat dan pembaruan adalah pembaruan memerlukan nilai etag .

Metode PUT

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

Parameter URI

Untuk informasi selengkapnya tentang versi API terbaru, lihat Konektor Data - Membuat atau Memperbarui Parameter URI.

Nama Deskripsi
dataConnectorId ID konektor data harus berupa nama yang unik dan sama dengan name parameter dalam isi permintaan.
resourceGroupName Nama grup sumber daya, tidak peka huruf besar/kecil.
subscriptionId ID langganan target.
workspaceName Nama ruang kerja, bukan ID.
Pola regex: ^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$
versi api Versi API yang digunakan untuk operasi ini.

Isi permintaan

Isi permintaan untuk RestApiPoller konektor data CCP memiliki struktur berikut:

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

RestApiPoller

RestApiPoller mewakili konektor data API Poller CCP tempat Anda menyesuaikan payload halaman, otorisasi, dan permintaan/respons untuk sumber data Anda.

Nama Wajib Tipe Deskripsi
nama Benar string Nama unik koneksi yang cocok dengan parameter URI
jenis Benar string Harus berupa RestApiPoller
etag GUID Biarkan kosong untuk pembuatan konektor baru. Untuk operasi pembaruan, etag harus cocok dengan etag konektor (GUID) yang ada.
properties.connectorDefinitionName string Nama sumber daya DataConnectorDefinition yang menentukan konfigurasi UI konektor data. Untuk informasi selengkapnya, lihat Definisi Konektor Data.
Properti.Auth Benar JSON berlapis Menjelaskan properti autentikasi untuk polling data. Untuk informasi selengkapnya, lihat konfigurasi autentikasi.
Properti.minta Benar JSON berlapis Menjelaskan payload permintaan untuk polling data, seperti titik akhir API. Untuk informasi selengkapnya, lihat konfigurasi permintaan.
Properti.jawaban Benar JSON berlapis Menjelaskan objek respons dan pesan berlapis yang dikembalikan dari API ketika melakukan polling data. Untuk informasi selengkapnya, lihat konfigurasi respons.
Properti.Paging JSON berlapis Menjelaskan payload penomoran halaman saat melakukan polling data. Untuk informasi selengkapnya, lihat konfigurasi penomoran halaman.
Properti.dcrConfig JSON berlapis Parameter yang diperlukan saat data dikirim ke Aturan Pengumpulan Data (DCR). Untuk informasi selengkapnya, lihat Konfigurasi DCR.

Konfigurasi autentikasi

CCP mendukung jenis autentikasi berikut:

Catatan

Implementasi CCP OAuth2 tidak mendukung kredensial sertifikat klien.

Sebagai praktik terbaik, gunakan parameter di bagian autentikasi alih-alih kredensial hard-coding. Untuk informasi selengkapnya, lihat Mengamankan input rahasia.

Untuk membuat templat penyebaran yang juga menggunakan parameter, Anda perlu menghindari parameter di bagian ini dengan awal [ekstra . Ini memungkinkan parameter untuk menetapkan nilai berdasarkan interaksi pengguna dengan konektor. Untuk informasi selengkapnya, lihat Ekspresi templat karakter escape.

Untuk mengaktifkan kredensial yang akan dimasukkan dari UI, connectorUIConfig bagian memerlukan instructions parameter yang diinginkan. Untuk informasi selengkapnya, lihat Referensi definisi konektor data untuk Platform Konektor Tanpa Kode.

Autentikasi dasar

Bidang Wajib Tipe
UserName Benar string
Kata sandi Benar string

Contoh autentikasi Dasar menggunakan parameter yang ditentukan dalam connectorUIconfig:

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

APIKey

Bidang Wajib Tipe Deskripsi Nilai default
ApiKey Benar string kunci rahasia pengguna
ApiKeyName string nama header Uri yang berisi nilai ApiKey Authorization
ApiKeyIdentifier string nilai string untuk menambahkan token sebelumnya token
IsApiKeyInPostPayload Boolean kirim rahasia dalam isi POST alih-alih header false

Contoh autentikasi APIKey:

"auth": {
    "type": "APIKey",
    "ApiKey": "[[parameters('apikey')]",
    "ApiKeyName": "X-MyApp-Auth-Header",
    "ApiKeyIdentifier": "Bearer"
}

Contoh ini menghasilkan rahasia yang ditentukan dari input pengguna yang dikirim di header berikut: X-MyApp-Auth-Header: Pembawa apikey

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

Contoh ini menggunakan nilai default dan menghasilkan header berikut: Otorisasi: token 123123123

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

ApiKeyName Karena secara eksplisit diatur ke "", hasilnya adalah header berikut: Otorisasi: 123123123

OAuth2

Platform Konektor Tanpa Kode mendukung pemberian kode otorisasi OAuth 2.0 dan kredensial klien. Jenis pemberian Kode Otorisasi digunakan oleh klien rahasia serta publik untuk menukar kode otorisasi dengan token akses. Setelah pengguna kembali ke klien melalui URL pengalihan, aplikasi akan mendapatkan kode otorisasi dari URL dan menggunakannya untuk meminta token akses.

Bidang Wajib Tipe Deskripsi
ClientId Benar String Id klien
ClientSecret Benar String Rahasia klien
AuthorizationCode True saat grantType = authorization_code String Jika jenis pemberian adalah authorization_code nilai bidang ini akan menjadi kode otorisasi yang dikembalikan dari sajian autentikasi.
Cakupan True untuk authorization_code jenis hibah
opsional untuk client_credentials jenis pemberian
String Daftar cakupan yang dipisahkan spasi untuk persetujuan pengguna. Untuk informasi selengkapnya, lihat Cakupan dan izin OAuth2.
RedirectUri True saat grantType = authorization_code String URL untuk pengalihan, harus https://portal.azure.com/TokenAuthorize/ExtensionName/Microsoft_Azure_Security_Insights
GrantType Benar String authorization_code atau client_credentials
TokenEndpoint Benar String URL untuk bertukar kode dengan token yang valid dalam authorization_code pemberian atau id klien dan rahasia dengan token yang valid dalam client_credentials pemberian.
TokenEndpointHeaders Objek Objek nilai kunci opsional untuk mengirim header kustom ke server token
TokenEndpointQueryParameters Objek Objek nilai kunci opsional untuk mengirim param kueri kustom ke server token
AuthorizationEndpoint Benar String URL untuk persetujuan pengguna untuk authorization_code alur
AuthorizationEndpointHeaders Objek Objek nilai kunci opsional untuk mengirim header kustom ke server auth
AuthorizationEndpointQueryParameters Objek Pasangan nilai kunci opsional yang digunakan dalam permintaan alur kode otorisasi OAuth2

Alur kode autentikasi adalah untuk mengambil data atas nama izin pengguna dan kredensial klien adalah untuk mengambil data dengan izin aplikasi. Server data memberikan akses ke aplikasi. Karena tidak ada pengguna dalam alur kredensial klien, tidak ada titik akhir otorisasi yang diperlukan, hanya titik akhir token.

Contoh: Jenis pemberian 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"
}

Contoh: Jenis pemberian 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

Contoh: 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
}

Konfigurasi permintaan

Bagian permintaan menentukan bagaimana konektor data CCP mengirim permintaan ke sumber data Anda, seperti titik akhir API dan seberapa sering melakukan polling titik akhir tersebut.

Bidang Wajib Tipe Deskripsi
ApiEndpoint Benar String URL untuk server jarak jauh. Menentukan titik akhir asal penarikan data.
RateLimitQPS Bilangan bulat Menentukan jumlah panggilan atau kueri yang diizinkan dalam hitungan detik.
QueryWindowInMin Bilangan bulat Menentukan jendela kueri yang tersedia dalam hitung menit. Minimum adalah 1 menit. Defaultnya adalah 5 menit.
HttpMethod String Menentukan metode API: GET(default) atau POST
QueryTimeFormat String Menentukan format tanggal dan waktu yang diharapkan titik akhir (server jarak jauh). CCP menggunakan tanggal dan waktu saat ini di mana pun variabel ini digunakan. Nilai yang mungkin adalah konstanta: UnixTimestamp, UnixTimestampInMills atau representasi valid lain dari waktu tanggal, misalnya: yyyy-MM-dd, MM/dd/yyyy HH:mm:ss
defaultnya adalah ISO 8601 UTC
RetryCount Bilangan bulat (1...6) Menentukan percobaan 6 ulang yang 1 diizinkan untuk pulih dari kegagalan. Defaultnya adalah 3.
TimeoutInSeconds Bilangan bulat (1...180) Menentukan batas waktu permintaan, dalam hitungan detik. Standarnya adalah 20
IsPostPayloadJson Boolean Menentukan apakah payload POST berada dalam format JSON. Standarnya adalah false
Header Objek Pasangan nilai kunci yang menentukan header permintaan.
QueryParameters Objek Pasangan nilai kunci yang menentukan parameter kueri permintaan.
StartTimeAttributeName True ketika EndTimeAttributeName diatur String Menentukan nama parameter kueri untuk waktu mulai kueri. Lihat contoh.
EndTimeAttributeName True ketika StartTimeAttributeName diatur String Menentukan nama parameter kueri untuk waktu akhir kueri.
QueryTimeIntervalAttributeName String Jika titik akhir memerlukan format khusus untuk mengkueri data pada jangka waktu, gunakan properti ini dengan QueryTimeIntervalPrepend parameter dan QueryTimeIntervalDelimiter . Lihat contoh.
QueryTimeIntervalPrepend True ketika QueryTimeIntervalAttributeName diatur String Lihat QueryTimeIntervalAttributeName
QueryTimeIntervalDelimiter True ketika QueryTimeIntervalAttributeName diatur String Lihat QueryTimeIntervalAttributeName
QueryParametersTemplate String Templat kueri yang akan digunakan saat meneruskan parameter dalam skenario tingkat lanjut.
br>Misalnya: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}"

Saat API memerlukan parameter kompleks, gunakan queryParameters atau queryParametersTemplate yang mencakup beberapa variabel bawaan.

variabel bawaan untuk digunakan dalam queryParameters untuk digunakan dalam queryParametersTemplate
_QueryWindowStartTime yes yes
_QueryWindowEndTime yes yes
_APIKeyName no yes
_APIKey no yes

Contoh StartTimeAttributeName

Pertimbangkan contoh ini:

  • StartTimeAttributeName = from
  • EndTimeAttributeName = until
  • ApiEndpoint = https://www.example.com

Kueri yang dikirim ke server jarak jauh adalah: https://www.example.com?from={QueryTimeFormat}&until={QueryTimeFormat + QueryWindowInMin}

Contoh QueryTimeIntervalAttributeName

Pertimbangkan contoh ini:

  • QueryTimeIntervalAttributeName = interval
  • QueryTimeIntervalPrepend = time:
  • QueryTimeIntervalDelimiter = ..
  • ApiEndpoint = https://www.example.com

Kueri yang dikirim ke server jarak jauh adalah: https://www.example.com?interval=time:{QueryTimeFormat}..{QueryTimeFormat + QueryWindowInMin}

Contoh permintaan menggunakan Microsoft Graph sebagai API sumber data

Contoh ini meminta pesan dengan parameter kueri filter. Untuk informasi selengkapnya, lihat Parameter kueri 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 "
}

Contoh sebelumnya mengirim GET permintaan ke https://graph.microsoft.com/v1.0/me/messages?filter=receivedDateTime gt {time of request} and receivedDateTime lt 2019-09-01T17:00:00.0000000. Tanda waktu diperbarui untuk setiap queryWindowInMin kali.

Hasil yang sama dicapai dengan contoh ini:

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

Opsi lain adalah ketika sumber data mengharapkan 2 parameter kueri, satu untuk waktu mulai dan satu untuk waktu akhir.

Contoh:

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

Ini mengirimkan GET permintaan ke https://graph.microsoft.com/me/calendarView?startDateTime=2019-09-01T09:00:00.0000000&endDateTime=2019-09-01T17:00:00.0000000

Untuk kueri kompleks, gunakan QueryParametersTemplate. Contoh berikutnya ini mengirimkan POST permintaan dengan parameter dalam isi.

Contoh:

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

Konfigurasi respons

Tentukan penanganan respons konektor data Anda dengan parameter berikut:

Bidang Wajib Tipe Deskripsi
EventsJsonPaths Benar Daftar String Menentukan jalur ke pesan dalam JSON respons. Ekspresi jalur JSON menentukan jalur ke elemen, atau satu set elemen, dalam struktur JSON
SuccessStatusJsonPath String Menentukan jalur ke pesan berhasil dalam JSON respons. Ketika parameter ini ditentukan, SuccessStatusValue parameter juga harus ditentukan.
SuccessStatusValue String Menentukan jalur ke nilai pesan berhasil dalam JSON respons
IsGzipCompressed Boolean Menentukan apakah respons dikompresi dalam file gzip
format Benar String json atau csv atau xml
CompressionAlgo String Algoritma kompresi, baik multi-gzip atau deflate. Untuk algoritma kompresi gzip, cukup konfigurasikan IsGzipCompressed ke True alih-alih mengatur nilai untuk parameter ini.
CsvDelimiter String Jika format respons adalah CSV dan Anda ingin mengubah pemisah CSV default ","
Batas HasCsv Boolean Menunjukkan apakah data CSV memiliki batas
HasCsvHeader Boolean Menunjukkan apakah data CSV memiliki header, defaultnya adalah True
CsvEscape String Karakter escape untuk batas bidang, defaultnya adalah "

Misalnya, CSV dengan header id,name,avg dan baris data yang berisi spasi seperti 1,"my name",5.5 memerlukan " batas bidang.
ConvertChildPropertiesToArray Boolean Kasus khusus di mana server jarak jauh mengembalikan objek alih-alih daftar peristiwa di mana setiap properti memiliki data di dalamnya.

Catatan

Jenis format CSV diurai oleh spesifikasi RFC4180 .

Contoh konfigurasi respons

Respons server dengan format JSON diharapkan, dengan data yang diminta dalam nilai properti. Status properti respons menunjukkan untuk menyerap data hanya jika nilainya adalah success.

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

Respons yang diharapkan dalam contoh ini mempersiapkan CSV tanpa header.

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

Konfigurasi penomoran halaman

Ketika sumber data tidak dapat mengirim seluruh payload respons sekaligus, konektor data CCP perlu mengetahui cara menerima bagian data di halaman respons. Jenis halaman yang akan dipilih adalah:

Jenis halaman faktor keputusan
Apakah respons API memiliki tautan ke halaman berikutnya dan sebelumnya?
Apakah respons API memiliki token atau kursor untuk halaman berikutnya dan sebelumnya?
Apakah respons API mendukung parameter untuk jumlah objek yang akan dilewati saat penomoran halaman?

Mengonfigurasi LinkHeader atau PersistentLinkHeader

Jenis halaman yang paling umum adalah ketika API sumber data server menyediakan URL ke halaman data berikutnya dan sebelumnya. Untuk informasi selengkapnya tentang spesifikasi Header Tautan, lihat RFC 5988.

LinkHeader halaman berarti respons API mencakup:

  • Link header respons HTTP
  • atau jalur JSON untuk mengambil tautan dari isi respons.

PersistentLinkHeader halaman memiliki properti yang sama dengan LinkHeader, kecuali header tautan tetap ada di penyimpanan backend. Opsi ini mengaktifkan tautan halaman di seluruh jendela kueri. Misalnya, beberapa API tidak mendukung waktu mulai atau waktu akhir kueri. Sebaliknya, mereka mendukung kursor sisi server. Jenis halaman persisten dapat digunakan untuk mengingat kursor sisi server. Untuk informasi selengkapnya, lihat Apa itu kursor?.

Catatan

Hanya ada satu kueri yang berjalan untuk konektor dengan PersistentLinkHeader untuk menghindari kondisi balapan di kursor sisi server. Ini dapat memengaruhi latensi.

Bidang Wajib Tipe Deskripsi
LinkHeaderTokenJsonPath Salah String Gunakan properti ini untuk menunjukkan tempat mendapatkan nilai dalam isi respons.

Misalnya, jika sumber data mengembalikan JSON berikut: { nextPage: "foo", value: [{data}]} maka LinkHeaderTokenJsonPath akan menjadi $.nextPage
PageSize Salah Bilangan bulat Berapa banyak peristiwa per halaman
PageSizeParameterName Salah String Nama parameter kueri untuk ukuran halaman

Berikut adalah beberapa contoh:

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

Mengonfigurasi NextPageUrl

NextPageUrl halaman berarti respons API menyertakan tautan kompleks dalam isi respons yang mirip LinkHeaderdengan , tetapi URL disertakan dalam isi respons alih-alih header.

Bidang Wajib Tipe Deskripsi
PageSize Salah Bilangan bulat Berapa banyak peristiwa per halaman
PageSizeParameterName Salah String Nama parameter kueri untuk ukuran halaman
NextPageUrl Salah String Hanya jika konektor adalah untuk Coralogix API
NextPageUrlQueryParameters Salah Pasangan nilai Kunci Objek – menambahkan parameter kueri kustom ke setiap permintaan untuk halaman berikutnya
NextPageParaName Salah String Menentukan nama halaman berikutnya dalam permintaan.
HasNextFlagJsonPath Salah String Menentukan jalur ke atribut bendera HasNextPage
NextPageRequestHeader Salah String Menentukan nama header halaman berikutnya dalam permintaan.
NextPageUrlQueryParametersTemplate Salah String Hanya jika konektor adalah untuk Coralogix API

Contoh:

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

Mengonfigurasi NextPageToken atau PersistentToken

NextPageToken pagination menggunakan token (hash atau kursor) yang mewakili status halaman saat ini. Token disertakan dalam respons API, dan klien menambahkannya ke permintaan berikutnya untuk mengambil halaman berikutnya. Metode ini sering digunakan ketika server perlu mempertahankan status yang tepat di antara permintaan.

PersistentToken pagination menggunakan token yang bertahan di sisi server. Server mengingat token terakhir yang diambil oleh klien dan menyediakan token berikutnya dalam permintaan berikutnya. Klien melanjutkan di mana ia meninggalkan bahkan jika membuat permintaan baru nanti.

Bidang Wajib Tipe Deskripsi
PageSize Salah Bilangan bulat Berapa banyak peristiwa per halaman
PageSizeParameterName Salah string Nama parameter kueri untuk ukuran halaman
NextPageTokenJsonPath Salah string Jalur JSON untuk token halaman berikutnya dalam isi respons.
NextPageTokenResponseHeader Salah string Jika NextPageTokenJsonPath kosong, gunakan token dalam nama header ini untuk halaman berikutnya.
NextPageParaName Salah string Menentukan nama halaman berikutnya dalam permintaan.
HasNextFlagJsonPath Salah string Menentukan jalur ke atribut bendera HasNextPage saat menentukan apakah lebih banyak halaman dibiarkan dalam respons.
NextPageRequestHeader Salah string Menentukan nama header halaman berikutnya dalam permintaan.

Contoh:

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

Mengonfigurasi Offset

Offset penomoran halaman menentukan jumlah halaman yang akan dilewati dan batas jumlah peristiwa yang akan diambil per halaman dalam permintaan. Klien mengambil rentang item tertentu dari himpunan data.

Bidang Wajib Tipe Deskripsi
PageSize Salah Bilangan bulat Berapa banyak peristiwa per halaman
PageSizeParameterName Salah String Nama parameter kueri untuk ukuran halaman
OffsetParaName Salah String Nama parameter kueri permintaan berikutnya. PKT menghitung nilai offset untuk setiap permintaan, (semua peristiwa yang diserap + 1)

Contoh:

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

Konfigurasi DCR

Bidang Wajib Tipe Deskripsi
DataCollectionEndpoint Benar String DCE (Titik Akhir Pengumpulan Data) misalnya: https://example.ingest.monitor.azure.com.
DataCollectionRuleImmutableId Benar String ID DCR yang tidak dapat diubah. Temukan dengan melihat respons pembuatan DCR atau menggunakan API DCR
StreamName Benar string Nilai ini adalah yang streamDeclaration ditentukan dalam DCR (awalan harus dimulai dengan Kustom-)

Contoh konektor data CCP

Berikut adalah contoh semua komponen konektor data CCP JSON bersama-sama.

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