func (s *httpServer) getProducers(topicName string) []string { var producers []string if len(s.ctx.nsqadmin.opts.NSQLookupdHTTPAddresses) != 0 { producers, _ = lookupd.GetLookupdTopicProducers(topicName, s.ctx.nsqadmin.opts.NSQLookupdHTTPAddresses) } else { producers, _ = lookupd.GetNSQDTopicProducers(topicName, s.ctx.nsqadmin.opts.NSQDHTTPAddresses) } return producers }
func statLoop(interval time.Duration, topic string, channel string, nsqdTCPAddrs []string, lookupdHTTPAddrs []string) { var o *lookupd.ChannelStats for i := 0; !countNum.isSet || countNum.value >= i; i++ { var producers []string var err error log.SetOutput(ioutil.Discard) if len(lookupdHTTPAddrs) != 0 { producers, err = lookupd.GetLookupdTopicProducers(topic, lookupdHTTPAddrs) } else { producers, err = lookupd.GetNSQDTopicProducers(topic, nsqdHTTPAddrs) } log.SetOutput(os.Stdout) if err != nil { log.Fatalf("ERROR: failed to get topic producers - %s", err) } log.SetOutput(ioutil.Discard) _, allChannelStats, err := lookupd.GetNSQDStats(producers, topic) log.SetOutput(os.Stdout) if err != nil { log.Fatalf("ERROR: failed to get nsqd stats - %s", err) } c, ok := allChannelStats[channel] if !ok { log.Fatalf("ERROR: failed to find channel(%s) in stats metadata for topic(%s)", channel, topic) } if i%25 == 0 { fmt.Printf("%s+%s+%s\n", "------rate------", "----------------depth----------------", "--------------metadata---------------") fmt.Printf("%7s %7s | %7s %7s %7s %5s %5s | %7s %7s %12s %7s\n", "ingress", "egress", "total", "mem", "disk", "inflt", "def", "req", "t-o", "msgs", "clients") } if o == nil { o = c time.Sleep(interval) continue } // TODO: paused fmt.Printf("%7d %7d | %7d %7d %7d %5d %5d | %7d %7d %12d %7d\n", int64(float64(c.MessageCount-o.MessageCount)/interval.Seconds()), int64(float64(c.MessageCount-o.MessageCount-(c.Depth-o.Depth))/interval.Seconds()), c.Depth, c.MemoryDepth, c.BackendDepth, c.InFlightCount, c.DeferredCount, c.RequeueCount, c.TimeoutCount, c.MessageCount, c.ClientCount) o = c time.Sleep(interval) } os.Exit(0) }