Compare commits
No commits in common. "master" and "v1.0.8" have entirely different histories.
6
api.go
6
api.go
@ -54,12 +54,6 @@ func (e *Engine) POST(uri string, handler Handler) {
|
|||||||
e.Engine.POST(uri, h)
|
e.Engine.POST(uri, h)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Engine) GET(uri string, handler Handler) {
|
|
||||||
h := handlerWrapper(handler)
|
|
||||||
log.Infof("api handler [%v] registor success", handler)
|
|
||||||
e.Engine.GET(uri, h)
|
|
||||||
}
|
|
||||||
|
|
||||||
// handlerWrapper
|
// handlerWrapper
|
||||||
func handlerWrapper(handler Handler) gin.HandlerFunc {
|
func handlerWrapper(handler Handler) gin.HandlerFunc {
|
||||||
handlerFunc := handler.HandlerFunc()
|
handlerFunc := handler.HandlerFunc()
|
||||||
|
@ -120,14 +120,7 @@ func (c *Context) SetCookie(cookie *http.Cookie) {
|
|||||||
http.SetCookie(c.Writer, cookie)
|
http.SetCookie(c.Writer, cookie)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Context) AlreadyHaveResult() (done bool, entry string) {
|
|
||||||
return c.resultentry != "", c.resultentry
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Context) RESULT(output interface{}) error {
|
func (c *Context) RESULT(output interface{}) error {
|
||||||
if c.resultentry == "" {
|
|
||||||
c.resultentry = "RESULT"
|
|
||||||
}
|
|
||||||
var t = reflect.TypeOf(output)
|
var t = reflect.TypeOf(output)
|
||||||
defer func(o *interface{}) {
|
defer func(o *interface{}) {
|
||||||
b, err := json.Marshal(o)
|
b, err := json.Marshal(o)
|
||||||
@ -156,6 +149,7 @@ func (c *Context) RESULT(output interface{}) error {
|
|||||||
cost := time.Now().Sub(c.starttime).Milliseconds()
|
cost := time.Now().Sub(c.starttime).Milliseconds()
|
||||||
noticeStr := fmt.Sprintf("cost: %dms, output: '%s'", cost, string(b))
|
noticeStr := fmt.Sprintf("cost: %dms, output: '%s'", cost, string(b))
|
||||||
log.NoticefWithDepth(calldepth, noticeStr)
|
log.NoticefWithDepth(calldepth, noticeStr)
|
||||||
|
|
||||||
}(&output)
|
}(&output)
|
||||||
|
|
||||||
if _, ok := t.FieldByName("ErrCode"); !ok {
|
if _, ok := t.FieldByName("ErrCode"); !ok {
|
||||||
|
@ -15,10 +15,9 @@ import (
|
|||||||
var (
|
var (
|
||||||
MetricExporterPusher = func() error { return nil }
|
MetricExporterPusher = func() error { return nil }
|
||||||
MetricExporterHandler Handler = nil
|
MetricExporterHandler Handler = nil
|
||||||
MetricRegistry *prometheus.Registry = nil
|
metricRegistry *prometheus.Registry = nil
|
||||||
metricApiCounter *prometheus.CounterVec = nil
|
metricApiCounter *prometheus.CounterVec = nil
|
||||||
metricApiSummary *prometheus.SummaryVec = nil
|
metricApiSummary *prometheus.SummaryVec = nil
|
||||||
instance string = "--unknown--"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type metricExporterHandler struct {
|
type metricExporterHandler struct {
|
||||||
@ -42,6 +41,7 @@ func dumpMetricExporterPusher() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func InitMetrics(instanceValue string) {
|
func InitMetrics(instanceValue string) {
|
||||||
|
var instance = instanceValue
|
||||||
if instanceValue == "" {
|
if instanceValue == "" {
|
||||||
instance = getInstanceIpAddress()
|
instance = getInstanceIpAddress()
|
||||||
} else if ap := strings.Split(instanceValue, ":"); len(ap) == 2 &&
|
} else if ap := strings.Split(instanceValue, ":"); len(ap) == 2 &&
|
||||||
@ -52,25 +52,25 @@ func InitMetrics(instanceValue string) {
|
|||||||
|
|
||||||
metricApiCounter = prometheus.NewCounterVec(
|
metricApiCounter = prometheus.NewCounterVec(
|
||||||
prometheus.CounterOpts{
|
prometheus.CounterOpts{
|
||||||
Name: "api_requests_total",
|
Name: "api_requests_total",
|
||||||
Help: "How many HTTP requests processed",
|
Help: "How many HTTP requests processed",
|
||||||
//ConstLabels: prometheus.Labels{"instance": instance},
|
ConstLabels: prometheus.Labels{"instance": instance},
|
||||||
},
|
},
|
||||||
[]string{"api", "errcode", "appid"},
|
[]string{"api", "errcode", "appid"},
|
||||||
)
|
)
|
||||||
metricApiSummary = prometheus.NewSummaryVec(
|
metricApiSummary = prometheus.NewSummaryVec(
|
||||||
prometheus.SummaryOpts{
|
prometheus.SummaryOpts{
|
||||||
Name: "api_requests_summary",
|
Name: "api_requests_summary",
|
||||||
Help: "The api request summary of cost.",
|
Help: "The api request summary of cost.",
|
||||||
Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001},
|
Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001},
|
||||||
//ConstLabels: prometheus.Labels{"instance": instance},
|
ConstLabels: prometheus.Labels{"instance": instance},
|
||||||
},
|
},
|
||||||
[]string{"api", "errcode", "appid"},
|
[]string{"api", "errcode", "appid"},
|
||||||
)
|
)
|
||||||
|
|
||||||
MetricRegistry = prometheus.NewRegistry()
|
metricRegistry = prometheus.NewRegistry()
|
||||||
MetricRegistry.MustRegister(metricApiCounter)
|
metricRegistry.MustRegister(metricApiCounter)
|
||||||
MetricRegistry.MustRegister(metricApiSummary)
|
metricRegistry.MustRegister(metricApiSummary)
|
||||||
}
|
}
|
||||||
|
|
||||||
func SetupMetricsExporterHandler(apiname string) {
|
func SetupMetricsExporterHandler(apiname string) {
|
||||||
@ -78,10 +78,10 @@ func SetupMetricsExporterHandler(apiname string) {
|
|||||||
apiname = "premetheus_metrics_exporter"
|
apiname = "premetheus_metrics_exporter"
|
||||||
}
|
}
|
||||||
|
|
||||||
opt := promhttp.HandlerOpts{Registry: MetricRegistry}
|
opt := promhttp.HandlerOpts{Registry: metricRegistry}
|
||||||
MetricExporterHandler = &metricExporterHandler{
|
MetricExporterHandler = &metricExporterHandler{
|
||||||
name: apiname,
|
name: apiname,
|
||||||
promhttpHandler: promhttp.HandlerFor(MetricRegistry, opt),
|
promhttpHandler: promhttp.HandlerFor(metricRegistry, opt),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,11 +90,7 @@ func SetupMetricsExporterPusher(pushgateway string, jobname string) {
|
|||||||
jobname = fmt.Sprintf("api-metrics-job-%s", getExeFilename())
|
jobname = fmt.Sprintf("api-metrics-job-%s", getExeFilename())
|
||||||
}
|
}
|
||||||
|
|
||||||
var pusher = push.
|
var pusher = push.New(pushgateway, jobname).Gatherer(metricRegistry)
|
||||||
New(pushgateway, jobname).
|
|
||||||
Grouping("instance", instance).
|
|
||||||
Gatherer(MetricRegistry)
|
|
||||||
|
|
||||||
MetricExporterPusher = func() error {
|
MetricExporterPusher = func() error {
|
||||||
RecordMetrics("push_metrics_to_prometheus", "0", "selfmonitoring", 1.0)
|
RecordMetrics("push_metrics_to_prometheus", "0", "selfmonitoring", 1.0)
|
||||||
return pusher.Push()
|
return pusher.Push()
|
||||||
|
Loading…
Reference in New Issue
Block a user