forked from pneymrl2f/nightingale
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.1 KiB
92 lines
2.1 KiB
package routes
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/toolkits/pkg/logger"
|
|
|
|
"github.com/didi/nightingale/src/modules/transfer/backend"
|
|
"github.com/didi/nightingale/src/modules/transfer/cache"
|
|
"github.com/didi/nightingale/src/toolkits/http/render"
|
|
"github.com/didi/nightingale/src/toolkits/str"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/toolkits/pkg/errors"
|
|
)
|
|
|
|
func ping(c *gin.Context) {
|
|
c.String(200, "pong")
|
|
}
|
|
|
|
func addr(c *gin.Context) {
|
|
c.String(200, c.Request.RemoteAddr)
|
|
}
|
|
|
|
func pid(c *gin.Context) {
|
|
c.String(200, fmt.Sprintf("%d", os.Getpid()))
|
|
}
|
|
|
|
type getStraReq struct {
|
|
Endpoint string `json:"endpoint"`
|
|
Metric string `json:"metric"`
|
|
}
|
|
|
|
func getStra(c *gin.Context) {
|
|
var input getStraReq
|
|
errors.Dangerous(c.ShouldBindJSON(&input))
|
|
key := str.PK(input.Metric, input.Endpoint)
|
|
stras := cache.StraMap.GetByKey(key)
|
|
|
|
render.Data(c, stras, nil)
|
|
}
|
|
|
|
type tsdbInstanceRecv struct {
|
|
Endpoint string `json:"endpoint"`
|
|
Metric string `json:"metric"`
|
|
TagMap map[string]string `json:"tags"`
|
|
}
|
|
|
|
func tsdbInstance(c *gin.Context) {
|
|
var input tsdbInstanceRecv
|
|
errors.Dangerous(c.ShouldBindJSON(&input))
|
|
|
|
dataSource, err := backend.GetDataSourceFor("tsdb")
|
|
if err != nil {
|
|
logger.Warningf("could not find datasource")
|
|
render.Message(c, err)
|
|
return
|
|
}
|
|
|
|
addrs := dataSource.GetInstance(input.Metric, input.Endpoint, input.TagMap)
|
|
render.Data(c, addrs, nil)
|
|
}
|
|
|
|
type judgeInstanceRecv struct {
|
|
Endpoint string `json:"endpoint"`
|
|
Metric string `json:"metric"`
|
|
TagMap map[string]string `json:"tags"`
|
|
Step int `json:"step"`
|
|
Sid int64 `json:"sid"`
|
|
}
|
|
|
|
func judgeInstance(c *gin.Context) {
|
|
var input judgeInstanceRecv
|
|
errors.Dangerous(c.ShouldBindJSON(&input))
|
|
var instance string
|
|
key := str.PK(input.Metric, input.Endpoint)
|
|
stras := cache.StraMap.GetByKey(key)
|
|
for _, stra := range stras {
|
|
if input.Sid != stra.Id || !backend.TagMatch(stra.Tags, input.TagMap) {
|
|
continue
|
|
}
|
|
instance = stra.JudgeInstance
|
|
}
|
|
|
|
render.Data(c, instance, nil)
|
|
}
|
|
|
|
func judges(c *gin.Context) {
|
|
render.Data(c, backend.GetJudges(), nil)
|
|
}
|