Multitenancy och Application Insights
Application Insights är en tjänst som övervakar prestanda, tillgänglighet och användning av dina webbprogram. Det kan hjälpa dig att identifiera och diagnostisera problem, analysera användarbeteende och spåra viktiga mått. Den här artikeln beskriver några av funktionerna i Application Insights som är användbara för system med flera klientorganisationer. Den beskriver också olika innehavarmodeller.
Dricks
Application Insights är utformat och optimerat för övervakningslösningar. Den är inte avsedd att användas för att samla in varje händelse som inträffar i ett system, som du kan behöva göra för granskning eller fakturering. Mer information om hur du kan mäta användning i faktureringssyfte finns i Överväganden för att mäta förbrukning i lösningar med flera klienter.
Isoleringsmodeller
När du implementerar ett system med flera klientorganisationer som använder Application Insights måste du fastställa den isoleringsnivå som krävs. Det finns flera isoleringsmodeller som du kan välja mellan. Här följer några faktorer som kan påverka ditt val:
- Hur många klienter planerar du att ha?
- Delar du programnivån mellan flera klienter eller distribuerar du separata distributionsstämplar för varje klientorganisation?
- Är du eller dina kunder känsliga för att lagra data tillsammans med andra klientorganisationers data?
- Är programnivån för din lösning multitenant och den enskilda klientorganisationen på datanivån?
- Varierar telemetrikraven mellan klientorganisationer?
Dricks
De viktigaste faktorerna som avgör kostnaden för Application Insights är mängden data som du skickar till den och hur länge data behålls. I ett program med flera klientorganisationer är den totala kostnaden densamma för en dedikerad Application Insights-instans som för en delad instans. Mer information finns på prissättningssidan för Azure Monitor.
Den här tabellen sammanfattar skillnaderna mellan de viktigaste innehavarmodellerna för Application Insights:
Att tänka på | Globalt delad Application Insights-instans | En Application Insights-instans per region/stämpel | En Application Insights-instans per klientorganisation |
---|---|---|---|
Dataisolering | Låg | Låg | Hög |
Prestandaisolering | Låg | Medium | Högt |
Distributionskomplexitet | Låg till medel, beroende på antalet klienter | Medel, beroende på antalet klienter | Högt |
Driftkomplexitet | Låg | Medium | Högt |
Exempelscenario | Stor lösning för flera klientorganisationer med en delad programnivå | Lösning för flera klientorganisationer med regionala distributioner för att bättre betjäna en global kundbas | Enskilda programinstanser per klientorganisation |
Globalt delad Application Insights-instans
Du kan använda en enda instans av Application Insights för att spåra telemetri för klienter i ett program med flera klienter, enligt följande:
Fördelarna med den här metoden är förenklad konfiguration och hantering av programmet, eftersom du bara behöver instrumentera programkoden en gång. Nackdelar med den här metoden är begränsningar och kvoter som är associerade med en enda Application Insights-instans. Information om huruvida gränser kan påverka ditt program med flera klientorganisationer finns i Application Insights-gränserna.
När du använder en delad Application Insights-resurs kan det också vara svårare att isolera och filtrera data för varje klientorganisation, särskilt om du har ett stort antal klienter. Eftersom alla klienter delar samma Log Analytics-arbetsyta och instrumentationsnycklar kan säkerhet och sekretess också vara ett problem.
För att lösa dessa problem kan du behöva implementera logik och mekanismer för att säkerställa att data kan filtreras efter klientorganisation och att driftteamet kan se data per klientorganisation korrekt. Du kan implementera filtrering genom att lägga till en anpassad egenskap för att avbilda klientorganisations-ID:t som en del av varje telemetriobjekt. Klientorganisations-ID:t kan sedan användas för att fråga efter data.
En Application Insights-instans per stämpel
Lösningar för flera klientorganisationer innehåller ofta flera stämplar som kan distribueras i olika Azure-regioner. Med stämplar kan du hantera klientorganisationer som är lokala för en viss region så att du kan ge bättre prestanda. En enda stämpel kan tjäna en enda klientorganisation eller en delmängd av dina klienter. Mer information om stämplar finns i Mönster för distributionsstämplar.
Du kan välja att distribuera en Application Insights-instans i varje stämpel och dela instansen mellan alla klienter som använder stämpeln, enligt följande:
Den här metoden ger mer flexibilitet med resursgränser eftersom gränserna gäller per instans av Application Insights.
En Application Insights-instans per klientorganisation
Du kan välja att använda en dedikerad Application Insights-instans för varje klientorganisation:
Den här metoden ger dig mer flexibilitet och kontroll över klientorganisationens telemetridata och ger den starkaste dataisoleringen. När du använder den här modellen kan du konfigurera klientspecifika inställningar och kvarhållningsprinciper.
När du använder den här metoden måste du dock distribuera ett stort antal Application Insights-instanser, hantera klientspecifika inställningar i en klientkatalog och ändra programkoden när nya klienter registreras. Observera att beslutet att distribuera en dedikerad Application Insights-instans per klientorganisation är separat från beslutet att distribuera en programnivå för varje klientorganisation. Du kan till exempel välja att distribuera en enda programinstans i en stämpel som delas av flera klienter men som distribuerar en Application Insights-instans för varje klientorganisation.
Du bör överväga att använda en Application Insights-instans per klientorganisation om du behöver en hög grad av dataisolering mellan dina klienter, du behöver olika konfigurationer för olika klienter, eller om tjänstgränserna för en enda Application Insights-instans inte uppfyller dina behov.
Med den här metoden kan det vara svårt att aggregera data och jämföra dem mellan alla klienter eftersom du måste köra frågor mot flera Application Insights-instanser separat. Om du använder den här metoden bör du överväga att använda frågor mellan resurser och Azure Monitor-arbetsböcker.
Application Insights-funktioner som stöder flera klientorganisationer
Anpassade egenskaper och mått
Application Insights är ett sätt att utöka telemetridata med anpassade egenskaper och mått. Anpassade egenskaper är nyckel/värde-par som du kan koppla till alla telemetriobjekt, till exempel begäranden eller händelser. Anpassade mått är numeriska värden som du kan spåra över tid, till exempel en poäng eller längden på en kö. Du kan använda anpassade egenskaper och mått för att lägga till klientspecifik information, till exempel klientorganisations-ID, klientnamn, klientplats och distributionsstämpel-ID, till telemetridata.
Det finns två sätt att lägga till anpassade egenskaper i telemetrin: med hjälp TelemetryClient
av eller med telemetriinitierare.
TelemetriKlient
TelemetryClient är ett objekt som du kan använda för att spåra alla telemetriobjekt. Du kan komma åt de anpassade egenskaperna för alla telemetriobjekt via dess Properties
ordlista. Fördelen med att använda TelemetryClient
är att du har fullständig kontroll över vilka anpassade egenskaper som ska läggas till och när du ska lägga till dem. Nackdelen är att du behöver komma åt och ändra varje telemetriobjekt som du vill utöka med anpassade egenskaper.
Telemetriinitierare
Du kan använda telemetriinitierare för att lägga till information i alla telemetriobjekt eller för att ändra egenskaper som anges av standardtelemetrimodulerna.
När du delar en Application Insights-instans mellan flera klienter är en telemetriinitierare ofta ett bra sätt att mata in klientorganisations-ID:t i varje telemetriobjekt. Du kan sedan använda ID:t för att fråga och filtrera efter rapportering. Fördelen med att använda telemetriinitierare är att du kan använda anpassade egenskaper för alla eller vissa telemetriobjekt på ett ställe utan att behöva skriva kod för varje objekt. Nackdelen är att du har mindre kontroll över vilka anpassade egenskaper som ska läggas till i varje telemetriobjekt, så du kan lägga till onödiga eller redundanta data.
När du lägger till anpassade egenskaper för telemetridata kan du använda kraftfulla funktioner i Application Insights för att övervaka och analysera program med flera klienter på ett mer detaljerat och meningsfullt sätt. Du kan till exempel:
- Använd Metrics Explorer för att skapa diagram och diagram som visar programmets prestanda och användning för varje klientorganisation.
- Använd Log Analytics för att skriva komplexa frågor som filtrerar, aggregerar och kopplar telemetridata baserat på klientspecifika egenskaper eller mått.
- Använd aviseringar för att konfigurera regler som meddelar dig när vissa villkor uppfylls för en klientorganisation.
- Använd Azure Monitor-arbetsböcker för att skapa interaktiva rapporter och instrumentpaneler som visualiserar programmets hälsa och status för varje klientorganisation.
Förena flera Application Insights-instanser i en enda vy
Det finns flera sätt att förena data från flera Application Insights-instanser. Ditt val beror på dina behov och inställningar. I följande avsnitt beskrivs några av alternativen.
Frågor mellan resurser
Du kan använda frågor mellan resurser för att fråga data från flera Application Insights-instanser i en enda fråga. Instanserna kan finnas i en enskild resursgrupp, i mer än en resursgrupp eller i mer än en prenumeration. När antalet Application Insights-arbetsytor i en fråga ökar kan frågeprestanda försämras. Antalet Application Insights-arbetsytor som du kan inkludera i en enda fråga är också begränsat. Mer information finns i Fråga över flera arbetsytor och appar.
Azure Monitor-arbetsböcker
Du kan använda Azure Monitor-arbetsböcker för att skapa interaktiva rapporter och instrumentpaneler baserat på data från flera källor, inklusive Application Insights. Med dessa rapporter och instrumentpaneler kan du visualisera och analysera data från flera Application Insights-instanser i en enda vy.
Svarstid
Den tid det tar för data i ett övervakat system att bli tillgängliga för analys kallas svarstid. En delad Application Insights-instans i ett program med flera klientorganisationer medför inte mer svarstid än en dedikerad såvida inte den delade instansen begränsas och begränsningen förhindrar att data matas in. I det scenariot ökar svarstiden.
Hastighetsbegränsning vid inmatning
Du kan utföra inmatningshastighetsbegränsning i Application Insights med hjälp av sampling för att begränsa mängden telemetridata som matas in av din tjänst per dag. Sampling hjälper till att förhindra att Application Insights begränsar telemetri på grund av inmatningsgränser. Du kan använda sampling med fast hastighet för att fastställa en optimal samplingsfrekvens, baserat på antalet klienter och det dagliga taket, för att hålla dig inom gränserna.
Deltagare
Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.
Huvudförfattare:
- Raj Nemani | Direktör, partnerteknikstrateg, GPS-ISV
Övriga medarbetare:
- Mick Alberts | Teknisk författare
- Rob Bagby | Huvudinnehållsutvecklare, C+E Skilling Content R&D
- John Downs | Huvudprogramtekniker
- Rick Hallihan | Senior Software Engineer, C+E Skilling Content R&D
- Landon Pierce | Kundtekniker, Azure CXP
- Daniel Scott-Raynsford | Partnerteknikstrateg, OCP
- Arsen Vladimirskiy | Huvudkundtekniker, Azure CXP
Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.
Nästa steg
- Utbildning: Övervaka appprestanda
- Vad är Application Insights?
- Application Insights-gränser
- Fråga över flera arbetsytor och appar
- Utbildning: Visualisera data som kombinerats från flera datakällor med hjälp av Azure-arbetsböcker
- Samla in anpassade mått för Application Insights med .NET och .NET Core
- Application Insights-API för anpassade händelser och mått
- Application Insights-telemetridatamodell
- Azure Monitor-priser
- Inmatningstid för loggdata i Azure Monitor
- Sampling i Application Insights
- Filtrera och förbearbeta telemetri i Application Insights SDK