Penanganan geolokasi dan alamat IP
Artikel ini menjelaskan cara kerja pencarian geolokasi dan penanganan alamat IP di Application Insights, bersama dengan cara mengubah perilaku default.
Perilaku default
Secara default, alamat IP dikumpulkan untuk sementara tetapi tidak disimpan dalam Application Insights. Proses ini mengikuti beberapa langkah dasar.
Saat telemetri dikirim ke Azure, Application Insights menggunakan alamat IP untuk melakukan pencarian geolokasi. Application Insights menggunakan hasil pencarian ini untuk mengisi bidang client_City
, client_StateOrProvince
, dan client_CountryOrRegion
. Alamat tersebut kemudian dibuang dan 0.0.0.0
ditulis ke bidang client_IP
.
Untuk menghapus data geolokasi, lihat artikel berikut ini:
Jenis telemetri adalah:
- Telemetri browser: Application Insights mengumpulkan alamat IP pengirim. Titik akhir penyerapan menghitung alamat IP.
- Telemetri server: Modul telemetri Application Insights untuk sementara mengumpulkan alamat IP klien. Alamat IP tidak dikumpulkan secara lokal saat header
X-Forwarded-For
diatur. Ketika daftar alamat IP masuk memiliki lebih dari satu item, alamat IP terakhir digunakan untuk mengisi bidang geolokasi.
Perilaku ini dirancang untuk membantu menghindari pengumpulan data pribadi dan informasi lokasi alamat IP yang tidak perlu. Jika memungkinkan, sebaiknya Anda menghindari pengumpulan data pribadi.
Catatan
Meskipun defaultnya adalah untuk tidak mengumpulkan alamat IP, Anda dapat mengganti perilaku ini. Sebaiknya Anda memverifikasi bahwa pengumpulan tidak melanggar persyaratan kepatuhan atau peraturan setempat.
Untuk mempelajari selengkapnya tentang menangani data pribadi di Application Insights, lihat Panduan untuk data pribadi.
Saat alamat IP tidak dikumpulkan, kota dan atribut geolokasi lainnya yang diisi oleh alur kami dengan menggunakan alamat IP juga tidak dikumpulkan. Anda dapat menutupi koleksi IP di sumbernya. Ada dua cara untuk melakukannya. Anda dapat:
- Hapus penginisialisasi IP klien. Untuk informasi selengkapnya, lihat Konfigurasi dengan konfigurasi Application Insights.
- Berikan inisialisasi kustom Anda sendiri. Untuk informasi selengkapnya, lihat contoh pemfilteran API.
Penyimpanan data alamat IP
Untuk mengaktifkan pengumpulan dan penyimpanan IP, properti DisableIpMasking
dari komponen Application Insights harus diatur ke true
. Anda dapat mengatur properti ini melalui templat Azure Resource Manager (templat ARM) atau dengan memanggil REST API.
Templat ARM
{
"id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/microsoft.insights/components/<resource-name>",
"name": "<resource-name>",
"type": "microsoft.insights/components",
"location": "westcentralus",
"tags": {
},
"kind": "web",
"properties": {
"Application_Type": "web",
"Flow_Type": "Redfield",
"Request_Source": "IbizaAIExtension",
// ...
"DisableIpMasking": true
}
}
Portal
Jika Anda perlu mengubah perilaku hanya untuk satu sumber daya Application Insights, gunakan portal Azure.
Buka sumber daya Application Insights Anda, lalu pilihtemplat EksporAutomation>.
Pilih Sebarkan.
Pilih Edit templat.
Catatan
Jika Anda mengalami kesalahan yang ditampilkan di cuplikan layar sebelumnya, Anda dapat mengatasinya. Ini menyatakan: "Grup sumber daya berada di lokasi yang tidak didukung oleh satu atau beberapa sumber daya dalam templat. Harap memilih grup sumber daya yang berbeda. “Pilih grup sumber daya yang berbeda untuk sementara waktu dari daftar dropdown, lalu pilih kembali grup sumber daya asli Anda.
Di templat JSON, temukan
properties
di dalamresources
. Tambahkan koma ke bidang JSON terakhir, lalu tambahkan baris baru berikut:"DisableIpMasking": true
. Lalu pilih Simpan.Pilih Tinjau + buat>Buat.
Catatan
Jika Anda melihat "Penyebaran Anda gagal," lihat detail penyebaran Anda untuk jenis
microsoft.insights/components
dan periksa statusnya. Jika itu berhasil, perubahan yang dibuat padaDisableIpMasking
disebarkan.Setelah penyebaran selesai, data telemetri baru akan direkam.
Jika Anda memilih dan mengedit templat lagi, Anda hanya akan melihat templat default tanpa properti yang baru ditambahkan. Jika Anda tidak melihat data alamat IP dan ingin mengonfirmasi bahwa
"DisableIpMasking": true
sudah diatur, jalankan perintah PowerShell berikut:# Replace `Fabrikam-dev` with the appropriate resource and resource group name. # If you aren't using Azure Cloud Shell, you need to connect to your Azure account # Connect-AzAccount $AppInsights = Get-AzResource -Name 'Fabrikam-dev' -ResourceType 'microsoft.insights/components' -ResourceGroupName 'Fabrikam-dev' $AppInsights.Properties
Daftar properti dikembalikan sebagai hasilnya. Salah satu properti harus membaca
DisableIpMasking: true
. Jika Anda menjalankan perintah PowerShell sebelum menyebarkan properti baru dengan Azure Resource Manager, properti tidak akan ada.
REST API
Payload REST API berikut membuat modifikasi yang sama:
PATCH https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/microsoft.insights/components/<resource-name>?api-version=2018-05-01-preview HTTP/1.1
Host: management.azure.com
Authorization: AUTH_TOKEN
Content-Type: application/json
Content-Length: 54
{
"location": "<resource location>",
"kind": "web",
"properties": {
"Application_Type": "web",
"DisableIpMasking": true
}
}
PowerShell
Cmdlet PoweShell 'Update-AzApplicationInsights' dapat menonaktifkan masking IP dengan DisableIPMasking
parameter .
Update-AzApplicationInsights -Name "aiName" -ResourceGroupName "rgName" -DisableIPMasking:$true
Untuk informasi selengkapnya tentang cmdlet 'Update-AzApplicationInsights', lihat Update-AzApplicationInsights
Penginisialisasi telemetri
Jika Anda memerlukan alternatif yang lebih fleksibel daripada DisableIpMasking
, Anda dapat menggunakan penginisialisasi telemetri untuk menyalin semua atau sebagian dari alamat IP ke bidang kustom. Kode untuk kelas ini sama di seluruh versi .NET.
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.ApplicationInsights.Extensibility;
namespace MyWebApp
{
public class CloneIPAddress : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
ISupportProperties propTelemetry = telemetry as ISupportProperties;
if (propTelemetry !=null && !propTelemetry.Properties.ContainsKey("client-ip"))
{
string clientIPValue = telemetry.Context.Location.Ip;
propTelemetry.Properties.Add("client-ip", clientIPValue);
}
}
}
}
Catatan
Jika Anda tidak dapat mengakses ISupportProperties
, pastikan Anda menjalankan rilis stabil terbaru dari Application Insights SDK. ISupportProperties
dimaksudkan untuk nilai-nilai kardinalitas yang tinggi. GlobalProperties
lebih tepat untuk nilai kardinalitas rendah seperti nama wilayah dan nama lingkungan.
using Microsoft.ApplicationInsights.Extensibility;
using CustomInitializer.Telemetry;
builder.services.AddSingleton<ITelemetryInitializer, CloneIPAddress>();
Node.js
appInsights.defaultClient.addTelemetryProcessor((envelope) => {
const baseData = envelope.data.baseData;
if (appInsights.Contracts.domainSupportsProperties(baseData)) {
const ipAddress = envelope.tags[appInsights.defaultClient.context.keys.locationIp];
if (ipAddress) {
baseData.properties["client-ip"] = ipAddress;
}
}
});
Menampilkan hasil penginisialisasi telemetri Anda
Jika Anda mengirim lalu lintas baru ke situs Anda dan menunggu beberapa menit, Anda kemudian dapat menjalankan kueri untuk mengonfirmasi bahwa koleksi tersebut berfungsi:
requests
| where timestamp > ago(1h)
| project appName, operation_Name, url, resultCode, client_IP, customDimensions.["client-ip"]
Alamat IP yang baru dikumpulkan akan muncul di kolom customDimensions_client-ip
. Kolom client-ip
default akan tetap memiliki keempat oktet yang dinolkan.
Jika Anda menguji dari localhost, dan nilai untuk customDimensions_client-ip
adalah ::1
, nilai ini adalah perilaku yang diharapkan. Nilai ::1
mewakili alamat loopback di IPv6. Ini setara dengan 127.0.0.1
di IPv4.
Tanya jawab umum
Bagian ini menyediakan jawaban atas pertanyaan umum.
Bagaimana data kota, negara/wilayah, dan geolokasi lainnya dihitung?
Kami mencari alamat IP (IPv4 atau IPv6) klien web:
- Telemetri browser: Kami mengumpulkan alamat IP pengirim.
- Telemetri server: Modul Application Insights mengumpulkan alamat IP klien. Ini tidak dikumpulkan jika
X-Forwarded-For
diatur. - Untuk mempelajari selengkapnya tentang bagaimana alamat IP dan data geolokasi dikumpulkan di Application Insights, lihat Penanganan geolokasi dan alamat IP.
Anda dapat mengonfigurasi ClientIpHeaderTelemetryInitializer
untuk mengambil alamat IP dari header yang berbeda. Di beberapa sistem, misalnya, ini dipindahkan oleh proksi, load balancer, atau CDN ke X-Originating-IP
. Pelajari lebih lanjut.
Anda bisa menggunakan Power BI untuk menampilkan telemetri permintaan Anda di peta jika Anda telah bermigrasi ke sumber daya berbasis ruang kerja.
Langkah berikutnya
- Pelajari selengkapnya tentang pengumpulan data pribadi di Application Insights.
- Pelajari selengkapnya tentang cara kerja pengumpulan alamat IP di Application Insights. Artikel ini adalah posting blog eksternal yang lebih lama yang ditulis oleh salah satu insinyur kami. Ini mendahului perilaku default saat ini di mana alamat IP dicatat sebagai
0.0.0.0
. Artikel ini masuk ke kedalaman yang lebih mendalam tentang mekanisme penginisialisasi telemetri bawaan.