aboutsummaryrefslogtreecommitdiff
path: root/kamon-status/src/api/StatusApi.ts
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-status/src/api/StatusApi.ts')
-rw-r--r--kamon-status/src/api/StatusApi.ts67
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
+}