diff options
Diffstat (limited to 'kamon-status/src/api/StatusApi.ts')
-rw-r--r-- | kamon-status/src/api/StatusApi.ts | 67 |
1 files changed, 45 insertions, 22 deletions
diff --git a/kamon-status/src/api/StatusApi.ts b/kamon-status/src/api/StatusApi.ts index 7f18b2ed..d00761e5 100644 --- a/kamon-status/src/api/StatusApi.ts +++ b/kamon-status/src/api/StatusApi.ts @@ -7,47 +7,48 @@ export interface Environment { tags: { [key: string]: string } } -export interface Config { +export interface Settings { version: string environment: Environment config: any } export enum ModuleKind { - Combined = "combined", - Metric = "metric", - Span = "span", - Plain = "plain", - Unknown = "unknown" + Combined = 'combined', + Metric = 'metric', + Span = 'span', + Plain = 'plain', + Unknown = 'unknown' } export interface Module { name: string description: string kind: ModuleKind - enabled: boolean - started: boolean + isProgrammaticallyRegistered: boolean + isStarted: boolean } -export interface MetricInfo { +export interface Metric { name: string type: string tags: { [key: string ]: string } + search: string } -export interface ModuleRegistryStatus { - modules: Array<Module> +export interface ModuleRegistry { + modules: Module[] } -export interface MetricRegistryStatus { - metrics: Array<MetricInfo> +export interface MetricRegistry { + metrics: Metric[] } export class StatusApi { - public static configStatus(): Promise<Config> { - return axios.get("/status/config").then(response => { + public static settings(): Promise<Settings> { + return axios.get('/status/settings').then(response => { const config = JSON.parse(response.data.config) return { version: response.data.version, @@ -57,15 +58,37 @@ export class StatusApi { }) } - public static moduleRegistryStatus(): Promise<ModuleRegistryStatus> { - return axios.get("/status/modules").then(response => { - return response.data as ModuleRegistryStatus + public static moduleRegistryStatus(): Promise<ModuleRegistry> { + return axios.get('/status/modules').then(response => { + return response.data as ModuleRegistry }) } - public static metricRegistryStatus(): Promise<MetricRegistryStatus> { - return axios.get("/status/metrics").then(response => { - return response.data as MetricRegistryStatus + public static metricRegistryStatus(): Promise<MetricRegistry> { + return axios.get('/status/metrics').then(response => { + const metricRegistry = response.data as MetricRegistry + const pair = (key: string, value: string) => key + ':' + value + ' ' + + metricRegistry.metrics.forEach(metric => { + // Fixes the display name for range samplers + if (metric.type === 'RangeSampler') { + metric.type = 'Range Sampler' + } + + + // Calculate the "search" string and inject it in all metrics. + let tagsSearch = '' + Object.keys(metric.tags).forEach(tag => { + tagsSearch += pair(tag, metric.tags[tag]) + }) + + metric.search = + pair('name', metric.name.toLowerCase()) + + pair('type', metric.type.toLowerCase()) + + tagsSearch + }) + + return metricRegistry }) } -}
\ No newline at end of file +} |