Beispiel #1
0
        private bool ProcessEvents <T>(FilterDefinition <T> filter) where T : BaseHyperEvent, new()
        {
            var collection = MongoDatabase.GetCollection <T>(ParserConstants.HyperCollectionName);

            using (var persister = ExtractFactory.CreateExtract <T>())
                using (var processor = new SimpleModelProcessor <T, T>(persister, Log))
                {
                    processor.Process(collection, new QueryDefinition <T>(filter), item => item, filter);
                    return(persister.ItemsPersisted > 0);
                }
        }
Beispiel #2
0
        public override IPluginResponse Execute()
        {
            var pluginResponse = CreatePluginResponse();

            IMongoCollection <BsonDocument> collection = MongoDatabase.GetCollection <BsonDocument>(ParserConstants.TabAdminCollectionName);

            Log.Info("Processing Tableau Server version data from tabadmin logs...");
            var versions = TabadminVersionProcessor.BuildVersionTimeline(collection).ToList();

            bool persistedData;

            using (var persister = ExtractFactory.CreateExtract <TableauServerVersion>())
                using (GetPersisterStatusWriter(persister, versions.Count))
                {
                    persister.Enqueue(versions);
                    persistedData = persister.ItemsPersisted > 0;
                }

            using (var persister = ExtractFactory.CreateExtract <TabadminError>())
                using (var processor = new SimpleModelProcessor <BsonDocument, TabadminError>(persister, Log))
                {
                    var filter = BuildTabadminErrorFilter();
                    processor.Process(collection, new QueryDefinition <BsonDocument>(filter), document => new TabadminError(document, versions), filter);

                    persistedData = persistedData || persister.ItemsPersisted > 0;
                }

            using (var persister = ExtractFactory.CreateExtract <TabadminAction>())
                using (var processor = new SimpleModelProcessor <BsonDocument, TabadminAction>(persister, Log))
                {
                    var filter = BuildTabadminActionFilter();
                    processor.Process(collection, new QueryDefinition <BsonDocument>(filter), document => new TabadminAction(document, versions), filter);

                    persistedData = persistedData || persister.ItemsPersisted > 0;
                }

            if (!persistedData)
            {
                Log.Info("Failed to persist any data from Tabadmin logs!");
                pluginResponse.GeneratedNoData = true;
            }

            return(pluginResponse);
        }
Beispiel #3
0
        private bool ProcessDocuments <T>(IDictionary <string, ISet <string> > collectionWorkerMap, Func <string, IMongoCollection <BsonDocument>, IEnumerable <T> > selector) where T : new()
        {
            Log.InfoFormat("Processing {0} events..", typeof(T).Name);

            using (var persister = ExtractFactory.CreateExtract <T>())
                using (GetPersisterStatusWriter(persister))
                {
                    foreach (var collectionWorkerMapping in collectionWorkerMap)
                    {
                        var collection = MongoDatabase.GetCollection <BsonDocument>(collectionWorkerMapping.Key);

                        foreach (var worker in collectionWorkerMapping.Value)
                        {
                            var records = selector(worker, collection);
                            persister.Enqueue(records);
                        }
                    }

                    return(persister.ItemsPersisted > 0);
                }
        }
Beispiel #4
0
        public override IPluginResponse Execute()
        {
            // The PluginResponse contains state about whether this plugin ran successfully, as well as any errors encountered.  Append any non-fatal errors to this.
            var pluginResponse = CreatePluginResponse();

            var collection = MongoDatabase.GetCollection <FlattenedArtEvent>(ParserConstants.VizqlServerCppCollectionName);
            var filter     = Builders <FlattenedArtEvent> .Filter.Where(line => line.ArtData != null);

            using (var persister = ExtractFactory.CreateExtract <FlattenedArtEvent>("Art.hyper"))
                using (var processor = new SimpleModelProcessor <FlattenedArtEvent, FlattenedArtEvent>(persister, Log))
                {
                    processor.Process(collection, new QueryDefinition <FlattenedArtEvent>(filter), item => item, filter);

                    if (persister.ItemsPersisted == 0)
                    {
                        Log.Info("Failed to persist any ART events!");
                        pluginResponse.GeneratedNoData = true;
                    }
                }

            return(pluginResponse);
        }
Beispiel #5
0
        public override IPluginResponse Execute()
        {
            var pluginResponse = CreatePluginResponse();

            IMongoCollection <HttpdRequest> collection = MongoDatabase.GetCollection <HttpdRequest>(ParserConstants.HttpdCollectionName);

            using (var persister = ExtractFactory.CreateExtract <HttpdRequest>("ApacheRequests.hyper"))
                using (var processor = new SimpleModelProcessor <HttpdRequest, HttpdRequest>(persister, Log))
                {
                    var apacheRequestFilter = BuildApacheRequestFilter(includeGatewayHealthCheckRequests);

                    processor.Process(collection, new QueryDefinition <HttpdRequest>(apacheRequestFilter), item => item, apacheRequestFilter);

                    if (persister.ItemsPersisted <= 0)
                    {
                        Log.Warn("Failed to persist any data from Apache logs!");
                        pluginResponse.GeneratedNoData = true;
                    }

                    return(pluginResponse);
                }
        }
Beispiel #6
0
        public override IPluginResponse Execute()
        {
            var pluginResponse = CreatePluginResponse();

            IMongoCollection <FilestoreEvent> collection = MongoDatabase.GetCollection <FilestoreEvent>(ParserConstants.FilestoreCollectionName);

            using (var persister = ExtractFactory.CreateExtract <FilestoreEvent>("FilestoreEvents.hyper"))
                using (var processor = new SimpleModelProcessor <FilestoreEvent, FilestoreEvent>(persister, Log))
                {
                    var filestoreEventFilter = Builders <FilestoreEvent> .Filter.Regex("file", new BsonRegularExpression("filestore.*"));

                    processor.Process(collection, new QueryDefinition <FilestoreEvent>(filestoreEventFilter), item => item, filestoreEventFilter);

                    if (persister.ItemsPersisted <= 0)
                    {
                        Log.Warn("Failed to persist any data from Filestore logs!");
                        pluginResponse.GeneratedNoData = true;
                    }

                    return(pluginResponse);
                }
        }
Beispiel #7
0
        protected bool PersistConfigData(ICollection <ConfigEntry> configEntries, ICollection <ConfigProcessInfo> workerDetails)
        {
            Log.InfoFormat($"Persisting configuration data for {configEntries.Count} config key entries and {workerDetails.Count} worker processes..");

            var persistedData = false;

            using (var extract = ExtractFactory.CreateExtract <ConfigEntry>("ConfigEntries.hyper"))
                using (GetPersisterStatusWriter(extract, configEntries.Count))
                {
                    extract.Enqueue(configEntries);
                    persistedData = persistedData || extract.ItemsPersisted > 0;
                }

            using (var extract = ExtractFactory.CreateExtract <ConfigProcessInfo>("ProcessTopology.hyper"))
                using (GetPersisterStatusWriter(extract, workerDetails.Count))
                {
                    extract.Enqueue(workerDetails);
                    persistedData = persistedData || extract.ItemsPersisted > 0;
                }

            return(persistedData);
        }
        private bool ProcessDocuments <T>(string collectionName, FilterDefinition <BsonDocument> query, Func <BsonDocument, T> transform) where T : new()
        {
            bool persistedData;

            Log.InfoFormat("Processing {0} events..", typeof(T).Name);

            using (var persister = ExtractFactory.CreateExtract <T>())
                using (GetPersisterStatusWriter(persister))
                {
                    var collection = MongoDatabase.GetCollection <BsonDocument>(collectionName);
                    var documents  = collection.Find(query).ToEnumerable();

                    foreach (var document in documents)
                    {
                        var instance = TransformDocument(document, transform);
                        persister.Enqueue(instance);
                    }

                    persistedData = persister.ItemsPersisted > 0;
                }

            Log.InfoFormat("Finished processing {0} events!", typeof(T).Name);
            return(persistedData);
        }
Beispiel #9
0
        public override IPluginResponse Execute()
        {
            IPluginResponse pluginResponse = CreatePluginResponse();

            var collection = MongoDatabase.GetCollection <NetstatDocument>(ParserConstants.NetstatCollectionName);

            using (var persister = ExtractFactory.CreateExtract <NetstatActiveConnection>("NetstatEntries.hyper"))
                using (GetPersisterStatusWriter(persister))
                {
                    foreach (var worker in NetstatQueries.GetDistinctWorkers(collection))
                    {
                        var activeConnectionsForWorker = GetActiveConnectionsForWorker(worker, collection);
                        persister.Enqueue(activeConnectionsForWorker);
                    }

                    if (persister.ItemsPersisted <= 0)
                    {
                        Log.Warn("Failed to persist any Netstat data!");
                        pluginResponse.GeneratedNoData = true;
                    }

                    return(pluginResponse);
                }
        }