@@ -22,32 +22,11 @@ import (
|
||||
jsoniter "github.com/json-iterator/go"
|
||||
"io/ioutil"
|
||||
"k8s.io/klog"
|
||||
"kubesphere.io/kubesphere/pkg/api/monitoring/v1alpha2"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Prometheus query api response
|
||||
type APIResponse struct {
|
||||
Status string `json:"status" description:"result status, one of error, success"`
|
||||
Data QueryResult `json:"data" description:"actual metric result"`
|
||||
ErrorType string `json:"errorType,omitempty"`
|
||||
Error string `json:"error,omitempty"`
|
||||
Warnings []string `json:"warnings,omitempty"`
|
||||
}
|
||||
|
||||
// QueryResult includes result data from a query.
|
||||
type QueryResult struct {
|
||||
ResultType string `json:"resultType" description:"result type, one of matrix, vector"`
|
||||
Result []QueryValue `json:"result" description:"metric data including labels, time series and values"`
|
||||
}
|
||||
|
||||
// Time Series
|
||||
type QueryValue struct {
|
||||
Metric map[string]string `json:"metric,omitempty" description:"time series labels"`
|
||||
Value []interface{} `json:"value,omitempty" description:"time series, values of vector type"`
|
||||
Values [][]interface{} `json:"values,omitempty" description:"time series, values of matrix type"`
|
||||
}
|
||||
|
||||
type PrometheusClient struct {
|
||||
client *http.Client
|
||||
endpoint string
|
||||
@@ -64,17 +43,17 @@ func NewPrometheusClient(options *PrometheusOptions) (*PrometheusClient, error)
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (c *PrometheusClient) QueryToK8SPrometheus(queryType string, params string) (apiResponse APIResponse) {
|
||||
func (c *PrometheusClient) QueryToK8SPrometheus(queryType string, params string) (apiResponse v1alpha2.APIResponse) {
|
||||
return c.query(c.endpoint, queryType, params)
|
||||
}
|
||||
|
||||
func (c *PrometheusClient) QueryToK8SSystemPrometheus(queryType string, params string) (apiResponse APIResponse) {
|
||||
func (c *PrometheusClient) QueryToK8SSystemPrometheus(queryType string, params string) (apiResponse v1alpha2.APIResponse) {
|
||||
return c.query(c.secondaryEndpoint, queryType, params)
|
||||
}
|
||||
|
||||
var jsonIter = jsoniter.ConfigCompatibleWithStandardLibrary
|
||||
|
||||
func (c *PrometheusClient) query(endpoint string, queryType string, params string) (apiResponse APIResponse) {
|
||||
func (c *PrometheusClient) query(endpoint string, queryType string, params string) (apiResponse v1alpha2.APIResponse) {
|
||||
url := fmt.Sprintf("%s/api/v1/%s?%s", endpoint, queryType, params)
|
||||
|
||||
response, err := c.client.Get(url)
|
||||
|
||||
Reference in New Issue
Block a user