mirror of
https://github.com/hanzoai/otel-collector.git
synced 2026-11-03 02:20:04 +00:00
Rename ONLY the physical ClickHouse DATABASE/TABLE identifiers the schema-migrator CREATEs and the exporters WRITE, matching the o11y read plane + the data-preserving RENAME migration (hanzoai/o11y#28): databases: signoz_{traces,metrics,logs,metadata,analytics,meter} -> o11y_{traces,metrics,logs,metadata,analytics,meter} tables: (distributed_)signoz_{index_v3,index_v2,error_index_v2,spans} -> (distributed_)o11y_{index_v3,index_v2,error_index_v2,spans} Word-boundary anchored (\bsignoz_<db>\b) so wire contracts are untouched: spanmetrics/usage METRIC names (signoz_calls_total, signoz_latency, signoz_*_count/_bytes, signoz_metadata_exporter_json_logs_processed, signoz_normalize_operator_logs_processed), signoz.* resource ATTRIBUTES (signoz.gen_ai.*), OTel component TYPE strings (signozclickhousemetrics, signozclickhousemeter, signozlogspipeline, signozllmpricing), and all github.com/SigNoz/* deps + LICENSE/NOTICE attribution all preserved. Coordinated cutover: deploy this collector, run o11y#28 RENAME migration, then deploy o11y + cloud readers — together, or telemetry blackholes. go build ./... = 0. schema-migrator tests green. Two pre-existing test failures (flaky TestExporterPushTracesData usage-collector timing; o11ydatastoremeter go.signoz.io scope-name debrand) reproduce identically on unmodified v0.144.7.
209 lines
9.2 KiB
Go
209 lines
9.2 KiB
Go
package schemamigrator
|
|
|
|
var MeterMigrations = []SchemaMigrationRecord{
|
|
{
|
|
MigrationID: 1,
|
|
UpItems: []Operation{
|
|
CreateTableOperation{
|
|
Database: "o11y_meter",
|
|
Table: "samples",
|
|
Columns: []Column{
|
|
{Name: "temporality", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'Unspecified'"},
|
|
{Name: "metric_name", Type: LowCardinalityColumnType{ColumnTypeString}},
|
|
{Name: "description", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
|
|
{Name: "unit", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
|
|
{Name: "type", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
|
|
{Name: "is_monotonic", Type: ColumnTypeBool, Default: "false"},
|
|
{Name: "labels", Type: ColumnTypeString, Codec: "ZSTD(5)"},
|
|
{Name: "fingerprint", Type: ColumnTypeUInt64, Codec: "Delta(8), ZSTD(1)"},
|
|
{Name: "unix_milli", Type: ColumnTypeInt64, Codec: "DoubleDelta, ZSTD(1)"},
|
|
{Name: "value", Type: ColumnTypeFloat64, Codec: "Gorilla, ZSTD(1)"},
|
|
},
|
|
Engine: MergeTree{
|
|
PartitionBy: "toYYYYMM(toDateTime(intDiv(unix_milli, 1000)))",
|
|
OrderBy: "(temporality, metric_name, fingerprint, toDayOfMonth(toDateTime(intDiv(unix_milli, 1000))))",
|
|
TTL: "toDateTime(intDiv(unix_milli, 1000)) + toIntervalYear(1)",
|
|
Settings: TableSettings{
|
|
{Name: "index_granularity", Value: "8192"},
|
|
{Name: "ttl_only_drop_parts", Value: "1"},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
DownItems: []Operation{
|
|
DropTableOperation{
|
|
Database: "o11y_meter",
|
|
Table: "samples",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
MigrationID: 2,
|
|
UpItems: []Operation{
|
|
CreateTableOperation{
|
|
Database: "o11y_meter",
|
|
Table: "distributed_samples",
|
|
Columns: []Column{
|
|
{Name: "temporality", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'Unspecified'"},
|
|
{Name: "metric_name", Type: LowCardinalityColumnType{ColumnTypeString}},
|
|
{Name: "description", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
|
|
{Name: "unit", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
|
|
{Name: "type", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
|
|
{Name: "is_monotonic", Type: ColumnTypeBool, Default: "false"},
|
|
{Name: "labels", Type: ColumnTypeString, Codec: "ZSTD(5)"},
|
|
{Name: "fingerprint", Type: ColumnTypeUInt64, Codec: "Delta(8), ZSTD(1)"},
|
|
{Name: "unix_milli", Type: ColumnTypeInt64, Codec: "DoubleDelta, ZSTD(1)"},
|
|
{Name: "value", Type: ColumnTypeFloat64, Codec: "Gorilla, ZSTD(1)"},
|
|
},
|
|
Engine: Distributed{
|
|
Database: "o11y_meter",
|
|
Table: "samples",
|
|
ShardingKey: "cityHash64(temporality, metric_name, fingerprint)",
|
|
},
|
|
},
|
|
},
|
|
DownItems: []Operation{
|
|
DropTableOperation{
|
|
Database: "o11y_meter",
|
|
Table: "distributed_samples",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
MigrationID: 3,
|
|
UpItems: []Operation{
|
|
CreateTableOperation{
|
|
Database: "o11y_meter",
|
|
Table: "samples_agg_1d",
|
|
Columns: []Column{
|
|
{Name: "temporality", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'Unspecified'"},
|
|
{Name: "metric_name", Type: LowCardinalityColumnType{ColumnTypeString}},
|
|
{Name: "description", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
|
|
{Name: "unit", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
|
|
{Name: "type", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
|
|
{Name: "is_monotonic", Type: ColumnTypeBool, Default: "false"},
|
|
{Name: "labels", Type: ColumnTypeString, Codec: "ZSTD(5)"},
|
|
{Name: "fingerprint", Type: ColumnTypeUInt64, Codec: "Delta(8), ZSTD(1)"},
|
|
{Name: "unix_milli", Type: ColumnTypeInt64, Codec: "DoubleDelta, ZSTD(1)"},
|
|
{Name: "last", Type: SimpleAggregateFunction{FunctionName: "anyLast", Arguments: []ColumnType{ColumnTypeFloat64}}, Codec: "ZSTD(1)"},
|
|
{Name: "min", Type: SimpleAggregateFunction{FunctionName: "min", Arguments: []ColumnType{ColumnTypeFloat64}}, Codec: "ZSTD(1)"},
|
|
{Name: "max", Type: SimpleAggregateFunction{FunctionName: "max", Arguments: []ColumnType{ColumnTypeFloat64}}, Codec: "ZSTD(1)"},
|
|
{Name: "sum", Type: SimpleAggregateFunction{FunctionName: "sum", Arguments: []ColumnType{ColumnTypeFloat64}}, Codec: "ZSTD(1)"},
|
|
{Name: "count", Type: SimpleAggregateFunction{FunctionName: "sum", Arguments: []ColumnType{ColumnTypeUInt64}}, Codec: "ZSTD(1)"},
|
|
},
|
|
Engine: AggregatingMergeTree{
|
|
MergeTree: MergeTree{
|
|
PartitionBy: "toYYYYMM(toDateTime(intDiv(unix_milli, 1000)))",
|
|
OrderBy: "(temporality, metric_name, fingerprint, toDayOfMonth(toDateTime(intDiv(unix_milli, 1000))))",
|
|
TTL: "toDateTime(intDiv(unix_milli, 1000)) + toIntervalYear(1)",
|
|
Settings: TableSettings{
|
|
{Name: "index_granularity", Value: "8192"},
|
|
{Name: "ttl_only_drop_parts", Value: "1"},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
DownItems: []Operation{
|
|
DropTableOperation{
|
|
Database: "o11y_meter",
|
|
Table: "samples_agg_1d",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
MigrationID: 4,
|
|
UpItems: []Operation{
|
|
CreateTableOperation{
|
|
Database: "o11y_meter",
|
|
Table: "distributed_samples_agg_1d",
|
|
Columns: []Column{
|
|
{Name: "temporality", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'Unspecified'"},
|
|
{Name: "metric_name", Type: LowCardinalityColumnType{ColumnTypeString}},
|
|
{Name: "description", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
|
|
{Name: "unit", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
|
|
{Name: "type", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
|
|
{Name: "is_monotonic", Type: ColumnTypeBool, Default: "false"},
|
|
{Name: "labels", Type: ColumnTypeString, Codec: "ZSTD(5)"},
|
|
{Name: "fingerprint", Type: ColumnTypeUInt64, Codec: "Delta(8), ZSTD(1)"},
|
|
{Name: "unix_milli", Type: ColumnTypeInt64, Codec: "DoubleDelta, ZSTD(1)"},
|
|
{Name: "last", Type: SimpleAggregateFunction{FunctionName: "anyLast", Arguments: []ColumnType{ColumnTypeFloat64}}, Codec: "ZSTD(1)"},
|
|
{Name: "min", Type: SimpleAggregateFunction{FunctionName: "min", Arguments: []ColumnType{ColumnTypeFloat64}}, Codec: "ZSTD(1)"},
|
|
{Name: "max", Type: SimpleAggregateFunction{FunctionName: "max", Arguments: []ColumnType{ColumnTypeFloat64}}, Codec: "ZSTD(1)"},
|
|
{Name: "sum", Type: SimpleAggregateFunction{FunctionName: "sum", Arguments: []ColumnType{ColumnTypeFloat64}}, Codec: "ZSTD(1)"},
|
|
{Name: "count", Type: SimpleAggregateFunction{FunctionName: "sum", Arguments: []ColumnType{ColumnTypeUInt64}}, Codec: "ZSTD(1)"},
|
|
},
|
|
Engine: Distributed{
|
|
Database: "o11y_meter",
|
|
Table: "samples_agg_1d",
|
|
ShardingKey: "cityHash64(temporality, metric_name, fingerprint)",
|
|
},
|
|
},
|
|
},
|
|
DownItems: []Operation{
|
|
DropTableOperation{
|
|
Database: "o11y_meter",
|
|
Table: "distributed_samples_agg_1d",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
MigrationID: 5,
|
|
UpItems: []Operation{
|
|
CreateMaterializedViewOperation{
|
|
Database: "o11y_meter",
|
|
ViewName: "samples_agg_1d_mv",
|
|
DestTable: "samples_agg_1d",
|
|
Columns: []Column{
|
|
{Name: "temporality", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'Unspecified'"},
|
|
{Name: "metric_name", Type: LowCardinalityColumnType{ColumnTypeString}},
|
|
{Name: "description", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
|
|
{Name: "unit", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
|
|
{Name: "type", Type: LowCardinalityColumnType{ColumnTypeString}, Default: "'default'"},
|
|
{Name: "is_monotonic", Type: ColumnTypeBool, Default: "false"},
|
|
{Name: "labels", Type: ColumnTypeString, Codec: "ZSTD(5)"},
|
|
{Name: "fingerprint", Type: ColumnTypeUInt64, Codec: "Delta(8), ZSTD(1)"},
|
|
{Name: "unix_milli", Type: ColumnTypeInt64, Codec: "DoubleDelta, ZSTD(1)"},
|
|
{Name: "last", Type: SimpleAggregateFunction{FunctionName: "anyLast", Arguments: []ColumnType{ColumnTypeFloat64}}, Codec: "ZSTD(1)"},
|
|
{Name: "min", Type: SimpleAggregateFunction{FunctionName: "min", Arguments: []ColumnType{ColumnTypeFloat64}}, Codec: "ZSTD(1)"},
|
|
{Name: "max", Type: SimpleAggregateFunction{FunctionName: "max", Arguments: []ColumnType{ColumnTypeFloat64}}, Codec: "ZSTD(1)"},
|
|
{Name: "sum", Type: SimpleAggregateFunction{FunctionName: "sum", Arguments: []ColumnType{ColumnTypeFloat64}}, Codec: "ZSTD(1)"},
|
|
{Name: "count", Type: SimpleAggregateFunction{FunctionName: "sum", Arguments: []ColumnType{ColumnTypeUInt64}}, Codec: "ZSTD(1)"},
|
|
},
|
|
Query: `SELECT
|
|
temporality,
|
|
metric_name,
|
|
description,
|
|
unit,
|
|
type,
|
|
is_monotonic,
|
|
labels,
|
|
fingerprint,
|
|
intDiv(unix_milli,86400000) * 86400000 as unix_milli,
|
|
anyLast(value) as last,
|
|
min(value) as min,
|
|
max(value) as max,
|
|
sum(value) as sum,
|
|
count(*) as count
|
|
FROM o11y_meter.samples
|
|
GROUP BY
|
|
temporality,
|
|
metric_name,
|
|
fingerprint,
|
|
description,
|
|
unit,
|
|
type,
|
|
is_monotonic,
|
|
labels,
|
|
unix_milli;`,
|
|
},
|
|
},
|
|
DownItems: []Operation{
|
|
DropTableOperation{
|
|
Database: "o11y_meter",
|
|
Table: "samples_agg_1d_mv",
|
|
},
|
|
},
|
|
},
|
|
}
|