Azure İzleyici Application Insights ile Azure İşlevleri izleme
Azure İşlevleri, işlevleri izlemek için Application Insights ile yerleşik tümleştirme sunar. .NET ve .NET Core dışındaki diller için, dağıtılmış izlemenin tüm avantajlarından yararlanmak için dile özgü diğer çalışanlar/uzantılar gerekir.
Application Insights günlük, performans ve hata verilerini toplar ve performans anomalilerini otomatik olarak algılar. Application Insights, sorunları tanılamanıza ve işlevlerinizin nasıl kullanıldığını anlamanıza yardımcı olacak güçlü analiz araçları içerir. Uygulama verilerinize görünürlük elde ettiğinizde performansı ve kullanılabilirliği sürekli geliştirebilirsiniz. Yerel işlev uygulaması proje geliştirme sırasında Application Insights'i bile kullanabilirsiniz.
Gerekli Application Insights izlemesi Azure İşlevleri yerleşik olarak bulunur. İşlev uygulamanızı bir Application Insights kaynağına bağlamak için tek ihtiyacınız olan geçerli bir bağlantı dizesi. İşlev uygulaması kaynağınız Azure'da oluşturulduğunda uygulama ayarlarınıza bağlantı dizesi eklenmelidir. İşlev uygulamanızın bir bağlantı dizesi yoksa, bunu el ile ayarlayabilirsiniz. Daha fazla bilgi için bkz. Azure İşlevleri ve Bağlantı dizelerinde yürütmeleri izleme.
Not
31 Mart 2025’te izleme anahtarı alımı desteği sona erecektir. İzleme anahtarı alımı çalışmaya devam edecek, ancak artık özellik için güncelleştirme veya destek sağlamayacağız. Yeni özelliklerden yararlanmak için bağlantı dizesi geçiş.
Desteklenen otomatik dağıtım senaryolarının listesi için bkz . Desteklenen ortamlar, diller ve kaynak sağlayıcıları.
Java uygulamaları için dağıtılmış izleme
Not
Bu özelliğin 8-9 saniyelik bir soğuk başlatma etkisine sahip olması ve 1 saniyeden daha kısa bir süreye indirilmesi gerekir. Bu özelliği erken benimsediyseniz (örneğin, Şubat 2023'ten önce), geçerli sürüme güncelleştirmek ve yeni daha hızlı başlatmadan yararlanmak için "Sorun Giderme" bölümünü gözden geçirin.
Java tabanlı Azure İşlevleri uygulamalarınızdan varsayılan olarak toplanandan daha fazla veri görüntülemek için Application Insights Java 3.x aracısını etkinleştirin. Bu aracı, Application Insights'ın popüler kitaplıklardan ve Azure Yazılım Geliştirme Setlerinden (SDK) bağımlılıkları, günlükleri ve ölçümleri otomatik olarak toplamasına ve ilişkilendirmesine olanak tanır. Bu telemetri, İşlevler tarafından yakalanan istek telemetrisine ek olarak sağlanır.
Uygulama haritasını kullanarak ve uçtan uca işlemlerin daha eksiksiz bir görünümüne sahip olarak sorunları daha iyi tanılayabilirsiniz. Sistemlerin ortalama performans ve hata oranlarıyla ilgili verilerle nasıl etkileşime geçtiğini gösteren topolojik bir görünüme sahipsiniz. Ayrıca uçtan uca tanılama için daha fazla veriniz vardır. Güvenilirlik sorunlarının ve performans sorunlarının kök nedenini istek temelinde kolayca bulmak için uygulama eşlemesini kullanabilirsiniz.
Daha gelişmiş kullanım örnekleri için, yayılma alanları ekleyerek, yayılma durumunu güncelleştirerek ve span öznitelikleri ekleyerek telemetriyi değiştirebilirsiniz. Standart API'leri kullanarak özel telemetri de gönderebilirsiniz.
Java işlev uygulamaları için dağıtılmış izlemeyi etkinleştirme
İşlev uygulamasına Genel Bakış bölmesinde Application Insights'a gidin. Koleksiyon Düzeyi'nin altında Önerilen'i seçin.
Yapılandırma
Tüketim planında olmayan bir Azure İşlev Uygulaması için bu özelliği yapılandırmak için Uygulama ayarlarına ortam değişkenleri ekleyin. Kullanılabilir yapılandırmaları gözden geçirmek için bkz . Yapılandırma seçenekleri: Java için Azure İzleyici Application Insights.
Tüketim planında Azure İşlevleri için, kullanılabilir yapılandırma seçenekleri APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL ve APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL ile sınırlıdır. Tüketim planı İşlevinde ek yapılandırmalar yapmak için kendi aracınızı dağıtın. Bkz . Java İşlevleri için Özel Dağıtılmış İzleme Aracısı.
Kendi aracınızı dağıtmak, tüketim planı İşlevleri için daha uzun bir soğuk başlangıç etkisine neden olur.
Sorun giderme
Bu özelliği Şubat 2023'den önce benimsediyseniz Java işlevlerinizin başlatma süreleri yavaş olabilir. İşlev uygulamasına Genel Bakış bölmesinden sol taraftaki gezinti menüsünde Yapılandırma'ya gidin. Ardından Uygulama ayarları'nı seçin ve sorunu çözmek için aşağıdaki adımları kullanın.
Windows
Aşağıdaki ayarların mevcut olup olmadığını denetleyin ve kaldırın:
XDT_MicrosoftApplicationInsights_Java -> 1 ApplicationInsightsAgent_EXTENSION_VERSION -> ~2
Bu ayarı ekleyerek en son sürümü etkinleştirin:
APPLICATIONINSIGHTS_ENABLE_AGENT: true
Linux Ayrılmış/Premium
Aşağıdaki ayarların mevcut olup olmadığını denetleyin ve kaldırın:
ApplicationInsightsAgent_EXTENSION_VERSION -> ~3
Bu ayarı ekleyerek en son sürümü etkinleştirin:
APPLICATIONINSIGHTS_ENABLE_AGENT: true
Not
Application Insights Java aracısının en son sürümü Azure İşlevleri'de kullanılamıyorsa, bu yönergeleri izleyerek el ile yükleyin.
Uygulama konağınızla alma hizmeti arasındaki bağlantıyı test etme
Application Insights SDK'ları ve aracıları, alma uç noktalarımıza REST çağrıları olarak alınabilmek için telemetri gönderir. PowerShell veya curl komutlarından ham REST istemcilerini kullanarak web sunucunuzdan veya uygulama konak makinenizden alma hizmeti uç noktalarına bağlantıyı test edebilirsiniz. Bkz . Azure İzleyici Application Insights'ta eksik uygulama telemetrisi sorunlarını giderme.
Yinelenen günlükler
konsol günlüğü için veya logback
kullanıyorsanızlog4j
, Java İşlevleri için dağıtılmış izleme yinelenen günlükler oluşturur. Bu yinelenen günlükler daha sonra Application Insights'a gönderilir. Bu davranışı önlemek için aşağıdaki geçici çözümleri kullanın.
Log4j
log4j.xml aşağıdaki filtreyi ekleyin:
<Filters>
<ThresholdFilter level="ALL" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
Örnek:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
<Filters>
<ThresholdFilter level="ALL" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Geri Dönme
logback.xml aşağıdaki filtreyi ekleyin:
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>OFF</level>
</filter>
Örnek:
<configuration debug="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are by default assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n</pattern>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>OFF</level>
</filter>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Node.js işlev uygulamaları için dağıtılmış izleme
Node Azure İşlevleri uygulamalarınızdan varsayılan olarak toplanandan daha fazla veri görüntülemek için Azure İzleyici OpenTelemetry Distro kullanarak İşlevinizi izleyin.
Python işlev uygulamaları için dağıtılmış izleme
İstekler, urllib3 httpx
, , PsycoPG2 ve daha fazlası gibi hizmetlerden telemetri toplamak için Azure İzleyici OpenTelemetry Distro kullanın. Azure İşlevleri'de barındırılan Python uygulamanıza gelen izlenen istekler, içinde izlenen telemetri verileriyle otomatik olarak ilişkilendirilmemiştir. TraceContext'i doğrudan aşağıdaki gibi ayıklayarak izleme bağıntısını el ile elde edebilirsiniz:
import azure.functions as func
from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
from opentelemetry.propagate import extract
# Configure Azure monitor collection telemetry pipeline
configure_azure_monitor()
def main(req: func.HttpRequest, context) -> func.HttpResponse:
...
# Store current TraceContext in dictionary format
carrier = {
"traceparent": context.trace_context.Traceparent,
"tracestate": context.trace_context.Tracestate,
}
tracer = trace.get_tracer(__name__)
# Start a span using the current context
with tracer.start_as_current_span(
"http_trigger_span",
context=extract(carrier),
):
...
Sonraki adımlar
- İzleme Azure İşlevleri hakkında daha fazla yönerge ve bilgi okuyun.
- Dağıtılmış izlemeye genel bir bakış elde edin.
- Uygulama Haritası'nın işletmeniz için neler yapabileceğini görün.
- Java uygulamalarına yönelik istekler ve bağımlılıklar hakkında bilgi edinin.
- Azure İzleyici ve Application Insights hakkında daha fazla bilgi edinin.