mirror of
https://github.com/hanzoai/o11y.git
synced 2026-10-15 12:58:33 +00:00
* debrand: signoz/SigNoz/SIGNOZ -> o11y/O11y/O11Y across the tree Rename all SigNoz *branding* to O11y in file contents, file/dir names, package names, env vars, config keys, comments, docs, SDK code, and the ClickHouse schema identifiers the querier reads. Collector dependency: - Repoint github.com/hanzoai/signoz-otel-collector -> github.com/hanzoai/otel-collector and bump v0.144.6 -> v0.144.7 (go.mod + go.sum reconciled via go mod tidy). Internal package paths also debranded upstream: signozschemamigrator -> o11yschemamigrator, signozlogspipelineprocessor -> o11ylogspipelineprocessor. - Fix: v0.144.7 dropped otelconst.DistributedFieldKeysTable from the collector's public constants; pin FieldKeysTable = "distributed_field_keys" locally in pkg/telemetrymetadata/tables.go. Package/dir renames (package decl + all importers): pkg/apiserver/signozapiserver -> o11yapiserver, plus signozalertmanager, signozauthzapi, signozglobal, signozquerier, signozruler, and pkg/signoz -> pkg/o11y. Schema (read plane): signoz_traces/metrics/logs/metadata/analytics/meter and signoz_index_v3/index_v2/error_index_v2/spans (+ distributed_*) -> o11y_*. Data-preserving cutover migration added: deploy/clickhouse/migrations/0001_rename_signoz_to_o11y.sql (metadata-only RENAME DATABASE/TABLE, no drop/recreate). Preserved (attribution / external / wire contracts): - LICENSE + NOTICE verbatim (incl. "software from SigNoz", "Copyright ... SigNoz Inc."). - Upstream github.com/SigNoz/* repo URLs + @SigNoz/* CODEOWNERS teams. - Billing resource-attribute regex "signoz.workspace.*" (external wire contract). go build ./pkg/... ./cmd/... = 0; gofmt clean; renamed+schema pkg tests pass. * o11y: bump collector to v0.144.8 (o11y_* physical schema writer) + lockstep deploy plan Collector v0.144.8's schema-migrator + exporters now CREATE/WRITE the same o11y_* physical databases/tables the querier reads and the RENAME migration (0001_rename_signoz_to_o11y.sql) targets. Cross-checked byte-identical: writer DB set == migration target DB set (6); writer prefixed-table set == migration target table set (8); o11y querier reads and cloud reads are subsets of that set. Zero table-name mismatches between writer, readers, and migration. Collector go.mod unchanged between v0.144.7 and v0.144.8 (identical go.mod hash) — pure source rename, no module-graph change. Adds deploy/clickhouse/DEPLOY_signoz_to_o11y_cutover.md: the lockstep order (collector v0.144.8 -> RENAME migration -> o11y+cloud readers) with a fresh/scratch-ClickHouse pre-flight (create via migrator, emit trace+metric, query back) and rollback. Ships together or telemetry blackholes. go build ./pkg/... ./cmd/community = 0.
118 lines
4.5 KiB
Go
118 lines
4.5 KiB
Go
package memorycache
|
|
|
|
import (
|
|
"github.com/hanzoai/o11y/pkg/errors"
|
|
"go.opentelemetry.io/otel/metric"
|
|
)
|
|
|
|
type telemetry struct {
|
|
cacheRatio metric.Float64ObservableGauge
|
|
cacheHits metric.Int64ObservableCounter
|
|
cacheMisses metric.Int64ObservableCounter
|
|
costAdded metric.Int64ObservableCounter
|
|
costEvicted metric.Int64ObservableCounter
|
|
keysAdded metric.Int64ObservableCounter
|
|
keysEvicted metric.Int64ObservableCounter
|
|
keysUpdated metric.Int64ObservableCounter
|
|
setsDropped metric.Int64ObservableCounter
|
|
setsRejected metric.Int64ObservableCounter
|
|
getsDropped metric.Int64ObservableCounter
|
|
getsKept metric.Int64ObservableCounter
|
|
costUsed metric.Int64ObservableGauge
|
|
totalCost metric.Int64ObservableGauge
|
|
}
|
|
|
|
func newMetrics(meter metric.Meter) (*telemetry, error) {
|
|
var errs error
|
|
cacheRatio, err := meter.Float64ObservableGauge("o11y.cache.ratio", metric.WithDescription("Ratio is the number of Hits over all accesses (Hits + Misses). This is the percentage of successful Get calls."), metric.WithUnit("1"))
|
|
if err != nil {
|
|
errs = errors.Join(errs, err)
|
|
}
|
|
|
|
cacheHits, err := meter.Int64ObservableCounter("o11y.cache.hits", metric.WithDescription("Hits is the number of Get calls where a value was found for the corresponding key."))
|
|
if err != nil {
|
|
errs = errors.Join(errs, err)
|
|
}
|
|
|
|
cacheMisses, err := meter.Int64ObservableCounter("o11y.cache.misses", metric.WithDescription("Misses is the number of Get calls where a value was not found for the corresponding key"))
|
|
if err != nil {
|
|
errs = errors.Join(errs, err)
|
|
}
|
|
|
|
costAdded, err := meter.Int64ObservableCounter("o11y.cache.cost.added", metric.WithDescription("CostAdded is the sum of costs that have been added (successful Set calls)"))
|
|
if err != nil {
|
|
errs = errors.Join(errs, err)
|
|
}
|
|
|
|
costEvicted, err := meter.Int64ObservableCounter("o11y.cache.cost.evicted", metric.WithDescription("CostEvicted is the sum of all costs that have been evicted"))
|
|
if err != nil {
|
|
errs = errors.Join(errs, err)
|
|
}
|
|
|
|
keysAdded, err := meter.Int64ObservableCounter("o11y.cache.keys.added", metric.WithDescription("KeysAdded is the total number of Set calls where a new key-value item was added"))
|
|
if err != nil {
|
|
errs = errors.Join(errs, err)
|
|
}
|
|
|
|
keysEvicted, err := meter.Int64ObservableCounter("o11y.cache.keys.evicted", metric.WithDescription("KeysEvicted is the total number of keys evicted"))
|
|
if err != nil {
|
|
errs = errors.Join(errs, err)
|
|
}
|
|
|
|
keysUpdated, err := meter.Int64ObservableCounter("o11y.cache.keys.updated", metric.WithDescription("KeysUpdated is the total number of Set calls where the value was updated"))
|
|
if err != nil {
|
|
errs = errors.Join(errs, err)
|
|
}
|
|
|
|
setsDropped, err := meter.Int64ObservableCounter("o11y.cache.sets.dropped", metric.WithDescription("SetsDropped is the number of Set calls that don't make it into internal buffers (due to contention or some other reason)"))
|
|
if err != nil {
|
|
errs = errors.Join(errs, err)
|
|
}
|
|
|
|
setsRejected, err := meter.Int64ObservableCounter("o11y.cache.sets.rejected", metric.WithDescription("SetsRejected is the number of Set calls rejected by the policy (TinyLFU)"))
|
|
if err != nil {
|
|
errs = errors.Join(errs, err)
|
|
}
|
|
|
|
getsDropped, err := meter.Int64ObservableCounter("o11y.cache.gets.dropped", metric.WithDescription("GetsDropped is the number of Get calls that don't make it into internal buffers (due to contention or some other reason)"))
|
|
if err != nil {
|
|
errs = errors.Join(errs, err)
|
|
}
|
|
|
|
getsKept, err := meter.Int64ObservableCounter("o11y.cache.gets.kept", metric.WithDescription("GetsKept is the number of Get calls that make it into internal buffers"))
|
|
if err != nil {
|
|
errs = errors.Join(errs, err)
|
|
}
|
|
|
|
costUsed, err := meter.Int64ObservableGauge("o11y.cache.cost.used", metric.WithDescription("CostUsed is the current retained cost in the cache (CostAdded - CostEvicted)."))
|
|
if err != nil {
|
|
errs = errors.Join(errs, err)
|
|
}
|
|
|
|
totalCost, err := meter.Int64ObservableGauge("o11y.cache.total.cost", metric.WithDescription("TotalCost is the configured MaxCost ceiling for the cache."))
|
|
if err != nil {
|
|
errs = errors.Join(errs, err)
|
|
}
|
|
|
|
if errs != nil {
|
|
return nil, errs
|
|
}
|
|
|
|
return &telemetry{
|
|
cacheRatio: cacheRatio,
|
|
cacheHits: cacheHits,
|
|
cacheMisses: cacheMisses,
|
|
costAdded: costAdded,
|
|
costEvicted: costEvicted,
|
|
keysAdded: keysAdded,
|
|
keysEvicted: keysEvicted,
|
|
keysUpdated: keysUpdated,
|
|
setsDropped: setsDropped,
|
|
setsRejected: setsRejected,
|
|
getsDropped: getsDropped,
|
|
getsKept: getsKept,
|
|
costUsed: costUsed,
|
|
totalCost: totalCost,
|
|
}, nil
|
|
}
|