2025-05-14 05:12:41 +05:30
package services
import (
2025-06-02 22:41:38 +05:30
"github.com/SigNoz/signoz/pkg/types/dashboardtypes"
2025-05-14 05:12:41 +05:30
)
type Metadata struct {
Id string ` json:"id" `
Title string ` json:"title" `
Icon string ` json:"icon" `
}
type Definition struct {
Metadata
Overview string ` json:"overview" ` // markdown
Assets Assets ` json:"assets" `
SupportedSignals SupportedSignals ` json:"supported_signals" `
DataCollected DataCollected ` json:"data_collected" `
Strategy * CollectionStrategy ` json:"telemetry_collection_strategy" `
}
type Assets struct {
Dashboards [ ] Dashboard ` json:"dashboards" `
}
type SupportedSignals struct {
Logs bool ` json:"logs" `
Metrics bool ` json:"metrics" `
}
type DataCollected struct {
Logs [ ] CollectedLogAttribute ` json:"logs" `
Metrics [ ] CollectedMetric ` json:"metrics" `
}
type CollectedLogAttribute struct {
Name string ` json:"name" `
Path string ` json:"path" `
Type string ` json:"type" `
}
type CollectedMetric struct {
Name string ` json:"name" `
Type string ` json:"type" `
Unit string ` json:"unit" `
Description string ` json:"description" `
}
type CollectionStrategy struct {
Provider string ` json:"provider" `
AWSMetrics * AWSMetricsStrategy ` json:"aws_metrics,omitempty" `
AWSLogs * AWSLogsStrategy ` json:"aws_logs,omitempty" `
S3Buckets map [ string ] [ ] string ` json:"s3_buckets,omitempty" ` // Only available in S3 Sync Service Type
}
type AWSMetricsStrategy struct {
// to be used as https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-metricstream.html#cfn-cloudwatch-metricstream-includefilters
StreamFilters [ ] struct {
// json tags here are in the shape expected by AWS API as detailed at
// https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudwatch-metricstream-metricstreamfilter.html
Namespace string ` json:"Namespace" `
MetricNames [ ] string ` json:"MetricNames,omitempty" `
} ` json:"cloudwatch_metric_stream_filters" `
}
type AWSLogsStrategy struct {
Subscriptions [ ] struct {
// subscribe to all logs groups with specified prefix.
// eg: `/aws/rds/`
LogGroupNamePrefix string ` json:"log_group_name_prefix" `
// https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html
// "" implies no filtering is required.
FilterPattern string ` json:"filter_pattern" `
} ` json:"cloudwatch_logs_subscriptions" `
}
type Dashboard struct {
2025-06-02 22:41:38 +05:30
Id string ` json:"id" `
Url string ` json:"url" `
Title string ` json:"title" `
Description string ` json:"description" `
Image string ` json:"image" `
Definition * dashboardtypes . StorableDashboardData ` json:"definition,omitempty" `
2025-05-14 05:12:41 +05:30
}