Untitled Paste
go
Wrap Lines
Raw 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))
}