registry_apm.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package containers
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/coroot/coroot-node-agent/utils"
  6. "github.com/coroot/coroot-node-agent/utils/modelse"
  7. "github.com/prometheus/client_golang/prometheus"
  8. "github.com/sirupsen/logrus"
  9. "os"
  10. "path"
  11. )
  12. const (
  13. Namespace = "ns"
  14. PodName = "pod_name"
  15. Workload = "workload"
  16. ProcessName = "process_name"
  17. ContainerId = "container_id"
  18. )
  19. func setLabels(container_id, ns, workload, pod_name, process_name, pid string) prometheus.Labels {
  20. return map[string]string{
  21. ContainerId: container_id,
  22. Namespace: ns,
  23. Workload: workload,
  24. PodName: pod_name,
  25. ProcessName: process_name,
  26. "pid": pid,
  27. }
  28. }
  29. func setK8sTag(c *Container, tag map[string]string, pid uint32) {
  30. sPid := fmt.Sprintf("%d", pid)
  31. c.K8sContainer.ns = tag[Namespace]
  32. c.K8sContainer.podName = tag[PodName]
  33. c.K8sContainer.containerName = tag[ProcessName]
  34. c.K8sContainer.workload = tag[Workload]
  35. c.K8sContainer.pid = sPid
  36. }
  37. func snapAppInfo(runtimeApps map[uint32]modelse.AppStatusInfo) {
  38. appStr, _ := json.Marshal(runtimeApps)
  39. dumpPath := path.Join(utils.GetDefaultRuntimePath(), "memdump")
  40. err := os.MkdirAll(dumpPath, 0755)
  41. if err != nil {
  42. logrus.Error(err)
  43. }
  44. fileName := fmt.Sprintf("%s.snap", "app")
  45. metricsFileName := path.Join(dumpPath, fileName)
  46. err = os.WriteFile(metricsFileName, appStr, 0644)
  47. if err != nil {
  48. logrus.Error(err)
  49. }
  50. }