Coğrafi konum ve IP adresi işleme
Bu makalede, coğrafi konum arama ve IP adresi işlemenin Application Insights'ta nasıl çalıştığı ve varsayılan davranışın nasıl değiştirileceği açıklanmaktadır.
Varsayılan davranış
Varsayılan olarak, IP adresleri geçici olarak toplanır ancak Application Insights'ta depolanmaz. Bu işlem bazı temel adımları izler.
Telemetri Azure'a gönderildiğinde Application Insights coğrafi konum araması yapmak için IP adresini kullanır. Application Insights, , client_StateOrProvince
ve client_CountryOrRegion
alanlarını client_City
doldurmak için bu aramanın sonuçlarını kullanır. Adres daha sonra atılır ve 0.0.0.0
alana yazılır client_IP
.
Coğrafi konum verilerini kaldırmak için aşağıdaki makalelere bakın:
Telemetri türleri şunlardır:
- Tarayıcı telemetrisi: Application Insights gönderenin IP adresini toplar. Alma uç noktası IP adresini hesaplar.
- Sunucu telemetrisi: Application Insights telemetri modülü geçici olarak istemci IP adresini toplar. Üst bilgi ayarlandığında IP adresi yerel olarak
X-Forwarded-For
toplanmaz. Gelen IP adresi listesinde birden fazla öğe olduğunda, coğrafi konum alanlarını doldurmak için son IP adresi kullanılır.
Bu davranış, kişisel verilerin ve IP adresi konum bilgilerinin gereksiz bir şekilde toplanmasından kaçınmaya yardımcı olmak için tasarım gereğidir. Mümkün olduğunda kişisel verilerin toplanmasından kaçınmanızı öneririz.
Not
Varsayılan olarak IP adresleri toplanmıyor olsa da, bu davranışı geçersiz kılabilirsiniz. Koleksiyonun herhangi bir uyumluluk gereksinimlerini veya yerel düzenlemeleri bozmadığını doğrulamanızı öneririz.
Application Insights'ta kişisel verileri işleme hakkında daha fazla bilgi edinmek için bkz. Kişisel veriler için rehberlik.
IP adresleri toplanmadığında, ip adresi kullanılarak işlem hattımız tarafından doldurulan şehir ve diğer coğrafi konum öznitelikleri de toplanmaz. KAYNAKta IP koleksiyonunu maskeleyebilirsiniz. Bunu yapmanın iki yolu vardır. Şunları yapabilirsiniz:
- İstemci IP başlatıcısını kaldırın. Daha fazla bilgi için, bkz. Applications Insights Yapılandırması ile Yapılandırma.
- Kendi özel başlatıcınızı sağlayın. Daha fazla bilgi için bkz. API filtreleme örneği.
IP adresi verilerinin depolanması
IP toplama ve depolamayı etkinleştirmek için Application DisableIpMasking
Insights bileşeninin özelliği olarak true
ayarlanmalıdır. Bu özelliği Azure Resource Manager şablonları (ARM şablonları) aracılığıyla veya REST API'yi çağırarak ayarlayabilirsiniz.
ARM şablonu
{
"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
Yalnızca tek bir Application Insights kaynağı için davranışı değiştirmeniz gerekiyorsa Azure portal kullanın.
Application Insights kaynağınıza gidin ve Otomasyon>Dışarı Aktarma şablonu'na tıklayın.
Dağıt'ı seçin.
Şablonu düzenle'yi seçin.
Not
Önceki ekran görüntüsünde gösterilen hatayla karşılaşırsanız sorunu çözebilirsiniz. Şu ifadeyi gösterir: "Kaynak grubu, şablondaki bir veya daha fazla kaynak tarafından desteklenmeyen bir konumda. Lütfen farklı bir kaynak grubu seçin." Açılan listeden geçici olarak farklı bir kaynak grubu seçin ve ardından özgün kaynak grubunuzu yeniden seçin.
JSON şablonunda içinde
resources
öğesini bulunproperties
. Son JSON alanına bir virgül ekleyin ve sonra şu yeni satırı ekleyin:"DisableIpMasking": true
. Sonra Kaydet'i seçin.Gözden geçir ve oluştur>Oluştur'u seçin.
Not
"Dağıtımınız başarısız oldu" ifadesini görürseniz, türüne
microsoft.insights/components
sahip dağıtım ayrıntılarınıza bakın ve durumu denetleyin. Bu başarılı olursa, yapılanDisableIpMasking
değişiklikler dağıtılır.Dağıtım tamamlandıktan sonra yeni telemetri verileri kaydedilir.
Şablonu yeniden seçip düzenlerseniz, yeni eklenen özellik olmadan yalnızca varsayılan şablonu görürsünüz. IP adresi verilerini görmüyorsanız ve bunun ayarlandığını
"DisableIpMasking": true
onaylamak istiyorsanız aşağıdaki PowerShell komutlarını çalıştırın:# 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
Sonuç olarak bir özellik listesi döndürülür. Özelliklerden birinin okuması
DisableIpMasking: true
gerekir. Yeni özelliği Azure Resource Manager ile dağıtmadan önce PowerShell komutlarını çalıştırırsanız özelliği mevcut olmaz.
REST API
Aşağıdaki REST API yükü aynı değişiklikleri yapar:
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
PoweShell 'Update-AzApplicationInsights' cmdlet'i parametresiyle IP maskeleme özelliğini DisableIPMasking
devre dışı bırakabilir.
Update-AzApplicationInsights -Name "aiName" -ResourceGroupName "rgName" -DisableIPMasking:$true
'Update-AzApplicationInsights' cmdlet'i hakkında daha fazla bilgi için bkz . Update-AzApplicationInsights
Telemetri başlatıcısı
yerine DisableIpMasking
daha esnek bir alternatife ihtiyacınız varsa, IP adresinin tamamını veya bir bölümünü özel bir alana kopyalamak için telemetri başlatıcısı kullanabilirsiniz. Bu sınıfın kodu .NET sürümlerinde aynıdır.
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);
}
}
}
}
Not
erişiminiz ISupportProperties
yoksa Application Insights SDK'sının en son kararlı sürümünü çalıştırdığınızdan emin olun. ISupportProperties
yüksek kardinalite değerlerine yöneliktir. GlobalProperties
bölge adı ve ortam adı gibi düşük kardinalite değerleri için daha uygundur.
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;
}
}
});
Telemetri başlatıcınızın sonuçlarını görüntüleme
Sitenize yeni trafik gönderir ve birkaç dakika beklerseniz, koleksiyonun çalıştığını onaylamak için bir sorgu çalıştırabilirsiniz:
requests
| where timestamp > ago(1h)
| project appName, operation_Name, url, resultCode, client_IP, customDimensions.["client-ip"]
Yeni toplanan IP adresleri sütunda customDimensions_client-ip
görünür. Varsayılan client-ip
sütunda dört sekizlinin tümü de sıfırlanır.
localhost'tan test ediyorsanız ve değeri customDimensions_client-ip
ise ::1
, bu değer beklenen davranıştır. değeri, ::1
IPv6'daki geri döngü adresini temsil eder. IPv4 ile eşdeğerdir 127.0.0.1
.
Sık sorulan sorular
Bu bölümde sık sorulan soruların yanıtları sağlanır.
Şehir, ülke/bölge ve diğer coğrafi konum verileri nasıl hesaplanır?
Web istemcisinin IP adresini (IPv4 veya IPv6) ararız:
- Tarayıcı telemetrisi: Gönderenin IP adresini toplarız.
- Sunucu telemetrisi: Application Insights modülü istemci IP adresini toplar. Ayarlandıysa
X-Forwarded-For
toplanmaz. - Application Insights'ta IP adresi ve coğrafi konum verilerinin nasıl toplandığı hakkında daha fazla bilgi edinmek için bkz. Coğrafi konum ve IP adresi işleme.
IP adresini farklı bir üst bilgiden alacak şekilde yapılandırabilirsiniz ClientIpHeaderTelemetryInitializer
. Örneğin, bazı sistemlerde bir ara sunucu, yük dengeleyici veya CDN tarafından öğesine X-Originating-IP
taşınır. Daha fazla bilgi edinin.
Çalışma alanı tabanlı bir kaynağa geçiş yaptıysanız istek telemetrinizi haritada görüntülemek için Power BI'ı kullanabilirsiniz.
Sonraki adımlar
- Application Insights'ta kişisel veri toplama hakkında daha fazla bilgi edinin.
- Application Insights'ta IP adresi koleksiyonunun nasıl çalıştığı hakkında daha fazla bilgi edinin. Bu makale, mühendislerimizden biri tarafından yazılmış eski bir dış blog gönderisidir. IP adresinin olarak
0.0.0.0
kaydedildiği geçerli varsayılan davranışı önceden kaydeder. Makale, yerleşik telemetri başlatıcısının mekaniği konusunda daha derine inmektedir.