>  기사  >  백엔드 개발  >  Prometheus에 대해 프로그래밍 방식으로 tsdb wal 또는 차단을 생성하는 방법

Prometheus에 대해 프로그래밍 방식으로 tsdb wal 또는 차단을 생성하는 방법

PHPz
PHPz앞으로
2024-02-06 08:40:03647검색

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

질문 내용

프로메테우스용 샘플 데이터를 생성하고 프로그래밍 방식으로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제