console/deployment/services/observability.ts

57 lines
1.8 KiB
TypeScript
Raw Normal View History

2022-05-18 07:26:57 +00:00
import * as pulumi from '@pulumi/pulumi';
2024-04-07 08:57:03 +00:00
import { serviceLocalHost } from '../utils/local-endpoint';
import { Observability as ObservabilityInstance } from '../utils/observability';
import { deployGrafana } from './grafana';
2022-05-18 07:26:57 +00:00
export function deployObservability(config: {
envName: string;
/**
* Suffix for the table names (production, staging, dev).
* It can't be envName as "prod" is not a valid table suffix.
*/
tableSuffix: string;
}) {
2024-03-04 12:56:12 +00:00
const observabilityConfig = new pulumi.Config('observability');
2022-05-18 07:26:57 +00:00
if (!observabilityConfig.getBoolean('enabled')) {
2024-03-04 12:56:12 +00:00
return {
enabled: false,
};
2022-05-18 07:26:57 +00:00
}
2024-04-07 08:57:03 +00:00
const observability = new ObservabilityInstance(config.envName, {
2022-05-18 07:26:57 +00:00
prom: {
endpoint: observabilityConfig.require('promEndpoint'),
username: observabilityConfig.require('promUsername'),
password: observabilityConfig.requireSecret('promPassword'),
},
loki: {
endpoint: observabilityConfig.require('lokiEndpoint'),
username: observabilityConfig.require('lokiUsername'),
password: observabilityConfig.requireSecret('lokiPassword'),
},
2024-04-07 08:57:03 +00:00
tempo: {
endpoint: observabilityConfig.require('tempoEndpoint'),
username: observabilityConfig.require('tempoUsername'),
password: observabilityConfig.requireSecret('tempoPassword'),
},
2022-05-18 07:26:57 +00:00
});
2024-04-07 08:57:03 +00:00
const observabilityInstance = observability.deploy();
if (!observabilityInstance.otlpCollectorService) {
throw new Error('OTLP collector service is required for observability');
}
return {
2024-04-07 08:57:03 +00:00
tracingEndpoint: serviceLocalHost(observabilityInstance.otlpCollectorService).apply(
host => `http://${host}:4318/v1/traces`,
),
observability: observabilityInstance,
grafana: deployGrafana(config.envName, config.tableSuffix),
2024-03-04 12:56:12 +00:00
enabled: true,
};
2022-05-18 07:26:57 +00:00
}
2024-04-07 08:57:03 +00:00
export type Observability = ReturnType<typeof deployObservability>;