package main import ( "bytes" "fmt" "io" "log" "net/http" "time" "github.com/golang/snappy" "github.com/prometheus/prometheus/prompb" ) const ( remoteWriteURL = "https://prom.scanwizard.ru/api/v1/write" username = "scanaryd" password = "$apr1$RseemMSV$H2LzM3cl71lbptrokMhgF/" ) func main() { writeRequest := &prompb.WriteRequest{ Timeseries: []prompb.TimeSeries{ { Labels: []prompb.Label{ {Name: "__name__", Value: "asic_test_metric"}, {Name: "job", Value: "go-test-script"}, {Name: "instance", Value: "local-dev"}, }, Samples: []prompb.Sample{ { Value: 123.45, Timestamp: time.Now().UnixMilli(), }, }, }, }, } data, err := writeRequest.Marshal() if err != nil { log.Fatalf("Failed to marshal protobuf: %v", err) } compressedData := snappy.Encode(nil, data) req, err := http.NewRequest("POST", remoteWriteURL, bytes.NewBuffer(compressedData)) if err != nil { log.Fatalf("Failed to create request: %v", err) } req.Header.Set("Content-Type", "application/x-protobuf") req.Header.Set("Content-Encoding", "snappy") req.Header.Set("X-Prometheus-Remote-Write-Version", "0.1.0") req.SetBasicAuth(username, password) client := &http.Client{} resp, err := client.Do(req) if err != nil { log.Fatalf("Failed to send request: %v", err) } defer resp.Body.Close() responseBody, err := io.ReadAll(resp.Body) if err != nil { log.Fatalf("Failed to read response body: %v", err) } fmt.Printf("Response Body: %s\n", string(responseBody)) }