aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/prometheus/common/expfmt/encode.go
diff options
context:
space:
mode:
authorPalash Oswal <oswalpalash@gmail.com>2021-05-26 15:49:00 +0530
committerGitHub <noreply@github.com>2021-05-26 12:19:00 +0200
commit1f4e6ed95868861aae449b3630e6cfe5a2b96c93 (patch)
treeded977da86c36bdb3d07a03fa6341ed067645eef /vendor/github.com/prometheus/common/expfmt/encode.go
parent750ce1649cc6e2b51bc65b574f6a71399980af4c (diff)
syz-manager: add prometheus metrics
* syz-manager: add prometheus metrics Add prometheus metrics client to syz-manager. Expose metrics on a new port defined in mgrconfig. Allows for prometheus to scrape metrics from syz-manager. * syz-manager: expose metrics endpoint in http server .gitignore : remove local .img path * mgrconfig: remove unnecessary config option * syz-manager: update stats to use gaugefunc added docs for prometheus exported metrics added more gaugefunc metrics Signed-off-by: Palash Oswal <oswalpalash@gmail.com> * syz-manager: minor changes for CI tests added periods to comments and renamed go variables Signed-off-by: Palash Oswal <oswalpalash@gmail.com> * syz-manager: re-position prometheus counter declaration docs updated with PR comments Signed-off-by: Palash Oswal <oswalpalash@gmail.com>
Diffstat (limited to 'vendor/github.com/prometheus/common/expfmt/encode.go')
-rw-r--r--vendor/github.com/prometheus/common/expfmt/encode.go88
1 files changed, 88 insertions, 0 deletions
diff --git a/vendor/github.com/prometheus/common/expfmt/encode.go b/vendor/github.com/prometheus/common/expfmt/encode.go
new file mode 100644
index 000000000..11839ed65
--- /dev/null
+++ b/vendor/github.com/prometheus/common/expfmt/encode.go
@@ -0,0 +1,88 @@
+// Copyright 2015 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package expfmt
+
+import (
+ "fmt"
+ "io"
+ "net/http"
+
+ "github.com/golang/protobuf/proto"
+ "github.com/matttproud/golang_protobuf_extensions/pbutil"
+ "github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg"
+
+ dto "github.com/prometheus/client_model/go"
+)
+
+// Encoder types encode metric families into an underlying wire protocol.
+type Encoder interface {
+ Encode(*dto.MetricFamily) error
+}
+
+type encoder func(*dto.MetricFamily) error
+
+func (e encoder) Encode(v *dto.MetricFamily) error {
+ return e(v)
+}
+
+// Negotiate returns the Content-Type based on the given Accept header.
+// If no appropriate accepted type is found, FmtText is returned.
+func Negotiate(h http.Header) Format {
+ for _, ac := range goautoneg.ParseAccept(h.Get(hdrAccept)) {
+ // Check for protocol buffer
+ if ac.Type+"/"+ac.SubType == ProtoType && ac.Params["proto"] == ProtoProtocol {
+ switch ac.Params["encoding"] {
+ case "delimited":
+ return FmtProtoDelim
+ case "text":
+ return FmtProtoText
+ case "compact-text":
+ return FmtProtoCompact
+ }
+ }
+ // Check for text format.
+ ver := ac.Params["version"]
+ if ac.Type == "text" && ac.SubType == "plain" && (ver == TextVersion || ver == "") {
+ return FmtText
+ }
+ }
+ return FmtText
+}
+
+// NewEncoder returns a new encoder based on content type negotiation.
+func NewEncoder(w io.Writer, format Format) Encoder {
+ switch format {
+ case FmtProtoDelim:
+ return encoder(func(v *dto.MetricFamily) error {
+ _, err := pbutil.WriteDelimited(w, v)
+ return err
+ })
+ case FmtProtoCompact:
+ return encoder(func(v *dto.MetricFamily) error {
+ _, err := fmt.Fprintln(w, v.String())
+ return err
+ })
+ case FmtProtoText:
+ return encoder(func(v *dto.MetricFamily) error {
+ _, err := fmt.Fprintln(w, proto.MarshalTextString(v))
+ return err
+ })
+ case FmtText:
+ return encoder(func(v *dto.MetricFamily) error {
+ _, err := MetricFamilyToText(w, v)
+ return err
+ })
+ }
+ panic("expfmt.NewEncoder: unknown format")
+}