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_StateOrProvinceve client_CountryOrRegionalanlarını client_Citydoldurmak 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:

IP adresi verilerinin depolanması

IP toplama ve depolamayı etkinleştirmek için Application DisableIpMasking Insights bileşeninin özelliği olarak trueayarlanmalı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.

  1. Application Insights kaynağınıza gidin ve Otomasyon>Dışarı Aktarma şablonu'na tıklayın.

  2. Dağıt'ı seçin.

    Dağıt düğmesini gösteren ekran görüntüsü.

  3. Şablonu düzenle'yi seçin.

    Düzenle düğmesinin yanı sıra kaynak grubuyla ilgili bir uyarıyı gösteren ekran görüntüsü.

    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.

  4. 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.

    İstek kaynağının özelliğinden sonra virgül ve yeni bir satır eklenmesini gösteren ekran görüntüsü.

  5. 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ılan DisableIpMasking değişiklikler dağıtılır.

  6. 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: truegerekir. 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 DisableIpMaskingdaha 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 ISupportPropertiesyoksa 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-IPtaşı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.0kaydedildiği geçerli varsayılan davranışı önceden kaydeder. Makale, yerleşik telemetri başlatıcısının mekaniği konusunda daha derine inmektedir.