router.go 8.3 KB
Newer Older
Q
qinyening 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14
package http

import (
	"fmt"
	"os"

	"github.com/gin-contrib/gzip"
	"github.com/gin-contrib/pprof"
	"github.com/gin-gonic/gin"

	"github.com/didi/nightingale/v5/config"
)

func configRoutes(r *gin.Engine) {
15 16 17 18 19 20 21 22 23
	/*
		csrfMid := csrf.Middleware(csrf.Options{
			Secret: config.Config.HTTP.CsrfSecret,
			ErrorFunc: func(c *gin.Context) {
				c.JSON(452, gin.H{"err": "csrf token mismatch"})
				c.Abort()
			},
		})
	*/
Q
qinyening 已提交
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

	if config.Config.HTTP.Pprof {
		pprof.Register(r, "/api/debug/pprof")
	}

	guest := r.Group("/api/n9e")
	{
		guest.GET("/ping", func(c *gin.Context) {
			c.String(200, "pong")
		})
		guest.GET("/pid", func(c *gin.Context) {
			c.String(200, fmt.Sprintf("%d", os.Getpid()))
		})
		guest.GET("/addr", func(c *gin.Context) {
			c.String(200, c.Request.RemoteAddr)
		})
U
Ulric Qin 已提交
40 41 42
		guest.GET("/version", func(c *gin.Context) {
			c.String(200, config.Version)
		})
Q
qinyening 已提交
43 44 45

		guest.POST("/auth/login", loginPost)
		guest.GET("/auth/logout", logoutGet)
U
UlricQin 已提交
46 47 48

		// 开源版本,为了支持图表分享功能,允许匿名查询数据
		guest.POST("/query", GetData)
49
		guest.POST("/instant-query", GetDataInstant)
U
UlricQin 已提交
50 51 52 53
		guest.POST("/tag-pairs", GetTagPairs)
		guest.POST("/tag-keys", GetTagKeys)
		guest.POST("/tag-values", GetTagValues)
		guest.POST("/tag-metrics", GetMetrics)
54
		guest.GET("/check-promql", checkPromeQl)
Q
qinyening 已提交
55 56 57
	}

	// for brower, expose location in nginx.conf
58
	pages := r.Group("/api/n9e")
Q
qinyening 已提交
59 60

	{
U
Ulric Qin 已提交
61 62 63 64 65

		pages.GET("/csrf", func(c *gin.Context) {
			// renderData(c, csrf.GetToken(c), nil)
			renderData(c, "not supported", nil)
		})
Q
qinyening 已提交
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91

		pages.GET("/roles", rolesGet)
		pages.GET("/self/profile", selfProfileGet)
		pages.PUT("/self/profile", selfProfilePut)
		pages.PUT("/self/password", selfPasswordPut)
		pages.GET("/self/token", selfTokenGets)
		pages.POST("/self/token", selfTokenPost)
		pages.PUT("/self/token", selfTokenPut)
		pages.GET("/users", login(), userGets)
		pages.POST("/users", admin(), userAddPost)
		pages.GET("/user/:id/profile", login(), userProfileGet)
		pages.PUT("/user/:id/profile", admin(), userProfilePut)
		pages.PUT("/user/:id/status", admin(), userStatusPut)
		pages.PUT("/user/:id/password", admin(), userPasswordPut)
		pages.DELETE("/user/:id", admin(), userDel)

		pages.GET("/user-groups", login(), userGroupListGet)
		pages.GET("/user-groups/mine", login(), userGroupMineGet)
		pages.POST("/user-groups", login(), userGroupAdd)
		pages.PUT("/user-group/:id", login(), userGroupPut)
		pages.GET("/user-group/:id", login(), userGroupGet)
		pages.POST("/user-group/:id/members", login(), userGroupMemberAdd)
		pages.DELETE("/user-group/:id/members", login(), userGroupMemberDel)
		pages.DELETE("/user-group/:id", login(), userGroupDel)

		pages.GET("/classpaths", login(), classpathListGets)
92
		pages.GET("/classpaths/tree-node/:id", login(), classpathListNodeGetsById)
Q
qinyening 已提交
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
		pages.POST("/classpaths", login(), classpathAdd)
		pages.PUT("/classpath/:id", login(), classpathPut)
		pages.DELETE("/classpath/:id", login(), classpathDel)
		pages.POST("/classpath/:id/resources", login(), classpathAddResources)
		pages.DELETE("/classpath/:id/resources", login(), classpathDelResources)
		pages.GET("/classpath/:id/resources", login(), classpathGetsResources)

		pages.GET("/classpaths/favorites", login(), classpathFavoriteGet)
		pages.POST("/classpath/:id/favorites", login(), classpathFavoriteAdd)
		pages.DELETE("/classpath/:id/favorites", login(), classpathFavoriteDel)

		pages.GET("/resources", login(), resourcesQuery)
		pages.PUT("/resources/note", resourceNotePut)
		pages.PUT("/resources/tags", resourceTagsPut)
		pages.PUT("/resources/classpaths", resourceClasspathsPut)
		pages.PUT("/resources/mute", resourceMutePut)
		pages.GET("/resource/:id", login(), resourceGet)
		pages.DELETE("/resource/:id", login(), resourceDel)

		pages.GET("/mutes", login(), muteGets)
		pages.POST("/mutes", login(), muteAdd)
		pages.GET("/mute/:id", login(), muteGet)
		pages.DELETE("/mute/:id", login(), muteDel)

		pages.GET("/dashboards", login(), dashboardGets)
		pages.POST("/dashboards", login(), dashboardAdd)
		pages.POST("/dashboards-clone", login(), dashboardClone)
7
710leo 已提交
120 121
		pages.POST("/dashboards/import", login(), dashboardImport)
		pages.POST("/dashboards/export", login(), dashboardExport)
Q
qinyening 已提交
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
		pages.GET("/dashboard/:id", login(), dashboardGet)
		pages.PUT("/dashboard/:id", login(), dashboardPut)
		pages.DELETE("/dashboard/:id", login(), dashboardDel)
		pages.POST("/dashboard/:id/favorites", login(), dashboardFavoriteAdd)
		pages.DELETE("/dashboard/:id/favorites", login(), dashboardFavoriteDel)
		pages.GET("/dashboard/:id/chart-groups", login(), chartGroupGets)
		pages.POST("/dashboard/:id/chart-groups", login(), chartGroupAdd)

		pages.PUT("/chart-groups", login(), chartGroupsPut)
		pages.DELETE("/chart-group/:id", login(), chartGroupDel)
		pages.GET("/chart-group/:id/charts", login(), chartGets)
		pages.POST("/chart-group/:id/charts", login(), chartAdd)
		pages.PUT("/chart/:id", login(), chartPut)
		pages.DELETE("/chart/:id", login(), chartDel)
		pages.PUT("/charts/configs", login(), chartConfigsPut)
U
UlricQin 已提交
137
		pages.GET("/charts/tmps", chartTmpGets)
Q
qinyening 已提交
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
		pages.POST("/charts/tmps", login(), chartTmpAdd)

		pages.GET("/alert-rule-groups", login(), alertRuleGroupGets)
		pages.GET("/alert-rule-groups/favorites", login(), alertRuleGroupFavoriteGet)
		pages.POST("/alert-rule-groups", login(), alertRuleGroupAdd)
		pages.GET("/alert-rule-group/:id", login(), alertRuleGroupGet)
		pages.GET("/alert-rule-group/:id/alert-rules", login(), alertRuleOfGroupGet)
		pages.DELETE("/alert-rule-group/:id/alert-rules", login(), alertRuleOfGroupDel)
		pages.PUT("/alert-rule-group/:id", login(), alertRuleGroupPut)
		pages.DELETE("/alert-rule-group/:id", login(), alertRuleGroupDel)
		pages.POST("/alert-rule-group/:id/favorites", login(), alertRuleGroupFavoriteAdd)
		pages.DELETE("/alert-rule-group/:id/favorites", login(), alertRuleGroupFavoriteDel)

		pages.POST("/alert-rules", login(), alertRuleAdd)
		pages.PUT("/alert-rules/status", login(), alertRuleStatusPut)
153
		pages.PUT("/alert-rules/notify-groups", login(), alertRuleNotifyGroupsPut)
154 155
		pages.PUT("/alert-rules/notify-channels", login(), alertRuleNotifyChannelsPut)
		pages.PUT("/alert-rules/append-tags", login(), alertRuleAppendTagsPut)
Q
qinyening 已提交
156 157 158 159 160 161 162 163
		pages.GET("/alert-rule/:id", login(), alertRuleGet)
		pages.PUT("/alert-rule/:id", login(), alertRulePut)
		pages.DELETE("/alert-rule/:id", login(), alertRuleDel)

		pages.GET("/alert-events", login(), alertEventGets)
		pages.DELETE("/alert-events", login(), alertEventsDel)
		pages.GET("/alert-event/:id", login(), alertEventGet)
		pages.DELETE("/alert-event/:id", login(), alertEventDel)
U
UlricQin 已提交
164
		// pages.PUT("/alert-event/:id", login(), alertEventNotePut)
Q
qinyening 已提交
165

166 167 168
		pages.GET("/history-alert-events", login(), historyAlertEventGets)
		pages.GET("/history-alert-event/:id", login(), historyAlertEventGet)

Q
qinyening 已提交
169 170 171 172
		pages.GET("/classpath/:id/collect-rules", login(), collectRuleGets)
		pages.POST("/collect-rules", login(), collectRuleAdd)
		pages.DELETE("/collect-rules", login(), collectRuleDel)
		pages.PUT("/collect-rule/:id", login(), collectRulePut)
7
710leo 已提交
173
		pages.POST("/log/check", regExpCheck)
Q
qinyening 已提交
174 175 176 177 178 179 180 181 182

		pages.GET("/metric-descriptions", metricDescriptionGets)
		pages.POST("/metric-descriptions", login(), metricDescriptionAdd)
		pages.DELETE("/metric-descriptions", login(), metricDescriptionDel)
		pages.PUT("/metric-description/:id", login(), metricDescriptionPut)

		pages.GET("/contact-channels", contactChannelsGet)
		pages.GET("/notify-channels", notifyChannelsGet)

7
710leo 已提交
183 184 185 186
		pages.GET("/tpl/list", tplNameGets)
		pages.GET("/tpl/content", tplGet)

		pages.GET("/status", Status)
ning1875's avatar
ning1875 已提交
187

Q
qinyening 已提交
188 189
	}

190
	// for brower, expose location in nginx.conf
191
	pagesV2 := r.Group("/api/n9e/v2")
192 193 194 195
	{
		pagesV2.POST("/collect-rules", login(), collectRulesAdd)
	}

Q
qinyening 已提交
196 197 198 199
	// for thirdparty, do not expose location in nginx.conf
	v1 := r.Group("/v1/n9e")
	{
		v1.POST("/query", GetData)
200
		v1.POST("/instant-query", GetDataInstant)
Q
qinyening 已提交
201 202 203
		v1.POST("/tag-keys", GetTagKeys)
		v1.POST("/tag-values", GetTagValues)
		v1.POST("/tag-pairs", GetTagPairs)
204
		v1.POST("/tag-metrics", GetMetrics)
7
710leo 已提交
205 206 207
		v1.POST("/push", PushData)
		v1.GET("/collect-rules-belong-to-ident", collectRuleGetsByIdent)
		v1.GET("/collect-rules-summary", collectRuleSummaryGetByIdent)
7
710leo 已提交
208 209 210

		v1.GET("/can-do-op-by-name", login(), canDoOpByName)
		v1.GET("/can-do-op-by-token", login(), canDoOpByToken)
7
710leo 已提交
211
		v1.GET("/get-user-by-name", login(), getUserByName)
7
710leo 已提交
212
		v1.GET("/get-user-by-token", login(), getUserByToken)
Q
qinyening 已提交
213 214 215 216 217 218 219 220
	}

	push := r.Group("/v1/n9e/series").Use(gzip.Gzip(gzip.DefaultCompression))
	{
		push.POST("", PushSeries)
	}

}