GaugeState<Input>State interface for Gauge metrics containing the current instantaneous value.
Example (Reading gauge state)
import { Data, Effect, Metric } from "effect"
class GaugeStateError extends Data.TaggedError("GaugeStateError")<{
readonly operation: string
}> {}
const program = Effect.gen(function*() {
// Create different types of gauges
const temperatureGauge = Metric.gauge("room_temperature_celsius", {
description: "Current room temperature"
})
const diskSpaceGauge = Metric.gauge("disk_usage_bytes", {
description: "Current disk usage",
bigint: true
})
const queueSizeGauge = Metric.gauge("queue_size", {
description: "Current queue size"
})
// Set gauge values (absolute values)
yield* Metric.update(temperatureGauge, 22.5) // Set to 22.5°C
yield* Metric.update(diskSpaceGauge, 5000000000n) // Set to 5GB usage
yield* Metric.update(queueSizeGauge, 10) // Set to 10 items
// Update gauge values (new absolute values)
yield* Metric.update(temperatureGauge, 23.1) // Temperature changed
yield* Metric.update(queueSizeGauge, 15) // Queue grew
// Read gauge states
const tempState: Metric.GaugeState<number> = yield* Metric.value(
temperatureGauge
)
const diskState: Metric.GaugeState<bigint> = yield* Metric.value(
diskSpaceGauge
)
const queueState: Metric.GaugeState<number> = yield* Metric.value(
queueSizeGauge
)
// GaugeState contains:
// - value: current instantaneous value (number or bigint based on gauge type)
return {
environment: {
temperature: tempState.value, // 23.1
temperatureUnit: "°C"
},
system: {
diskUsage: diskState.value, // 5000000000n
diskUsageGB: Number(diskState.value) / 1_000_000_000, // 5
queueSize: queueState.value // 15
}
}
})metrics
Source effect/Metric.ts:5533 lines
export interface interface GaugeState<in Input extends number | bigint>State interface for Gauge metrics containing the current instantaneous value.
Example (Reading gauge state)
import { Data, Effect, Metric } from "effect"
class GaugeStateError extends Data.TaggedError("GaugeStateError")<{
readonly operation: string
}> {}
const program = Effect.gen(function*() {
// Create different types of gauges
const temperatureGauge = Metric.gauge("room_temperature_celsius", {
description: "Current room temperature"
})
const diskSpaceGauge = Metric.gauge("disk_usage_bytes", {
description: "Current disk usage",
bigint: true
})
const queueSizeGauge = Metric.gauge("queue_size", {
description: "Current queue size"
})
// Set gauge values (absolute values)
yield* Metric.update(temperatureGauge, 22.5) // Set to 22.5°C
yield* Metric.update(diskSpaceGauge, 5000000000n) // Set to 5GB usage
yield* Metric.update(queueSizeGauge, 10) // Set to 10 items
// Update gauge values (new absolute values)
yield* Metric.update(temperatureGauge, 23.1) // Temperature changed
yield* Metric.update(queueSizeGauge, 15) // Queue grew
// Read gauge states
const tempState: Metric.GaugeState<number> = yield* Metric.value(
temperatureGauge
)
const diskState: Metric.GaugeState<bigint> = yield* Metric.value(
diskSpaceGauge
)
const queueState: Metric.GaugeState<number> = yield* Metric.value(
queueSizeGauge
)
// GaugeState contains:
// - value: current instantaneous value (number or bigint based on gauge type)
return {
environment: {
temperature: tempState.value, // 23.1
temperatureUnit: "°C"
},
system: {
diskUsage: diskState.value, // 5000000000n
diskUsageGB: Number(diskState.value) / 1_000_000_000, // 5
queueSize: queueState.value // 15
}
}
})
GaugeState<in function (type parameter) Input in GaugeState<in Input extends number | bigint>Input extends number | bigint> {
readonly GaugeState<in Input extends number | bigint>.value: Input extends bigint ? bigint : numbervalue: function (type parameter) Input in GaugeState<in Input extends number | bigint>Input extends bigint ? bigint : number
}Referenced by 2 symbols