private IEnumerable <NetstatEntry> GetNetstatEntriesForWorker(int workerIndex) { ICollection <NetstatEntry> netstatEntries = new List <NetstatEntry>(); var netstatQuery = MongoQueryHelper.GetNetstatForWorker(netstatCollection, workerIndex); BsonDocument netstatDocument = netstatCollection.Find(netstatQuery).FirstOrDefault(); if (netstatDocument == null) { Log.InfoFormat("No netstat data available for worker {0}.", workerIndex); return(netstatEntries); } BsonArray netstatEntryArray = netstatDocument["entries"].AsBsonArray; DateTime? fileLastModified = BsonDocumentHelper.GetNullableDateTime("last_modified_at", netstatDocument); if (netstatEntryArray.Count > 0) { foreach (BsonValue netstatEntry in netstatEntryArray) { IEnumerable <BsonValue> transportReservations = GetTransportReservationDocuments(netstatEntry.AsBsonDocument); foreach (var transportReservation in transportReservations) { var entry = new NetstatEntry(logsetHash, workerIndex, netstatEntry.AsBsonDocument, transportReservation.AsBsonDocument, fileLastModified); netstatEntries.Add(entry); } } } return(netstatEntries); }
public override JObject ParseLogDocument(TextReader reader) { IList <NetstatEntry> entries = new List <NetstatEntry>(); NetstatEntry entry = new NetstatEntry(); string line; int lineCounter = 0; while ((line = ReadLine(reader)) != null) { lineCounter++; // Ignore headers & empty lines. if (!IsNetstatContent(line)) { continue; } IList <string> tokens = line.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToList(); if (tokens.Count == 1) { if (tokens[0].StartsWith("[") && tokens[0].EndsWith("]")) { entry.Process = tokens[0].Trim('[', ']'); entry.Line = lineCounter; entries.Add(entry); entry = new NetstatEntry(); } else { entry.Component = tokens[0]; } } else if (tokens.Count == 3 || tokens.Count == 4) { var portReservation = new PortReservation { Protocol = tokens[0], LocalAddress = ExtractHostname(tokens[1]), LocalPort = ExtractPort(tokens[1]), ForeignAddress = ExtractHostname(tokens[2]), ForeignPort = ExtractPort(tokens[2]) }; if (tokens.Count == 4) { portReservation.TcpState = tokens[3]; } entry.TransportReservations.Add(portReservation); } } // Roll up entries into JObject JObject netstatJson = CreateJObject(entries); return(InsertMetadata(netstatJson)); }
bool Filter(NetstatEntry entry) { if (!Settings.ShowListening && entry.State == TcpState.Listen) { return(false); } if (!Settings.ShowLocal) { if (IsLocalHost(entry.LocalEndpoint.Address) && IsLocalHost(entry.RemoteEndpoint.Address)) { return(false); } } if (Settings.UsePortFilter && entry.RemoteEndpoint.Port != Settings.PortFilter) { return(false); } return(true); }
bool Filter(NetstatEntry entry) { if (!Settings.ShowListening && entry.State == TcpState.Listen) return false; if (!Settings.ShowLocal) { if (IsLocalHost (entry.LocalEndpoint.Address) && IsLocalHost (entry.RemoteEndpoint.Address)) return false; } if (Settings.UsePortFilter && entry.RemoteEndpoint.Port != Settings.PortFilter) return false; return true; }