Application Insights TrackEvent tidak pernah bertahan di Azure
Saya mencoba menerapkan SDK untuk Node untuk melacak peristiwa khusus di basis kode kami. Layanan yang saya tulis dipanggil dari rantai metode asinkron dan berjalan dalam Fungsi Azure:
public async handleEvent(event: Event) {
// Do stuff
// Then report event
this.reportEvent(event);
}
private reportEvent(event: Event) {
if (this._applicationInsightsService) {
this._applicationInsightsService.reportEvent(event)
this._context.log("Successfully sent event to application insights")
} else {
this._context.log("Could not send metrics to application insights, service is not defined")
}
}
Layanan itu sendiri terlihat seperti ini:
export class ApplicationInsightsService {
private _instance: ApplicationInsights
private constructor(connectionString: string) {
this._instance = new ApplicationInsights({
config: {
connectionString: connectionString
}
})
this._instance.loadAppInsights()
}
public static create() {
if (process.env.APPLICATION_INSIGHTS_CONNECTION_STRING === undefined) {
throw new Error("APPLICATION_INSIGHTS_CONNECTION_STRING undefined, cannot report metrics")
}
return new ApplicationInsightsService(process.env.APPLICATION_INSIGHTS_CONNECTION_STRING)
}
public reportEvent(event: Event) {
this._instance.trackEvent({
name: event.type,
properties: event
})
this._instance.flush()
}
}
Namun kejadian yang saya kirim tidak pernah terlihat di Azure Portal saat saya membuat kueri customEvents
tabel. Saya telah menunggu> 10 menit karena saya tahu mungkin ada penundaan dalam wawasan aplikasi.
Saya sudah mencoba melakukan panggilan ke flush asynchronous sebagai gantinya dan menggunakan await
saat memanggilnya, tetapi itu juga tidak membantu:
Promise.resolve(this._instance.flush(true))
Variabel lingkungan APPLICATION_INSIGHTS_CONNECTION_STRING
memiliki format InstrumentationKey=xxx;IngestionEndpoint=https://westeurope-1.in.applicationinsights.azure.com/
.
Masalah saya tampaknya sangat mirip dengan C # Application Insight Failure: TrackEvent Tidak mengirim ke Azure Application Insight , tetapi apakah saya benar - benar perlu tidur / waktu habis untuk memperhitungkan pengaturan waktu?
Output log ketika saya menjalankan ini tidak mengatakan apa-apa, tidak ada kesalahan yang dihasilkan dan tidak ada yang mati:
[12/17/2020 11:06:10 AM] Executing 'Functions.EventHandler' (Reason='New ServiceBus message detected on 'integrator-events'.', Id=812ccf8f-3cd3-4c75-8ab4-20614556d597)
[12/17/2020 11:06:10 AM] Trigger Details: MessageId: 125f60d79c5a4b029a417bee68df95d7, DeliveryCount: 1, EnqueuedTime: 12/17/2020 11:06:11 AM, LockedUntil: 12/17/2020 11:07:11 AM, SessionId: (null)
[12/17/2020 11:06:10 AM] Received event
[12/17/2020 11:06:10 AM] Successfully sent event to application insights
[12/17/2020 11:06:10 AM] Executed 'Functions.EventHandler' (Succeeded, Id=812ccf8f-3cd3-4c75-8ab4-20614556d597)
Apa yang saya lewatkan?
Memperbarui
Begitu rupanya ada JavaScript dan sebuah Node SDK untuk membuat sesuatu yang lebih membingungkan. Saya akan mencoba dengan Node SDK, tetapi saya tidak mengerti mengapa yang pertama tidak berfungsi.
Larutan
Konstruksi berikut dari ApplicationInsightsService berfungsi:
// Previously:
// import { ApplicationInsights } from "@microsoft/applicationinsights-web"
import { TelemetryClient } from "applicationinsights"
export class ApplicationInsightsService {
private _instance: TelemetryClient
private constructor(connectionString: string) {
this._instance = new TelemetryClient(connectionString)
}
}
Untuk aplikasi node:
Lakukan :npm install --save applicationinsights
Jangan :npm install --save @microsoft/applicationinsights-web
Jawaban
Konstruksi ApplicationInsightsService
pekerjaan berikut:
// Previously:
// import { ApplicationInsights } from "@microsoft/applicationinsights-web"
import { TelemetryClient } from "applicationinsights"
export class ApplicationInsightsService {
private _instance: TelemetryClient
private constructor(connectionString: string) {
this._instance = new TelemetryClient(connectionString)
}
}
Untuk aplikasi node:
Lakukan :npm install --save applicationinsights
Jangan :npm install --save @microsoft/applicationinsights-web