Geografické umístění a zpracování IP adres
Tento článek vysvětluje, jak funguje vyhledávání geografické polohy a zpracování IP adres v Application Insights, a také to, jak upravit výchozí chování.
Výchozí chování
Ve výchozím nastavení se IP adresy dočasně shromažďují, ale neukládají se v Application Insights. Tento proces se řídí několika základními kroky.
Když se telemetrie odesílá do Azure, Application Insights použije IP adresu k vyhledání geografické polohy. Application Insights používá výsledky tohoto vyhledávání k naplnění polí client_City
, client_StateOrProvince
a client_CountryOrRegion
. Adresa se pak zahodí a 0.0.0.0
zapíše se do client_IP
pole.
Pokud chcete odebrat data o geografické poloze, přečtěte si následující články:
Typy telemetrie jsou:
- Telemetrie prohlížeče: Application Insights shromažďuje IP adresu odesílatele. Koncový bod příjmu dat vypočítá IP adresu.
- Telemetrie serveru: Modul telemetrie Application Insights dočasně shromažďuje IP adresu klienta. IP adresa se při nastavení hlavičky neshromažďuje
X-Forwarded-For
místně. Pokud seznam příchozích IP adres obsahuje více než jednu položku, použije se k naplnění polí geografické polohy poslední IP adresa.
Toto chování je záměrně, aby se zabránilo zbytečnému shromažďování osobních údajů a informací o poloze IP adresy. Kdykoli je to možné, doporučujeme se shromažďování osobních údajů vyhnout.
Poznámka
Ve výchozím nastavení se IP adresy neshromažďují, ale toto chování můžete přepsat. Doporučujeme ověřit, že kolekce neporušuje žádné požadavky na dodržování předpisů nebo místní předpisy.
Další informace o zpracování osobních údajů ve službě Application Insights najdete v pokynech k osobním údajům.
Pokud se IP adresy neshromažďují, neshromažďují se ani atributy města a další geografické polohy, které naplňuje náš kanál pomocí IP adresy. Shromažďování IP adres můžete maskovat ve zdroji. Existují dva způsoby, jak to udělat. Můžete:
- Odeberte inicializátor IP adresy klienta. Další informace najdete v tématu Konfigurace s využitím konfigurace Application Insights.
- Zadejte vlastní inicializátor. Další informace najdete v příkladu filtrování rozhraní API.
Ukládání dat IP adres
Pokud chcete povolit shromažďování a úložiště IP adres, DisableIpMasking
musí být vlastnost komponenty Application Insights nastavená na true
hodnotu . Tuto vlastnost můžete nastavit prostřednictvím šablon Azure Resource Manager (šablon ARM) nebo voláním rozhraní REST API.
Šablona 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
}
}
Portál
Pokud potřebujete změnit chování jenom pro jeden prostředek Application Insights, použijte Azure Portal.
Přejděte do prostředku Application Insights a pak vyberte Šablona exportu automatizace>.
Vyberte Nasadit.
Vyberte Upravit šablonu.
Poznámka
Pokud se zobrazí chyba zobrazená na předchozím snímku obrazovky, můžete ji vyřešit. Uvádí: "Skupina prostředků je v umístění, které není podporováno jedním nebo více prostředky v šabloně. Zvolte jinou skupinu prostředků. V rozevíracím seznamu dočasně vyberte jinou skupinu prostředků a pak znovu vyberte původní skupinu prostředků.
V šabloně JSON vyhledejte
properties
vresources
souboru . Do posledního pole JSON přidejte čárku a pak přidejte následující nový řádek:"DisableIpMasking": true
. Pak vyberte Uložit.Vyberte Zkontrolovat a vytvořit>Vytvořit.
Poznámka
Pokud se zobrazí "Vaše nasazení selhalo", projděte si podrobnosti o nasazení s typem
microsoft.insights/components
a zkontrolujte stav. Pokud se to podaří, byly změny provedené vDisableIpMasking
nasazovány.Po dokončení nasazení se zaznamenají nová telemetrická data.
Pokud šablonu znovu vyberete a upravíte, zobrazí se pouze výchozí šablona bez nově přidané vlastnosti. Pokud se nezobrazují data IP adres a chcete ověřit, že
"DisableIpMasking": true
je nastavená, spusťte následující příkazy PowerShellu:# 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
Jako výsledek se vrátí seznam vlastností. Jedna z vlastností by měla mít hodnotu
DisableIpMasking: true
. Pokud před nasazením nové vlastnosti pomocí Azure Resource Manager spustíte příkazy PowerShellu, vlastnost nebude existovat.
REST API
Následující datová část rozhraní REST API provede stejné úpravy:
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
Rutina Update-AzApplicationInsights v PoweShellu může zakázat maskování IP adres pomocí parametru DisableIPMasking
.
Update-AzApplicationInsights -Name "aiName" -ResourceGroupName "rgName" -DisableIPMasking:$true
Další informace o rutině Update-AzApplicationInsights najdete v tématu Update-AzApplicationInsights.
Inicializátor telemetrie
Pokud potřebujete flexibilnější alternativu než DisableIpMasking
, můžete pomocí inicializátoru telemetrie zkopírovat celou IP adresu nebo její část do vlastního pole. Kód pro tuto třídu je stejný ve všech verzích .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);
}
}
}
}
Poznámka
Pokud nemáte přístup k ISupportProperties
sadě , ujistěte se, že používáte nejnovější stabilní verzi sady Application Insights SDK. ISupportProperties
je určen pro hodnoty vysoké kardinality. GlobalProperties
je vhodnější pro hodnoty nízké kardinality, jako je název oblasti a název prostředí.
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;
}
}
});
Zobrazení výsledků inicializátoru telemetrie
Pokud odešlete nový provoz na svůj web a několik minut počkáte, můžete spustit dotaz, abyste potvrdili, že kolekce funguje:
requests
| where timestamp > ago(1h)
| project appName, operation_Name, url, resultCode, client_IP, customDimensions.["client-ip"]
Nově shromážděné IP adresy se zobrazí ve sloupci customDimensions_client-ip
. Ve výchozím client-ip
sloupci zůstanou všechny čtyři oktety vynulované.
Pokud testujete z localhost a hodnota pro customDimensions_client-ip
je ::1
, tato hodnota je očekávané chování. Hodnota ::1
představuje adresu zpětné smyčky v protokolu IPv6. Je to ekvivalent v 127.0.0.1
protokolu IPv4.
Nejčastější dotazy
Tato část obsahuje odpovědi na běžné otázky.
Jak se počítají data o městě, zemi/oblasti a další geografické poloze?
Vyhledáme IP adresu (IPv4 nebo IPv6) webového klienta:
- Telemetrie prohlížeče: Shromažďujeme IP adresu odesílatele.
- Telemetrie serveru: Modul Application Insights shromažďuje IP adresu klienta. Pokud je nastavená hodnota, neshromažďuje
X-Forwarded-For
se. - Další informace o tom, jak se data IP adres a geografické polohy shromažďují ve službě Application Insights, najdete v tématu Věnovaném geografické poloze a zpracování IP adres.
Můžete nakonfigurovat ClientIpHeaderTelemetryInitializer
tak, aby ip adresu převzala z jiné hlavičky. V některých systémech se například přesouvají proxy serverem, nástrojem pro vyrovnávání zatížení nebo CDN do X-Originating-IP
. Další informace.
Pokud jste migrovali na prostředek založený na pracovním prostoru, můžete pomocí Power BI zobrazit telemetrii požadavků na mapě.
Další kroky
- Přečtěte si další informace o shromažďování osobních údajů v Application Insights.
- Přečtěte si další informace o tom, jak funguje shromažďování IP adres v Application Insights. Tento článek je starší externí blogový příspěvek, který napsal jeden z našich techniků. Předchází aktuálnímu výchozímu chování, kdy je IP adresa zaznamenána jako
0.0.0.0
. Článek se podrobněji zabývá mechanikou integrovaného inicializátoru telemetrie.