// RemoveOrphanedDrains removes all drains created by applog_endpoint. func RemoveOrphanedDrains() { // Note that this is tricky to do when horizontally scalling // applog_endpoint. Could be solved easily by using nodeID or ip // addr in the drain name. logyardConfig := logyard.GetConfig() for name, _ := range logyardConfig.Drains { if strings.HasPrefix(name, DRAIN_PREFIX) { log.Infof("Removing orphaned drain %v", name) err := logyard.DeleteDrain(name) if err != nil { log.Warnf("Failed to delete drain %v -- %v", name, err) } } } }
func (cmd *delete) Run(args []string) (string, error) { if len(args) == 0 { return "", fmt.Errorf("need at least one positional argument") } for _, name := range args { err := logyard.DeleteDrain(name) // In case of an error, exit abrutly ignoring the rest of the // drains. if err != nil { return "", err } if !cmd.json { fmt.Printf("Deleted drain %s\n", name) } } if cmd.json { return "{}", nil } else { return "", nil } }
func (d *AppLogDrain) removeDrain() error { err := logyard.DeleteDrain(d.drainName) log.Infof("Removed drain %v", d.Id()) return err }
func (cmd *stream) Run(args []string) (string, error) { ipaddr, err := server.LocalIP() if err != nil { return "", err } rand.Seed(time.Now().UnixNano()) port := 7000 + rand.Intn(1000) addr := fmt.Sprintf("%s:%d", ipaddr, port) srv, err := lineserver.NewLineServer(CLI_STREAM_PROTO, addr) if err != nil { return "", err } go srv.Start() // Debug mode allows one to debug just the logyard related logs, // without any magical stripping. debugMode := false if len(args) == 1 && args[0] == "debug" { debugMode = true args = []string{ "systail.logyard", "systail.apptail", "systail.logyard_sieve", "systail.systail", } } name := fmt.Sprintf("tmp.logyard-cli.%s-%d", ipaddr, port) uri, err := drain.ConstructDrainURI( name, fmt.Sprintf("%s://%s", CLI_STREAM_PROTO, addr), args, map[string]string{"format": "raw"}) if err != nil { return "", err } if err = logyard.AddDrain(name, uri); err != nil { return "", err } log.Infof("Added drain %s", uri) deleteDrain := func() { if err := logyard.DeleteDrain(name); err != nil { log.Fatal(err) } fmt.Println("") log.Infof("Deleted drain %s", name) } defer deleteDrain() handleKeyboardInterrupt(func() { deleteDrain() os.Exit(1) }) cli_stream.Stream(srv.Ch, cli_stream.MessagePrinterOptions{ cmd.raw, cmd.raw || debugMode, cmd.time, cmd.nocolor, cmd.nodeid, cmd.json}) return "", nil }