refactor: service api
This commit is contained in:
parent
f6591e80ea
commit
1dbfcd3dc8
|
@ -233,7 +233,7 @@ CREATE TABLE `alert_rule` (
|
||||||
`severity` tinyint(1) not null comment '1:Emergency 2:Warning 3:Notice',
|
`severity` tinyint(1) not null comment '1:Emergency 2:Warning 3:Notice',
|
||||||
`disabled` tinyint(1) not null comment '0:enabled 1:disabled',
|
`disabled` tinyint(1) not null comment '0:enabled 1:disabled',
|
||||||
`prom_for_duration` int not null comment 'prometheus for, unit:s',
|
`prom_for_duration` int not null comment 'prometheus for, unit:s',
|
||||||
`prom_ql` varchar(8192) not null comment 'promql',
|
`prom_ql` text not null comment 'promql',
|
||||||
`prom_eval_interval` int not null comment 'evaluate interval',
|
`prom_eval_interval` int not null comment 'evaluate interval',
|
||||||
`enable_stime` char(5) not null default '00:00',
|
`enable_stime` char(5) not null default '00:00',
|
||||||
`enable_etime` char(5) not null default '23:59',
|
`enable_etime` char(5) not null default '23:59',
|
||||||
|
@ -259,6 +259,7 @@ CREATE TABLE `alert_rule` (
|
||||||
CREATE TABLE `alert_mute` (
|
CREATE TABLE `alert_mute` (
|
||||||
`id` bigint unsigned not null auto_increment,
|
`id` bigint unsigned not null auto_increment,
|
||||||
`group_id` bigint not null default 0 comment 'busi group id',
|
`group_id` bigint not null default 0 comment 'busi group id',
|
||||||
|
`prod` varchar(255) not null default '',
|
||||||
`cluster` varchar(128) not null,
|
`cluster` varchar(128) not null,
|
||||||
`tags` varchar(4096) not null default '' comment 'json,map,tagkey->regexp|value',
|
`tags` varchar(4096) not null default '' comment 'json,map,tagkey->regexp|value',
|
||||||
`cause` varchar(255) not null default '',
|
`cause` varchar(255) not null default '',
|
||||||
|
|
|
@ -22,6 +22,7 @@ type TagFilter struct {
|
||||||
type AlertMute struct {
|
type AlertMute struct {
|
||||||
Id int64 `json:"id" gorm:"primaryKey"`
|
Id int64 `json:"id" gorm:"primaryKey"`
|
||||||
GroupId int64 `json:"group_id"`
|
GroupId int64 `json:"group_id"`
|
||||||
|
Prod string `json:"prod"` // product empty means n9e
|
||||||
Cluster string `json:"cluster"`
|
Cluster string `json:"cluster"`
|
||||||
Tags ormx.JSONArr `json:"tags"`
|
Tags ormx.JSONArr `json:"tags"`
|
||||||
Cause string `json:"cause"`
|
Cause string `json:"cause"`
|
||||||
|
@ -36,14 +37,14 @@ func (m *AlertMute) TableName() string {
|
||||||
return "alert_mute"
|
return "alert_mute"
|
||||||
}
|
}
|
||||||
|
|
||||||
func AlertMuteGets(bgid int64, query string) (lst []AlertMute, err error) {
|
func AlertMuteGets(prods []string, bgid int64, query string) (lst []AlertMute, err error) {
|
||||||
session := DB().Where("group_id = ?", bgid)
|
session := DB().Where("group_id = ? and prod in (?)", bgid, prods)
|
||||||
|
|
||||||
if query != "" {
|
if query != "" {
|
||||||
arr := strings.Fields(query)
|
arr := strings.Fields(query)
|
||||||
for i := 0; i < len(arr); i++ {
|
for i := 0; i < len(arr); i++ {
|
||||||
qarg := "%\"" + arr[i] + "\"%"
|
qarg := "%" + arr[i] + "%"
|
||||||
session = session.Where("tags like ?", qarg, qarg)
|
session = session.Where("cause like ?", qarg, qarg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -289,8 +289,16 @@ func AlertRuleGetsByCluster(cluster string) ([]*AlertRule, error) {
|
||||||
return lst, err
|
return lst, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func AlertRulesGetByProds(prods []string) ([]*AlertRule, error) {
|
func AlertRulesGetsBy(prods []string, query string) ([]*AlertRule, error) {
|
||||||
session := DB().Where("disabled = ? and prod IN (?)", 0, prods)
|
session := DB().Where("disabled = ? and prod in (?)", 0, prods)
|
||||||
|
|
||||||
|
if query != "" {
|
||||||
|
arr := strings.Fields(query)
|
||||||
|
for i := 0; i < len(arr); i++ {
|
||||||
|
qarg := "%" + arr[i] + "%"
|
||||||
|
session = session.Where("append_tags like ?", qarg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var lst []*AlertRule
|
var lst []*AlertRule
|
||||||
err := session.Find(&lst).Error
|
err := session.Find(&lst).Error
|
||||||
|
|
|
@ -276,12 +276,11 @@ func configRoute(r *gin.Engine, version string) {
|
||||||
service.DELETE("/targets/tags", targetUnbindTagsByService)
|
service.DELETE("/targets/tags", targetUnbindTagsByService)
|
||||||
service.PUT("/targets/note", targetUpdateNoteByService)
|
service.PUT("/targets/note", targetUpdateNoteByService)
|
||||||
|
|
||||||
service.GET("/alert-rules", alertRuleGets)
|
|
||||||
service.POST("/alert-rules", alertRuleAddByService)
|
service.POST("/alert-rules", alertRuleAddByService)
|
||||||
service.DELETE("/alert-rules", alertRuleDel)
|
service.DELETE("/alert-rules", alertRuleDel)
|
||||||
service.PUT("/alert-rule/:arid", alertRulePutByService)
|
service.PUT("/alert-rule/:arid", alertRulePutByService)
|
||||||
service.GET("/alert-rule/:arid", alertRuleGet)
|
service.GET("/alert-rule/:arid", alertRuleGet)
|
||||||
service.GET("/alert-rules-get-by-prod", alertRulesGetByProds)
|
service.GET("/alert-rules", alertRulesGetByService)
|
||||||
|
|
||||||
service.GET("/alert-mutes", alertMuteGets)
|
service.GET("/alert-mutes", alertMuteGets)
|
||||||
service.POST("/alert-mutes", alertMuteAddByService)
|
service.POST("/alert-mutes", alertMuteAddByService)
|
||||||
|
|
|
@ -25,11 +25,11 @@ func alertRuleGets(c *gin.Context) {
|
||||||
ginx.NewRender(c).Data(ars, err)
|
ginx.NewRender(c).Data(ars, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func alertRulesGetByProds(c *gin.Context) {
|
func alertRulesGetByService(c *gin.Context) {
|
||||||
prods := ginx.QueryStr(c, "prods", "")
|
prods := strings.Fields(ginx.QueryStr(c, "prods", ""))
|
||||||
arr := strings.Split(prods, ",")
|
query := ginx.QueryStr(c, "query", "")
|
||||||
|
|
||||||
ars, err := models.AlertRulesGetByProds(arr)
|
ars, err := models.AlertRulesGetsBy(prods, query)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
cache := make(map[int64]*models.UserGroup)
|
cache := make(map[int64]*models.UserGroup)
|
||||||
for i := 0; i < len(ars); i++ {
|
for i := 0; i < len(ars); i++ {
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package router
|
package router
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/toolkits/pkg/ginx"
|
"github.com/toolkits/pkg/ginx"
|
||||||
|
|
||||||
|
@ -15,9 +17,10 @@ func alertMuteGetsByBG(c *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func alertMuteGets(c *gin.Context) {
|
func alertMuteGets(c *gin.Context) {
|
||||||
|
prods := strings.Fields(ginx.QueryStr(c, "prods", ""))
|
||||||
bgid := ginx.QueryInt64(c, "bgid", 0)
|
bgid := ginx.QueryInt64(c, "bgid", 0)
|
||||||
query := ginx.QueryStr(c, "query", "")
|
query := ginx.QueryStr(c, "query", "")
|
||||||
lst, err := models.AlertMuteGets(bgid, query)
|
lst, err := models.AlertMuteGets(prods, bgid, query)
|
||||||
|
|
||||||
ginx.NewRender(c).Data(lst, err)
|
ginx.NewRender(c).Data(lst, err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue