Advertisement
Guest User

Untitled

a guest
Jun 28th, 2022
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "log"
  5. "os"
  6.  
  7. "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opencensusexporter"
  8. "github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension"
  9. "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver"
  10. flag "github.com/spf13/pflag"
  11. "go.opentelemetry.io/collector/component"
  12. "go.opentelemetry.io/collector/exporter/loggingexporter"
  13. "go.opentelemetry.io/collector/service"
  14. _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
  15. )
  16.  
  17. const (
  18. buildLabel = "not_set" // Will be overwritten by the build tag.
  19. logProfileFlagName = "log-profile"
  20. )
  21.  
  22. func main() {
  23. fs := parseFlags()
  24. if lp := fs.Lookup(logProfileFlagName); lp != nil && lp.Value.String() == "dev" {
  25. log.SetFlags(log.Llongfile)
  26. }
  27.  
  28. handleErr := func(err error) {
  29. if err != nil {
  30. log.Fatalf("Failed to run the service: %v", err)
  31. }
  32. }
  33.  
  34. extensions, err := component.MakeExtensionFactoryMap(
  35. healthcheckextension.NewFactory(),
  36. )
  37. handleErr(err)
  38.  
  39. receivers, err := component.MakeReceiverFactoryMap(
  40. hostmetricsreceiver.NewFactory(),
  41. )
  42. handleErr(err)
  43.  
  44. exporters, err := component.MakeExporterFactoryMap(
  45. // For debugging purposes only
  46. loggingexporter.NewFactory(),
  47. opencensusexporter.NewFactory(),
  48. )
  49. handleErr(err)
  50.  
  51. processors, err := component.MakeProcessorFactoryMap()
  52. handleErr(err)
  53.  
  54. factories := component.Factories{
  55. Extensions: extensions,
  56. Receivers: receivers,
  57. Processors: processors,
  58. Exporters: exporters,
  59. }
  60.  
  61. buildInfo := component.BuildInfo{
  62. Command: "otelsvc",
  63. Description: "SLM Metrics Agent",
  64. }
  65.  
  66. cmd := service.NewCommand(service.CollectorSettings{
  67. Factories: factories,
  68. BuildInfo: buildInfo,
  69. })
  70. handleErr(err)
  71.  
  72. err = cmd.Execute()
  73. handleErr(err)
  74. }
  75.  
  76. // parseFlags adds additional flags to the flag set and parses them before OpenTelemetry service.
  77. // This allows metrics agent to perform additional actions based on these flags
  78. // without completely replacing flag processing.
  79. func parseFlags() *flag.FlagSet {
  80. fs := flag.NewFlagSet("root", flag.ExitOnError)
  81. fs.String(logProfileFlagName, "", "Duplicates log-profile flag for early parsing")
  82. fs.ParseErrorsWhitelist.UnknownFlags = true
  83. fs.Parse(os.Args)
  84. return fs
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement