Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "log"
- "os"
- "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/opencensusexporter"
- "github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension"
- "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/hostmetricsreceiver"
- flag "github.com/spf13/pflag"
- "go.opentelemetry.io/collector/component"
- "go.opentelemetry.io/collector/exporter/loggingexporter"
- "go.opentelemetry.io/collector/service"
- _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
- )
- const (
- buildLabel = "not_set" // Will be overwritten by the build tag.
- logProfileFlagName = "log-profile"
- )
- func main() {
- fs := parseFlags()
- if lp := fs.Lookup(logProfileFlagName); lp != nil && lp.Value.String() == "dev" {
- log.SetFlags(log.Llongfile)
- }
- handleErr := func(err error) {
- if err != nil {
- log.Fatalf("Failed to run the service: %v", err)
- }
- }
- extensions, err := component.MakeExtensionFactoryMap(
- healthcheckextension.NewFactory(),
- )
- handleErr(err)
- receivers, err := component.MakeReceiverFactoryMap(
- hostmetricsreceiver.NewFactory(),
- )
- handleErr(err)
- exporters, err := component.MakeExporterFactoryMap(
- // For debugging purposes only
- loggingexporter.NewFactory(),
- opencensusexporter.NewFactory(),
- )
- handleErr(err)
- processors, err := component.MakeProcessorFactoryMap()
- handleErr(err)
- factories := component.Factories{
- Extensions: extensions,
- Receivers: receivers,
- Processors: processors,
- Exporters: exporters,
- }
- buildInfo := component.BuildInfo{
- Command: "otelsvc",
- Description: "SLM Metrics Agent",
- }
- cmd := service.NewCommand(service.CollectorSettings{
- Factories: factories,
- BuildInfo: buildInfo,
- })
- handleErr(err)
- err = cmd.Execute()
- handleErr(err)
- }
- // parseFlags adds additional flags to the flag set and parses them before OpenTelemetry service.
- // This allows metrics agent to perform additional actions based on these flags
- // without completely replacing flag processing.
- func parseFlags() *flag.FlagSet {
- fs := flag.NewFlagSet("root", flag.ExitOnError)
- fs.String(logProfileFlagName, "", "Duplicates log-profile flag for early parsing")
- fs.ParseErrorsWhitelist.UnknownFlags = true
- fs.Parse(os.Args)
- return fs
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement