netdata.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package config
  2. import (
  3. "encoding/json"
  4. "goseg/defaults"
  5. "goseg/structs"
  6. "os"
  7. "path/filepath"
  8. )
  9. // write a hardcoded default conf to disk
  10. func CreateDefaultNetdataConf() error {
  11. defaultConfig := defaults.NetdataConfig
  12. path := filepath.Join(BasePath, "settings", "netdata.json")
  13. if err := os.MkdirAll(filepath.Dir(path), os.ModePerm); err != nil {
  14. return err
  15. }
  16. file, err := os.Create(path)
  17. if err != nil {
  18. return err
  19. }
  20. defer file.Close()
  21. encoder := json.NewEncoder(file)
  22. encoder.SetIndent("", " ")
  23. if err := encoder.Encode(&defaultConfig); err != nil {
  24. return err
  25. }
  26. return nil
  27. }
  28. // write a conf to disk from version server info
  29. func UpdateNetdataConf() error {
  30. conf := Conf()
  31. releaseChannel := conf.UpdateBranch
  32. netdataRepo := VersionInfo.Netdata.Repo
  33. amdHash := VersionInfo.Netdata.Amd64Sha256
  34. armHash := VersionInfo.Netdata.Arm64Sha256
  35. newConfig := structs.NetdataConfig{
  36. NetdataName: "netdata",
  37. Repo: netdataRepo,
  38. NetdataVersion: releaseChannel,
  39. Amd64Sha256: amdHash,
  40. Arm64Sha256: armHash,
  41. CapAdd: []string{"SYS_PTRACE"},
  42. Port: 19999,
  43. Restart: "unless-stopped",
  44. SecurityOpt: "apparmor=unconfined",
  45. Volumes: []string{
  46. "netdataconfig:/etc/netdata",
  47. "netdatalib:/var/lib/netdata",
  48. "netdatacache:/var/cache/netdata",
  49. "/etc/passwd:/host/etc/passwd:ro",
  50. "/etc/group:/host/etc/group:ro",
  51. "/proc:/host/proc:ro",
  52. "/sys:/host/sys:ro",
  53. "/etc/os-release:/host/etc/os-release:ro",
  54. },
  55. }
  56. path := filepath.Join(BasePath, "settings", "netdata.json")
  57. if err := os.MkdirAll(filepath.Dir(path), os.ModePerm); err != nil {
  58. return err
  59. }
  60. file, err := os.Create(path)
  61. if err != nil {
  62. return err
  63. }
  64. defer file.Close()
  65. encoder := json.NewEncoder(file)
  66. encoder.SetIndent("", " ")
  67. if err := encoder.Encode(&newConfig); err != nil {
  68. return err
  69. }
  70. return nil
  71. }