summaryrefslogtreecommitdiff
path: root/internal/config/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/config/config.go')
-rw-r--r--internal/config/config.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/internal/config/config.go b/internal/config/config.go
new file mode 100644
index 0000000..dea804b
--- /dev/null
+++ b/internal/config/config.go
@@ -0,0 +1,57 @@
+package config
+
+import "time"
+
+// Mode represents the ingestion mode
+type Mode string
+
+const (
+ ModeRealtime Mode = "realtime"
+ ModeHistoric Mode = "historic"
+ ModeBackfill Mode = "backfill"
+ ModeAuto Mode = "auto"
+ ModeWatch Mode = "watch"
+)
+
+// Config holds all configuration for the prometheus-pusher
+type Config struct {
+ Mode Mode
+ PushgatewayURL string
+ PrometheusURL string
+ ClickHouseURL string // ClickHouse HTTP URL (e.g. http://localhost:8123)
+ ClickHouseTable string // ClickHouse table name (default: epimetheus_metrics)
+ JobName string
+ Continuous bool
+ InputFile string
+ InputFormat string
+ MetricName string
+ HoursAgo int
+ StartHours int
+ EndHours int
+ Interval int
+ ResolveIPLabels []string // Labels containing IP addresses to resolve via DNS
+}
+
+// NewConfig creates a new Config with default values
+func NewConfig() Config {
+ return Config{
+ Mode: ModeRealtime,
+ PushgatewayURL: "http://localhost:9091",
+ PrometheusURL: "http://localhost:9090/api/v1/write",
+ ClickHouseURL: "",
+ ClickHouseTable: "epimetheus_metrics",
+ JobName: "example_metrics_pusher",
+ InputFormat: "csv",
+ HoursAgo: 24,
+ StartHours: 48,
+ EndHours: 0,
+ Interval: 1,
+ ResolveIPLabels: []string{"ip"}, // Default resolves 'ip' label
+ }
+}
+
+// AutoIngestThreshold is the age threshold for auto mode routing
+const AutoIngestThreshold = 5 * time.Minute
+
+// DefaultHTTPTimeout is the default timeout for HTTP requests
+const DefaultHTTPTimeout = 10 * time.Second