public CountersAutoDiscoverer(IObservable<LogEventArgs> observableEvents, Settings settings) { _observableEvents = observableEvents; _settings = settings; int cnt = _settings.Aggregators.Count; for (int i = 0; i < cnt; i++) { CounterAggregator counterAggregator = _settings.Aggregators[i]; if (!_knownCounters.Contains(counterAggregator.CounterCategory + "\t" + counterAggregator.CounterName)) _knownCounters.Add(counterAggregator.CounterCategory + "\t" + counterAggregator.CounterName); } }
static void Main(string[] args) { AsyncTcpServer srv = new AsyncTcpServer(new IPEndPoint(IPAddress.Any, 50001)); srv.Start(); MessageReceiver receiver = new MessageReceiver(srv); MovingWindowSequence seq = new MovingWindowSequence(1000*60, 1000*5*60); string mongoUrl = File.ReadAllText("settings\\mongoConnection"); //CountersDatabase.InitConnection(mongoUrl); var observableEvents = receiver.ObservableEvents.Buffer(seq.BufferOpenings, seq.ClosingWindowSequenceSelector).Publish(); //observableEvents.Connect(); Settings settings = new Settings(); settings.ObservableEvents = observableEvents; settings.ReadAggregators(); CountersAutoDiscoverer countersAutoDiscoverer = new CountersAutoDiscoverer(receiver.ObservableEvents, settings); countersAutoDiscoverer.StartDiscovery(); CounterDumper counterDumper = new CounterDumper(receiver.ObservableEvents); CounterForwarder counterForwarder = new CounterForwarder(receiver.ObservableEvents); DeadCountersDetector deadCountersDetector = new DeadCountersDetector(receiver.ObservableEvents, settings); observableEvents.Subscribe(l => Console.WriteLine("Total events: " + l.Count)); ConsoleKeyInfo keyInfo; while ((keyInfo = Console.ReadKey()).Key !=ConsoleKey.Enter) { if (keyInfo.Key == ConsoleKey.Add) { seq.IncreaseInterval(1000); Console.WriteLine("Interval is {0} ms now", seq.MoveEvery); } if (keyInfo.Key == ConsoleKey.Subtract) { seq.DecreaseInterval(1000); Console.WriteLine("Interval is {0} ms now", seq.MoveEvery); } if (keyInfo.Key == ConsoleKey.R) { settings.ReadAggregators(); Console.WriteLine("Aggregators were updated"); } if (keyInfo.Key == ConsoleKey.F) { if (counterForwarder.IsForwarding) { counterForwarder.StopForwarding(); Console.WriteLine("Forwarding stopped"); } else { counterForwarder.StartForwarding(); Console.WriteLine("Forwarding started"); } } if (keyInfo.Key == ConsoleKey.D) { if (counterDumper.IsDumping) { counterDumper.StopDumping(); Console.WriteLine("Counter Dumping Stopped"); } else { counterDumper.StartDumping(); Console.WriteLine("Counter Dumping Started"); } } if (keyInfo.Key == ConsoleKey.A) { File.WriteAllText("deadCounters",deadCountersDetector.GetCounterFreshnessTimeStats()); Console.WriteLine("Stats have been written to file deadCounters"); } } }
public DeadCountersDetector(IObservable<LogEventArgs> observableEvents, Settings settings) { _observableEvents = observableEvents; _settings = settings; _observableEvents.Subscribe(UpdateCounterFreshnessTime); }