So erstellen Sie programmgesteuert einen Tsdb-Wal oder -Block für Prometheus

PHPz
Freigeben: 2024-02-06 08:40:03
nach vorne
667 Leute haben es durchsucht

如何以编程方式为 Prometheus 创建 tsdb wal 或块

Frageninhalt

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)
    }
}
Nach dem Login kopieren


Richtige Antwort


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))
Nach dem Login kopieren

An:

ref, err = app.Append(ref, lbls, (time.Now().Unix()+int64(i)) * 1000, float64(i))
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage