common_ini.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package config
  2. import (
  3. "github.com/coroot/coroot-node-agent/flags"
  4. klog "github.com/sirupsen/logrus"
  5. "gopkg.in/ini.v1"
  6. )
  7. // loadConfigFromCommonIni 从 common.ini 加载 ConfigServer 和 DataServer
  8. // 注意:RunInOmniagent 是启动时确定的标志,不支持热更新
  9. // 只有在值真正改变时才会更新 ProxyClient
  10. func loadConfigFromCommonIni() {
  11. // RunInOmniagent 在启动时已经确定,这里直接使用其值
  12. if !*flags.RunInOmniagent || *flags.CommonIni == "" {
  13. return
  14. }
  15. iniData, err := ini.Load(*flags.CommonIni)
  16. if err != nil {
  17. klog.Debugf("Failed to load common.ini: %v", err)
  18. return
  19. }
  20. if iniData != nil {
  21. configServer := iniData.Section("common").Key("config_server").String()
  22. dataServer := iniData.Section("common").Key("data_server").String()
  23. // 检查 config_server 是否改变
  24. if configServer != "" {
  25. oldConfigServer := *flags.ConfigServer
  26. if configServer != oldConfigServer {
  27. *flags.ConfigServer = configServer
  28. klog.Infof("config_server changed in common.ini: %s -> %s", oldConfigServer, configServer)
  29. // 更新 ProxyClient 的 endpoints(只有在值改变时才更新)
  30. updateProxyClientEndpoints(configServer)
  31. } else {
  32. klog.Debugf("config_server in common.ini unchanged: %s", configServer)
  33. }
  34. }
  35. // 检查 data_server 是否改变
  36. if dataServer != "" {
  37. oldDataServer := *flags.DataServer
  38. if dataServer != oldDataServer {
  39. *flags.DataServer = dataServer
  40. klog.Infof("data_server changed in common.ini: %s -> %s", oldDataServer, dataServer)
  41. } else {
  42. klog.Debugf("data_server in common.ini unchanged: %s", dataServer)
  43. }
  44. }
  45. }
  46. }