Merge pull request #841 from ntk148v/buildinfo-api
Add buildinfo method
This commit is contained in:
commit
e8b72d0bd8
|
@ -135,6 +135,7 @@ const (
|
||||||
epCleanTombstones = apiPrefix + "/admin/tsdb/clean_tombstones"
|
epCleanTombstones = apiPrefix + "/admin/tsdb/clean_tombstones"
|
||||||
epConfig = apiPrefix + "/status/config"
|
epConfig = apiPrefix + "/status/config"
|
||||||
epFlags = apiPrefix + "/status/flags"
|
epFlags = apiPrefix + "/status/flags"
|
||||||
|
epBuildinfo = apiPrefix + "/status/buildinfo"
|
||||||
epRuntimeinfo = apiPrefix + "/status/runtimeinfo"
|
epRuntimeinfo = apiPrefix + "/status/runtimeinfo"
|
||||||
epTSDB = apiPrefix + "/status/tsdb"
|
epTSDB = apiPrefix + "/status/tsdb"
|
||||||
)
|
)
|
||||||
|
@ -238,6 +239,8 @@ type API interface {
|
||||||
Query(ctx context.Context, query string, ts time.Time) (model.Value, Warnings, error)
|
Query(ctx context.Context, query string, ts time.Time) (model.Value, Warnings, error)
|
||||||
// QueryRange performs a query for the given range.
|
// QueryRange performs a query for the given range.
|
||||||
QueryRange(ctx context.Context, query string, r Range) (model.Value, Warnings, error)
|
QueryRange(ctx context.Context, query string, r Range) (model.Value, Warnings, error)
|
||||||
|
// Buildinfo returns various build information properties about the Prometheus server
|
||||||
|
Buildinfo(ctx context.Context) (BuildinfoResult, error)
|
||||||
// Runtimeinfo returns the various runtime information properties about the Prometheus server.
|
// Runtimeinfo returns the various runtime information properties about the Prometheus server.
|
||||||
Runtimeinfo(ctx context.Context) (RuntimeinfoResult, error)
|
Runtimeinfo(ctx context.Context) (RuntimeinfoResult, error)
|
||||||
// Series finds series by label matchers.
|
// Series finds series by label matchers.
|
||||||
|
@ -281,6 +284,16 @@ type ConfigResult struct {
|
||||||
// FlagsResult contains the result from querying the flag endpoint.
|
// FlagsResult contains the result from querying the flag endpoint.
|
||||||
type FlagsResult map[string]string
|
type FlagsResult map[string]string
|
||||||
|
|
||||||
|
// BuildinfoResult contains the results from querying the buildinfo endpoint.
|
||||||
|
type BuildinfoResult struct {
|
||||||
|
Version string `json:"version"`
|
||||||
|
Revision string `json:"revision"`
|
||||||
|
Branch string `json:"branch"`
|
||||||
|
BuildUser string `json:"buildUser"`
|
||||||
|
BuildDate string `json:"buildDate"`
|
||||||
|
GoVersion string `json:"goVersion"`
|
||||||
|
}
|
||||||
|
|
||||||
// RuntimeinfoResult contains the result from querying the runtimeinfo endpoint.
|
// RuntimeinfoResult contains the result from querying the runtimeinfo endpoint.
|
||||||
type RuntimeinfoResult struct {
|
type RuntimeinfoResult struct {
|
||||||
StartTime time.Time `json:"startTime"`
|
StartTime time.Time `json:"startTime"`
|
||||||
|
@ -674,6 +687,23 @@ func (h *httpAPI) Flags(ctx context.Context) (FlagsResult, error) {
|
||||||
return res, json.Unmarshal(body, &res)
|
return res, json.Unmarshal(body, &res)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *httpAPI) Buildinfo(ctx context.Context) (BuildinfoResult, error) {
|
||||||
|
u := h.client.URL(epBuildinfo, nil)
|
||||||
|
|
||||||
|
req, err := http.NewRequest(http.MethodGet, u.String(), nil)
|
||||||
|
if err != nil {
|
||||||
|
return BuildinfoResult{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, body, _, err := h.client.Do(ctx, req)
|
||||||
|
if err != nil {
|
||||||
|
return BuildinfoResult{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var res BuildinfoResult
|
||||||
|
return res, json.Unmarshal(body, &res)
|
||||||
|
}
|
||||||
|
|
||||||
func (h *httpAPI) Runtimeinfo(ctx context.Context) (RuntimeinfoResult, error) {
|
func (h *httpAPI) Runtimeinfo(ctx context.Context) (RuntimeinfoResult, error) {
|
||||||
u := h.client.URL(epRuntimeinfo, nil)
|
u := h.client.URL(epRuntimeinfo, nil)
|
||||||
|
|
||||||
|
|
|
@ -144,6 +144,13 @@ func TestAPIs(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
doBuildinfo := func() func() (interface{}, Warnings, error) {
|
||||||
|
return func() (interface{}, Warnings, error) {
|
||||||
|
v, err := promAPI.Buildinfo(context.Background())
|
||||||
|
return v, nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
doRuntimeinfo := func() func() (interface{}, Warnings, error) {
|
doRuntimeinfo := func() func() (interface{}, Warnings, error) {
|
||||||
return func() (interface{}, Warnings, error) {
|
return func() (interface{}, Warnings, error) {
|
||||||
v, err := promAPI.Runtimeinfo(context.Background())
|
v, err := promAPI.Runtimeinfo(context.Background())
|
||||||
|
@ -635,6 +642,36 @@ func TestAPIs(t *testing.T) {
|
||||||
err: fmt.Errorf("some error"),
|
err: fmt.Errorf("some error"),
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
do: doBuildinfo(),
|
||||||
|
reqMethod: "GET",
|
||||||
|
reqPath: "/api/v1/status/buildinfo",
|
||||||
|
inErr: fmt.Errorf("some error"),
|
||||||
|
err: fmt.Errorf("some error"),
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
do: doBuildinfo(),
|
||||||
|
reqMethod: "GET",
|
||||||
|
reqPath: "/api/v1/status/buildinfo",
|
||||||
|
inRes: map[string]interface{}{
|
||||||
|
"version": "2.23.0",
|
||||||
|
"revision": "26d89b4b0776fe4cd5a3656dfa520f119a375273",
|
||||||
|
"branch": "HEAD",
|
||||||
|
"buildUser": "root@37609b3a0a21",
|
||||||
|
"buildDate": "20201126-10:56:17",
|
||||||
|
"goVersion": "go1.15.5",
|
||||||
|
},
|
||||||
|
res: BuildinfoResult{
|
||||||
|
Version: "2.23.0",
|
||||||
|
Revision: "26d89b4b0776fe4cd5a3656dfa520f119a375273",
|
||||||
|
Branch: "HEAD",
|
||||||
|
BuildUser: "root@37609b3a0a21",
|
||||||
|
BuildDate: "20201126-10:56:17",
|
||||||
|
GoVersion: "go1.15.5",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
do: doRuntimeinfo(),
|
do: doRuntimeinfo(),
|
||||||
reqMethod: "GET",
|
reqMethod: "GET",
|
||||||
|
|
Loading…
Reference in New Issue