J'ai besoin de générer des exemples de données pour Prometheus et d'essayer de créer un script pour créer des blocs tsdb par programme. Avec l'aide de ChatGPT, j'ai écrit ce code et il crée le bloc WAL que Prometheus accepte et crée même le nom de la série détectée par saisie semi-automatique, mais je ne vois aucune valeur, pourquoi ?
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) } }
D'accord, le code ci-dessus fonctionne, le seul problème est que je dois passer le temps en millisecondes et time.Now().Unix()
le renvoie en secondes, vous devez donc le multiplier par 1000, donc apporter des modifications à cette ligne donnera à vous le résultat :
De :
ref, err = app.Append(ref, lbls, time.Now().Unix()+int64(i), float64(i))
À :
ref, err = app.Append(ref, lbls, (time.Now().Unix()+int64(i)) * 1000, float64(i))
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!