Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions js/core/src/tracing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,41 @@ const instrumentationKey = '__GENKIT_TELEMETRY_INSTRUMENTED';
* @hidden
*/
export async function ensureBasicTelemetryInstrumentation() {
await checkFirebaseMonitoringAutoInit();

if (global[instrumentationKey]) {
return await global[instrumentationKey];
}

await enableTelemetry({});
}

/**
* Checks to see if the customer is using Firebase Genkit Monitoring
* auto initialization via environment variable by attempting to resolve
* the firebase plugin.
*
* Enables Firebase Genkit Monitoring if the plugin is installed and warns
* if it hasn't been installed.
*/
async function checkFirebaseMonitoringAutoInit() {
if (
!global[instrumentationKey] &&
process.env.ENABLE_FIREBASE_MONITORING === 'true'
) {
try {
const firebaseModule = await require('@genkit-ai/firebase');
firebaseModule.enableFirebaseTelemetry();
} catch (e) {
logger.warn(
"It looks like you're trying to enable firebase monitoring, but " +
"haven't installed the firebase plugin. Please run " +
'`npm i --save @genkit-ai/firebase` and redeploy.'
);
}
}
}

/**
* Enables tracing and metrics open telemetry configuration.
*/
Expand Down
2 changes: 2 additions & 0 deletions js/plugins/firebase/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import {
enableGoogleCloudTelemetry,
type GcpTelemetryConfigOptions,
} from '@genkit-ai/google-cloud';
import { logger } from 'genkit/logging';
export { defineFirestoreRetriever } from './firestore-retriever.js';

export interface FirebaseTelemetryOptions extends GcpTelemetryConfigOptions {
Expand All @@ -39,5 +40,6 @@ export interface FirebaseTelemetryOptions extends GcpTelemetryConfigOptions {
export async function enableFirebaseTelemetry(
options?: FirebaseTelemetryOptions | GcpTelemetryConfigOptions
) {
logger.debug('Initializing Firebase Genkit Monitoring.');
await enableGoogleCloudTelemetry(options);
}