Documentation
¶
Overview ¶
Package native handles the prometheus api endpoints using m3.
Index ¶
- Constants
- Variables
- func NewCompleteTagsHandler(opts options.HandlerOptions) http.Handler
- func NewListTagsHandler(opts options.HandlerOptions) http.Handler
- func NewPromParseHandler(opts options.HandlerOptions) http.Handler
- func NewPromReadHandler(opts options.HandlerOptions) http.Handler
- func NewPromReadInstantHandler(opts options.HandlerOptions) http.Handler
- func NewPromThresholdHandler(opts options.HandlerOptions) http.Handler
- func ParseQuery(r *http.Request) (string, error)
- type CompleteTagsHandler
- type FunctionNode
- type ListTagsHandler
- type ParsedOptions
- type PromReadReturnedDataMetrics
- type QueryRepresentation
- type ReadResponse
- type ReadResult
- type RenderResultsOptions
- type RenderResultsResult
- type ReturnedDataLimited
- type Threshold
Constants ¶
const ( // CompleteTagsURL is the url for searching tags. CompleteTagsURL = route.Prefix + "/search" // CompleteTagsHTTPMethod is the HTTP method used with this resource. CompleteTagsHTTPMethod = http.MethodGet )
const ( // PromParseURL is the url for native prom parse handler, this parses out the // query and returns a JSON representation of the execution DAG. PromParseURL = route.Prefix + "/parse" // PromParseHTTPMethod is the HTTP method used with this resource. PromParseHTTPMethod = http.MethodGet )
const ( // PromThresholdURL is the url for native prom threshold handler, this parses // out the query and returns a JSON representation of the execution DAG. PromThresholdURL = route.Prefix + "/threshold" // PromThresholdHTTPMethod is the HTTP method used with this resource. PromThresholdHTTPMethod = http.MethodGet )
const ( // PromReadURL is the URL for native prom read handler, this matches the // default URL for the query range endpoint found on a Prometheus server. PromReadURL = route.QueryRangeURL // PromReadInstantURL is the URL for native instantaneous prom read // handler, this matches the default URL for the query endpoint // found on a Prometheus server. PromReadInstantURL = route.QueryURL // PrometheusReadURL is the URL for native prom read handler. PrometheusReadURL = "/prometheus" + PromReadURL // PrometheusReadInstantURL is the URL for native instantaneous prom read handler. PrometheusReadInstantURL = "/prometheus" + PromReadInstantURL // M3QueryReadURL is the URL for native m3 query read handler. M3QueryReadURL = "/m3query" + PromReadURL // M3QueryReadInstantURL is the URL for native instantaneous m3 query read handler. M3QueryReadInstantURL = "/m3query" + PromReadInstantURL )
const ( // ListTagsURL is the url for listing tags. ListTagsURL = route.LabelNamesURL )
const (
// QueryParam is the name of the query form/url parameter
QueryParam = "query"
)
Variables ¶
var ( // PromReadHTTPMethods are the HTTP methods for the read handler. PromReadHTTPMethods = []string{ http.MethodGet, http.MethodPost, } // PromReadInstantHTTPMethods are the HTTP methods for the instant handler. PromReadInstantHTTPMethods = []string{ http.MethodGet, http.MethodPost, } )
var ListTagsHTTPMethods = []string{http.MethodGet, http.MethodPost}
ListTagsHTTPMethods are the HTTP methods for this handler.
var WithInstantQueryParamsAndRangeRewriting middleware.OverrideOptions = func( opts middleware.Options, ) middleware.Options { opts = WithQueryParams(opts) opts.PrometheusRangeRewrite.Enabled = true opts.PrometheusRangeRewrite.Instant = true return opts }
WithInstantQueryParamsAndRangeRewriting adds the instant query request parameters to the middleware options and enables range rewriting
var WithQueryParams middleware.OverrideOptions = func(opts middleware.Options) middleware.Options { opts.Logging.Fields = opts.Logging.Fields.Append(func(r *http.Request, start time.Time) []zap.Field { params, err := middlewareParseParams(r, start) if err != nil { opts.InstrumentOpts.Logger().Warn("failed to parse query params for response logging", zap.Error(err)) return nil } return []zap.Field{ zap.String("query", params.Query), zap.Time("start", params.Start), zap.Time("end", params.End), zap.Duration("queryRange", params.Range()), } }) opts.Metrics.ParseQueryParams = middlewareParseParams return opts }
WithQueryParams adds the query request parameters to the middleware options.
var WithRangeQueryParamsAndRangeRewriting middleware.OverrideOptions = func( opts middleware.Options, ) middleware.Options { opts = WithQueryParams(opts) opts.PrometheusRangeRewrite.Enabled = true return opts }
WithRangeQueryParamsAndRangeRewriting adds the range query request parameters to the middleware options and enables range rewriting
Functions ¶
func NewCompleteTagsHandler ¶ added in v0.5.0
func NewCompleteTagsHandler(opts options.HandlerOptions) http.Handler
NewCompleteTagsHandler returns a new instance of handler.
func NewListTagsHandler ¶ added in v0.9.0
func NewListTagsHandler(opts options.HandlerOptions) http.Handler
NewListTagsHandler returns a new instance of handler.
func NewPromParseHandler ¶ added in v0.14.1
func NewPromParseHandler(opts options.HandlerOptions) http.Handler
NewPromParseHandler returns a new instance of handler.
func NewPromReadHandler ¶
func NewPromReadHandler(opts options.HandlerOptions) http.Handler
NewPromReadHandler returns a new prometheus-compatible read handler.
func NewPromReadInstantHandler ¶ added in v0.5.0
func NewPromReadInstantHandler(opts options.HandlerOptions) http.Handler
NewPromReadInstantHandler returns a new pro instance of handler.
func NewPromThresholdHandler ¶ added in v0.14.1
func NewPromThresholdHandler(opts options.HandlerOptions) http.Handler
NewPromThresholdHandler returns a new instance of handler.
Types ¶
type CompleteTagsHandler ¶ added in v0.5.0
type CompleteTagsHandler struct {
// contains filtered or unexported fields
}
CompleteTagsHandler represents a handler for search tags endpoint.
func (*CompleteTagsHandler) ServeHTTP ¶ added in v0.5.0
func (h *CompleteTagsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
type FunctionNode ¶ added in v0.14.1
type FunctionNode struct {
// Name is the name of the function node.
Name string `json:"name,omitempty"`
// Children are any children this function node has.
Children []FunctionNode `json:"children,omitempty"`
// contains filtered or unexported fields
}
FunctionNode is a JSON representation of a function.
func (FunctionNode) QueryRepresentation ¶ added in v0.14.1
func (n FunctionNode) QueryRepresentation() (QueryRepresentation, error)
QueryRepresentation gives the query representation of the function node.
func (FunctionNode) String ¶ added in v0.14.1
func (n FunctionNode) String() string
String prints the string representation of a function node.
type ListTagsHandler ¶ added in v0.9.0
type ListTagsHandler struct {
// contains filtered or unexported fields
}
ListTagsHandler represents a handler for list tags endpoint.
func (*ListTagsHandler) ServeHTTP ¶ added in v0.9.0
func (h *ListTagsHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
type ParsedOptions ¶ added in v0.15.0
type ParsedOptions struct {
QueryOpts *executor.QueryOptions
FetchOpts *storage.FetchOptions
Params models.RequestParams
}
ParsedOptions are parsed options for the query.
func ParseRequest ¶ added in v0.15.0
func ParseRequest( ctx context.Context, r *http.Request, instantaneous bool, opts options.HandlerOptions, ) (context.Context, ParsedOptions, error)
ParseRequest parses the given request.
type PromReadReturnedDataMetrics ¶ added in v1.2.0
type PromReadReturnedDataMetrics struct {
FetchSeries tally.Histogram
FetchDatapoints tally.Histogram
}
PromReadReturnedDataMetrics are metrics on the data returned from prom reads.
func NewPromReadReturnedDataMetrics ¶ added in v1.2.0
func NewPromReadReturnedDataMetrics(scope tally.Scope) PromReadReturnedDataMetrics
NewPromReadReturnedDataMetrics returns metrics for returned data.
type QueryRepresentation ¶ added in v0.14.1
type QueryRepresentation struct {
// Query is the non-threshold part of a query.
Query FunctionNode `json:"query,omitempty"`
// Threshold is any detected threshold (top level comparison functions).
// NB: this is a pointer so it does not have to be present in output if unset.
Thresold *Threshold `json:"threshold,omitempty"`
}
QueryRepresentation is a JSON representation of a query after attempting to extract any threshold-specific parameters.
NB: this is always presented with the threshold value (if present) as appearing on the right of the query. e.g. `1 > up` will instead be inverted to `up < 1`
type ReadResponse ¶
ReadResponse is the response that gets returned to the user
type ReadResult ¶ added in v0.15.0
ReadResult is a result from a remote read.
type RenderResultsOptions ¶ added in v0.15.0
type RenderResultsOptions struct {
KeepNaNs bool
Start xtime.UnixNano
End xtime.UnixNano
ReturnedSeriesLimit int
ReturnedDatapointsLimit int
}
RenderResultsOptions is a set of options for rendering the result.
type RenderResultsResult ¶ added in v1.2.0
type RenderResultsResult struct {
// Datapoints is the count of datapoints rendered.
Datapoints int
// Series is the count of series rendered.
Series int
// TotalSeries is the count of series in total.
TotalSeries int
// LimitedMaxReturnedData indicates if the results rendering
// was truncated by a limit on returned series or datapoints.
LimitedMaxReturnedData bool
}
RenderResultsResult is the result from rendering results.
func RenderResultsJSON ¶ added in v0.15.0
func RenderResultsJSON( jw json.Writer, result ReadResult, opts RenderResultsOptions, ) RenderResultsResult
RenderResultsJSON renders results in JSON for range queries.
type ReturnedDataLimited ¶ added in v1.2.0
type ReturnedDataLimited struct {
Series int
Datapoints int
// Total series is the total number of series which maybe be >= Series.
// Truncation happens at the series-level to avoid presenting partial series
// and so this value is useful for indicating how many series would have
// been rendered without limiting either series or datapoints.
TotalSeries int
// Limited signals that the results returned were
// limited by either series or datapoint limits.
Limited bool
}
ReturnedDataLimited are parsed options for the query.
type Threshold ¶ added in v0.14.1
type Threshold struct {
// Comparator is the threshold comparator.
Comparator string `json:"comparator"`
// Value is the threshold value.
Value float64 `json:"value"`
}
Threshold is a JSON representation of a threshold, represented by a top level comparison function.