프로메테우스용 샘플 데이터를 생성하고 프로그래밍 방식으로 tsdb 블록을 생성하는 스크립트를 생성하려고 합니다. ChatGPT의 도움으로 이 코드를 작성했고 Prometheus가 허용하는 WAL 블록을 생성하고 자동 완성 감지 시리즈 이름도 생성했지만 아무런 값도 표시되지 않습니다. 이유는 무엇입니까?
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) } }
좋아요 위의 코드는 작동합니다. 유일한 문제는 시간을 밀리초 단위로 전달해야 하고 time.Now().Unix()
가 초 단위로 반환하므로 1000을 곱해야 한다는 것입니다. 당신이 결과입니다:
발신:
으아아아받는 사람:
으아아아위 내용은 Prometheus에 대해 프로그래밍 방식으로 tsdb wal 또는 차단을 생성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!