Documentation
¶
Overview ¶
Package webapp implements a simple http web server to visualize detection results and to manage alerting rules.
Web API ¶
1. Get config.
Basic auth required.
GET /api/config
200
{
"interval": 10,
...
}
2. Get interval.
GET /api/interval
200
{
"interval": 10
}
3. Get all projects.
GET /api/projects
200
[
{"id": 1, "name": "foo"},
...
]
4. Get project by id.
GET /api/project/:id
200
{"id": 1, "name": "foo"}
5. Create project.
Baisc auth required.
POST /api/project -d {"name": "myNewProject"}
200
{
"id": 12,
"name": "myNewProject"
}
6. Update project.
Baisc auth required.
PATCH /api/project/:id -d {"name": "newProjectName"}
200
{
"id": 12,
"name": "newProjectName"
}
7. Delete project.
Basic auth required.
DELETE /api/project/:id 200
8. Get rules of a project.
Basic auth required.
GET /api/project/:id/rules
200
[
{"id": 1, "pattern": "timer.count_ps.*", ...},
...
]
9. Get users of a project.
Basic auth required.
GET /api/project/:id/users
200
[
{"id": 1, "name": "jack", ...},
...
]
10. Create user.
Basic auth required.
POST /api/user -d
{
"name": "jack",
"email": "jack@gmail.com",
"enableEmail": false,
"phone": "18718718718",
"enablePhone": true,
"universal": true
}
200
{
"id": 1,
"name": "jack",
...
}
11. Get all users.
Baisc auth required.
GET /api/users
200
[
{"id": 1, "name": "jack", "email": "jack@gmail.com", ...},
...
]
12. Get user by id.
Baisc auth required.
GET /api/user/:id
200
{
"id": 1,
"name": "jack",
"email": "jack@gmail.com",
...
}
14. Delete user by id.
Basic auth required.
DELETE /api/user/:id 200
15. Get projects of a user.
Basic auth required.
GET /api/user/:id/projects
200
[
{
"id": 1,
"name", "foo"
},
...
]
16. Add user to a project.
Basic auth required.
POST /api/project/:id/user -d
{
"name": "jack"
}
200
17. Delete user from a project.
Baisc auth required.
DELETE /api/project/:id/user/:user_id 200
18. Create a rule for a project.
Baisc auth required.
POST /api/project/:id/rule -d
{
"pattern": "timer.count_ps.*",
"trendUp": true,
"trendDown": false,
"thresholdMax": 0,
"thresholdMin": 0,
"repr": "trend ↑"
}
200
{
"id": 1,
"pattern": "timer.count_ps.*",
...
}
19. Delete a rule.
Baisc auth required.
DELETE /api/rule/:id 200
20. Get metric indexes.
GET /api/metric/indexes?limit=<number>&sort=<up|down>&pattern=timer.*
Or
GET /api/metric/indexes?limit=<number>&sort=<up|down>&project=1
200
[
{"name": "timer.mean_90.foo", "score": 1.21},
...
]
21. Get metric values.
GET /api/metric/data?start=<timstamp>&stop=<timestamp>&name=timer.count_ps.foo
200
[
{"name": "timer.count_ps.foo", "stamp": ..., "value": ..., "score": ...},
...
]
22. Get metric matched rules.
GET /api/metric/rules/<name>
200
[
{"id": 1, "projectID": 1, ..},
...
]
23. Get health info.
GET /api/info
200
{
"aggregationInterval": 300,
"numIndexTotal": 3115,
"numClients": 40,
"detectionCost": 5.480208245735771,
"numMetricIncomed": 1148119,
"numMetricDetected": 35880,
"numAlertingEvents": 2
}
24. Get banshee version.
GET /api/version
200
{
"version": "0.1.1"
}
25. Get webapp notice.
GET /api/notice
200
{
"name": "url"
}
26. Get webapp language.
GET /api/language
200
{
"language": "zh"
}
Index ¶
- Variables
- func Init(c *config.Config, d *storage.DB)
- func RequestBind(r *http.Request, v interface{}) error
- func ResponseError(w http.ResponseWriter, err *WebError) error
- func ResponseJSON(w http.ResponseWriter, code int, v interface{}) error
- func ResponseJSONOK(w http.ResponseWriter, v interface{}) error
- func Start(c *config.Config, d *storage.DB, f *filter.Filter)
- type WebError
Constants ¶
This section is empty.
Variables ¶
var ( // Common ErrBadRequest = NewWebError(http.StatusBadRequest, "Bad request") ErrNotNull = NewWebError(http.StatusBadRequest, "Null value") ErrPrimaryKey = NewWebError(http.StatusForbidden, "Primarykey voilated") ErrUnique = NewWebError(http.StatusForbidden, "Value should be unique") ErrNotFound = NewWebError(http.StatusNotFound, "Not found") // Project ErrProjectID = NewWebError(http.StatusBadRequest, "Bad project id") ErrProjectNotFound = NewWebError(http.StatusNotFound, "Project not found") ErrDuplicateProjectName = NewWebError(http.StatusForbidden, "Duplicate project name") ErrDuplicateProjectUser = NewWebError(http.StatusForbidden, "Duplicate user to project") ErrProjectUniversalUser = NewWebError(http.StatusForbidden, "Cannot add universal user to project") // User ErrUserID = NewWebError(http.StatusBadRequest, "Bad user id") ErrUserNotFound = NewWebError(http.StatusNotFound, "User not found") ErrDuplicateUserName = NewWebError(http.StatusForbidden, "Duplicate user name") // Rule ErrRuleID = NewWebError(http.StatusBadRequest, "Bad rule id") ErrDuplicateRulePattern = NewWebError(http.StatusForbidden, "Duplicate rule pattern") ErrRuleNotFound = NewWebError(http.StatusNotFound, "Rule not found") ErrRuleNoCondition = NewWebError(http.StatusBadRequest, "No condition specified") ErrRuleCommentNotValid = NewWebError(http.StatusBadRequest, "Rule comment is not valid, empty?") ErrRuleUpdateFailed = NewWebError(http.StatusBadRequest, "Failed to update rule") // Metric ErrMetricNotFound = NewWebError(http.StatusNotFound, "Metric not found") )
Errors
Functions ¶
func RequestBind ¶
RequestBind binds request data into value.
func ResponseError ¶
func ResponseError(w http.ResponseWriter, err *WebError) error
ResponseError writes WebError as response.
func ResponseJSON ¶
func ResponseJSON(w http.ResponseWriter, code int, v interface{}) error
ResponseJSON encodes value to json and write as response.
func ResponseJSONOK ¶
func ResponseJSONOK(w http.ResponseWriter, v interface{}) error
ResponseJSONOK writes ok response.
Types ¶
type WebError ¶
type WebError struct {
// HTTP status code
Code int `json:"code"`
// Message
Msg string `json:"msg"`
}
WebError is errors for web operations.
func NewUnexceptedWebError ¶
NewUnexceptedWebError returns an unexcepted WebError.
func NewValidationWebError ¶ added in v0.0.7
NewValidationWebError creates a validation WebError from error.
func NewWebError ¶
NewWebError creates a WebError.