grafana_api.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package utils
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. )
  6. const (
  7. APIDASHBOARD = "%s/api/dashboards/db" //创建grafana-dasbboard
  8. )
  9. type GrafanaViewer struct {
  10. Url string `json:"url"`
  11. Method string `json:"method"`
  12. Token string `json:"token"`
  13. }
  14. type GrDashBoard struct {
  15. ID int `json:"id"`
  16. UID string `json:"uid"`
  17. Title string `json:"title"`
  18. Tags []string `json:"tags"`
  19. TimeZone string `json:"timezone"`
  20. SchemaVersion int `json:"schemaVersion"`
  21. Refresh string `json:"refresh"`
  22. //
  23. // other response
  24. Slug string `json:"slug"`
  25. Status string `json:"status"`
  26. Url string `json:"url"`
  27. Version int `json:"version"`
  28. }
  29. type GrDashBoardReq struct {
  30. Dashboard *GrDashBoard `json:"dashboard"`
  31. FolderUid string `json:"folderUid"`
  32. Message string `json:"message"`
  33. Overwrite bool `json:"overwrote"`
  34. }
  35. func (g *GrafanaViewer) CreateDashBoard(gdb *GrDashBoardReq, res *GrDashBoard) error {
  36. params, _ := json.Marshal(gdb)
  37. header := map[string]string{"Authorization": fmt.Sprintf("Bearer %s", g.Token)}
  38. resp, err := Post(fmt.Sprintf(APIDASHBOARD, g.Url), params, header)
  39. if err != nil {
  40. fmt.Sprintln("post error: ", err.Error())
  41. return err
  42. }
  43. if err := json.Unmarshal(resp, res); err != nil {
  44. fmt.Sprintln("unmarshal error: ", err.Error())
  45. return err
  46. }
  47. return nil
  48. }