Heim > Artikel > Backend-Entwicklung > So erstellen Sie programmgesteuert einen Tsdb-Wal oder -Block für Prometheus
Ich muss Beispieldaten für Prometheus generieren und versuchen, ein Skript zu erstellen, um tsdb-Blöcke programmgesteuert zu erstellen. Mit Hilfe von ChatGPT habe ich diesen Code geschrieben und er erstellt den WAL-Block, den Prometheus akzeptiert, und erstellt sogar den durch die automatische Vervollständigung erkannten Seriennamen, aber ich sehe keinen Wert, warum?
package main import ( "context" "fmt" "github.com/prometheus/prometheus/model/labels" "github.com/prometheus/prometheus/storage" "github.com/prometheus/prometheus/tsdb" "os" "time" ) func main() { // Create a new TSDB instance db, err := tsdb.Open( "./data", // directory where the data will be stored nil, // a logger (can be nil for no logging) nil, // an optional prometheus.Registerer tsdb.DefaultOptions(), nil, ) if err != nil { fmt.Println("Error opening TSDB:", err) os.Exit(1) } defer db.Close() // Create a new appender app := db.Appender(context.Background()) // Create labels for the gauge time series lbls := labels.FromStrings("__name__", "example_gauge", "type", "gauge") // Initialize a SeriesRef var ref storage.SeriesRef // Add some data points for i := 0; i < 10; i++ { var err error ref, err = app.Append(ref, lbls, time.Now().Unix()+int64(i), float64(i)) if err != nil { fmt.Println("Error appending:", err) os.Exit(1) } } // Commit the data err = app.Commit() if err != nil { fmt.Println("Error committing:", err) os.Exit(1) } }
Okay, der obige Code funktioniert, das einzige Problem ist, dass ich die Zeit in Millisekunden übergeben muss und time.Now().Unix()
sie in Sekunden zurückgibt, sodass Sie sie mit 1000 multiplizieren müssen, damit Änderungen an dieser Zeile etwas ergeben Dir das Ergebnis:
Von:
ref, err = app.Append(ref, lbls, time.Now().Unix()+int64(i), float64(i))
An:
ref, err = app.Append(ref, lbls, (time.Now().Unix()+int64(i)) * 1000, float64(i))
Das obige ist der detaillierte Inhalt vonSo erstellen Sie programmgesteuert einen Tsdb-Wal oder -Block für Prometheus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!