32 lines
1.9 KiB
Go
32 lines
1.9 KiB
Go
package models
|
|
|
|
import "time"
|
|
|
|
// TraceSpan 保存通过 OTLP 接收的标准调用链 Span。
|
|
type TraceSpan struct {
|
|
ID uint `gorm:"primaryKey" json:"id"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
|
|
TraceID string `gorm:"type:varchar(32);not null;index;uniqueIndex:uk_trace_span" json:"trace_id"`
|
|
SpanID string `gorm:"type:varchar(16);not null;uniqueIndex:uk_trace_span" json:"span_id"`
|
|
ParentSpanID string `gorm:"type:varchar(16);index" json:"parent_span_id,omitempty"`
|
|
ServiceName string `gorm:"type:varchar(255);not null;index" json:"service_name"`
|
|
OperationName string `gorm:"type:varchar(512);not null;index" json:"operation_name"`
|
|
SpanKind string `gorm:"type:varchar(20);not null;index" json:"span_kind"`
|
|
StartTime time.Time `gorm:"not null;index" json:"start_time"`
|
|
EndTime time.Time `gorm:"not null;index" json:"end_time"`
|
|
DurationMs float64 `gorm:"type:decimal(16,3);not null;default:0" json:"duration_ms"`
|
|
StatusCode string `gorm:"type:varchar(20);not null;index" json:"status_code"`
|
|
StatusMessage string `gorm:"type:text" json:"status_message,omitempty"`
|
|
BusinessSystemID *uint `gorm:"index" json:"business_system_id,omitempty"`
|
|
ResourceUID string `gorm:"type:varchar(255);index" json:"resource_uid,omitempty"`
|
|
HTTPMethod string `gorm:"type:varchar(16);index" json:"http_method,omitempty"`
|
|
HTTPRoute string `gorm:"type:varchar(1024)" json:"http_route,omitempty"`
|
|
HTTPStatusCode int `gorm:"index" json:"http_status_code,omitempty"`
|
|
Attributes string `gorm:"type:jsonb;not null;default:'{}'" json:"attributes"`
|
|
ResourceAttrs string `gorm:"type:jsonb;not null;default:'{}'" json:"resource_attributes"`
|
|
IngestedAt *time.Time `gorm:"index" json:"ingested_at,omitempty"`
|
|
}
|
|
|
|
func (TraceSpan) TableName() string { return "logs_trace_spans" }
|