174 lines
5.0 KiB
Go

package metrics_explorer
import (
v3 "github.com/SigNoz/signoz/pkg/query-service/model/v3"
)
type SummaryListMetricsRequest struct {
Offset int `json:"offset"`
Limit int `json:"limit"`
OrderBy v3.OrderBy `json:"orderBy"`
Start int64 `json:"start"`
End int64 `json:"end"`
Filters v3.FilterSet `json:"filters"`
}
type TreeMapType string
const (
TimeSeriesTeeMap TreeMapType = "timeseries"
SamplesTreeMap TreeMapType = "samples"
)
type TreeMapMetricsRequest struct {
Limit int `json:"limit"`
Treemap TreeMapType `json:"treemap"`
Start int64 `json:"start"`
End int64 `json:"end"`
Filters v3.FilterSet `json:"filters"`
}
type MetricDetail struct {
MetricName string `json:"metric_name"`
Description string `json:"description"`
MetricType string `json:"type"`
MetricUnit string `json:"unit"`
TimeSeries uint64 `json:"timeseries"`
Samples uint64 `json:"samples"`
LastReceived int64 `json:"lastReceived"`
}
type TreeMapResponseItem struct {
Percentage float64 `json:"percentage"`
TotalValue uint64 `json:"total_value"`
MetricName string `json:"metric_name"`
}
type TreeMap struct {
TimeSeries []TreeMapResponseItem `json:"timeseries"`
Samples []TreeMapResponseItem `json:"samples"`
}
type SummaryListMetricsResponse struct {
Metrics []MetricDetail `json:"metrics"`
Total uint64 `json:"total"`
}
type Attribute struct {
Key string `json:"key" db:"key"`
Value []string `json:"value" db:"value"`
ValueCount uint64 `json:"valueCount" db:"valueCount"`
}
// Metadata holds additional information about the metric.
type Metadata struct {
MetricType string `json:"metric_type"`
Description string `json:"description"`
Unit string `json:"unit"`
Temporality string `json:"temporality"`
Monotonic bool `json:"monotonic"`
}
// Alert represents individual alerts associated with the metric.
type Alert struct {
AlertName string `json:"alert_name"`
AlertID string `json:"alert_id"`
}
// Dashboard represents individual dashboards associated with the metric.
type Dashboard struct {
DashboardName string `json:"dashboard_name"`
DashboardID string `json:"dashboard_id"`
WidgetID string `json:"widget_id"`
WidgetName string `json:"widget_name"`
}
type MetricDetailsDTO struct {
Name string `json:"name"`
Description string `json:"description"`
Type string `json:"type"`
Unit string `json:"unit"`
Samples uint64 `json:"samples"`
TimeSeriesTotal uint64 `json:"timeSeriesTotal"`
TimeSeriesActive uint64 `json:"timeSeriesActive"`
LastReceived int64 `json:"lastReceived"`
Attributes []Attribute `json:"attributes"`
Metadata Metadata `json:"metadata"`
Alerts []Alert `json:"alerts"`
Dashboards []Dashboard `json:"dashboards"`
}
type FilterKeyRequest struct {
SearchText string `json:"searchText"`
Limit int `json:"limit"`
}
type FilterValueRequest struct {
FilterKey string `json:"filterKey"`
FilterAttributeKeyDataType v3.AttributeKeyDataType `json:"filterAttributeKeyDataType"`
SearchText string `json:"searchText"`
Limit int `json:"limit"`
}
type FilterValueResponse struct {
FilterValues []string `json:"filterValues"`
}
type FilterKeyResponse struct {
MetricColumns []string `json:"metricColumns"`
AttributeKeys []v3.AttributeKey `json:"attributeKeys"`
}
var AvailableColumnFilterMap = map[string]bool{
"metric_name": true,
"metric_unit": true,
"metric_type": true,
}
type RelatedMetricsScore struct {
AttributeSimilarity float64
NameSimilarity float64
Filters [][]string
MetricType v3.MetricType
Temporality v3.Temporality
IsMonotonic bool
}
type RelatedMetricsRequest struct {
CurrentMetricName string `json:"currentMetricName"`
Start int64 `json:"start"`
End int64 `json:"end"`
Filters v3.FilterSet `json:"filters"`
}
type RelatedMetricsResponse struct {
RelatedMetrics []RelatedMetrics `json:"related_metrics"`
}
type RelatedMetrics struct {
Name string `json:"name"`
Query *v3.BuilderQuery `json:"query"`
Dashboards []Dashboard `json:"dashboards"`
Alerts []Alert `json:"alerts"`
}
type InspectMetricsRequest struct {
MetricName string `json:"metricName"`
Filters v3.FilterSet `json:"filters"`
Start int64 `json:"start"`
End int64 `json:"end"`
}
type InspectMetricsResponse struct {
Series *[]v3.Series `json:"series,omitempty"`
}
type UpdateMetricsMetadataRequest struct {
MetricName string `json:"metricName"`
MetricType v3.MetricType `json:"metricType"`
Description string `json:"description"`
Unit string `json:"unit"`
Temporality v3.Temporality `json:"temporality"`
IsMonotonic bool `json:"isMonotonic"`
}