Пример #1
0
 public void Configure(IWriterFactory writerFactory, IConfiguration pluginConfig, IProcessingNotificationsCollector processingNotificationsCollector, ILoggerFactory loggerFactory)
 {
     _processingNotificationsCollector = processingNotificationsCollector;
     _desktopWriter  = writerFactory.GetWriter <FlattenedArtEvent>(DesktopOutputInfo);
     _serverWriter   = writerFactory.GetWriter <FlattenedArtEvent>(ServerOutputInfo);
     _jsonSerializer = JsonSerializer.Create();
 }
Пример #2
0
        public void Configure(IWriterFactory writerFactory, IConfiguration pluginConfig, IProcessingNotificationsCollector processingNotificationsCollector, ILoggerFactory loggerFactory)
        {
            _logger = loggerFactory.CreateLogger <ReplayerPlugin>();
            _processingNotificationsCollector = processingNotificationsCollector;

            PopulateTimeZoneDictionary();
            CheckForMissingSystemTimeZones();

            // get the relevant vizqlserver events from config if specified
            _relevantVizqlServerEvents = pluginConfig?.GetConfigurationValueOrDefault(ReplayRelevantEventsKey, _relevantVizqlServerEvents.ToArray(), _logger)
                                         .ToHashSet();

            // get the relevant vizqlserver events from config if specified
            _skippableCommands = pluginConfig?.GetConfigurationValueOrDefault(ReplaySkippableCommandsKey, _skippableCommands.ToArray(), _logger)
                                 .ToHashSet();

            // get path of the Json file from config if specified
            _replayerOutputDirectory = pluginConfig?.GetConfigurationValueOrDefault(ReplayerOutputDirectoryKey, _replayerOutputDirectory, _logger);

            // get the file containing the time zones dictionary
            _timeZonesDictionaryFile = pluginConfig?.GetConfigurationValueOrDefault(ReplayerTimeZonesDictionaryFileKey, _timeZonesDictionaryFile, _logger);

            // get replay file name of the Json file from config if specified
            _jsonReplayFile = pluginConfig?.GetConfigurationValueOrDefault(ReplayFileNameKey, string.Format($"Playback{DateTime.Now:_dd_MM_-HH-mm-ss}.json"), _logger);
            if (string.IsNullOrEmpty(_jsonReplayFile))
            {
                _jsonReplayFile = string.Format($"Playback{DateTime.Now:_dd_MM_-HH-mm-ss}.json");
            }
        }
Пример #3
0
        private static void DriveTest()
        {
            var repositoryReader = IRepositoryReaderFactory.GetIRepositoryReader();
            var writer           = IWriterFactory.GetIWriter(repositoryReader);

            writer.Execute();
        }
Пример #4
0
        public IEnumerable <IPlugin> CreatePlugins(IWriterFactory writerFactory, IProcessingNotificationsCollector processingNotificationsCollector)
        {
            var pluginNamesToLoad = GetPluginNamesToLoad().ToList();

            _logger.LogInformation($"Loading plugins: {string.Join(';', pluginNamesToLoad)}");

            foreach (var pluginName in pluginNamesToLoad)
            {
                IPlugin plugin;
                try
                {
                    plugin = _pluginFactory.CreatePlugin(pluginName);
                }
                catch (Exception ex)
                {
                    _logger.LogError($"Exception occurred when creating plugin '{pluginName}'. See inner exception for details.", ex);
                    throw;
                }

                try
                {
                    var pluginConfiguration = _config.GetPluginConfiguration(plugin.Name);
                    plugin.Configure(writerFactory, pluginConfiguration, processingNotificationsCollector, _loggerFactory);
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex, $"Exception occurred when configuring plugin '{pluginName}'. See inner exception for details.");
                    throw;
                }
                _plugins.Add(plugin);
            }

            return(_plugins);
        }
Пример #5
0
        public Caller()
        {
            AbstractWritter abstractWritter = new WriterFactory();
            IWriterFactory  writer          = abstractWritter.GetWritter("A");

            writer.parse(new string[] { });
        }
Пример #6
0
 public SourceDump(SourceDumperOptions options, UsageDefinition definition, IEnvironment environment,
     IDebugger debugger, IConsole console, IVersion versionGetter,
     IWriterFactory factory)
     : base(options, definition, environment, debugger, console, versionGetter)
 {
     _factory = factory;
 }
 public BackgrounderEventPersister(IWriterFactory writerFactory)
 {
     _jobWriter                   = writerFactory.GetWriter <BackgrounderJob>(JobsDsi);
     _jobErrorWriter              = writerFactory.GetWriter <BackgrounderJobError>(JobErrorsDsi);
     _extractJobDetailWriter      = writerFactory.GetWriter <BackgrounderExtractJobDetail>(ExtractJobDetailsDsi);
     _subscriptionJobDetailWriter = writerFactory.GetWriter <BackgrounderSubscriptionJobDetail>(SubscriptionJobDetailsDsi);
 }
Пример #8
0
 public void Configure(IWriterFactory writerFactory, IConfiguration pluginConfig, IProcessingNotificationsCollector processingNotificationsCollector, ILoggerFactory loggerFactory)
 {
     _configEntriesWriter   = writerFactory.GetWriter <ConfigEntry>(ConfigEntriesOutputInfo);
     _processTopologyWriter = writerFactory.GetWriter <ConfigProcessInfo>(ProcessTopologyOutputInfo);
     _processedConfigFiles  = new List <ConfigFile>();
     _logger = loggerFactory.CreateLogger <ConfigPlugin>();
     _processingNotificationsCollector = processingNotificationsCollector;
 }
Пример #9
0
 public void Configure(IWriterFactory writerFactory, IConfiguration pluginConfig, IProcessingNotificationsCollector processingNotificationsCollector, ILoggerFactory loggerFactory)
 {
     _tabadminActionWriter       = writerFactory.GetWriter <TabadminAction>(TabadminActionOutputInfo);
     _tableauServerVersionWriter = writerFactory.GetWriter <TableauServerVersion>(TableauServerVersionOutputInfo);
     _tabadminErrorWriter        = writerFactory.GetWriter <TabadminError>(TabadminErrorOutputInfo);
     _versionsDict = new Dictionary <string, List <TableauServerVersion> >();
     _processingNotificationsCollector = processingNotificationsCollector;
 }
 public void Configure(IWriterFactory writerFactory, IConfiguration pluginConfig, IProcessingNotificationsCollector processingNotificationsCollector, ILoggerFactory loggerFactory)
 {
     _processingNotificationsCollector = processingNotificationsCollector;
     _tabadminControllerEventParser    = new TabadminControllerEventParser(
         new BuildTracker(processingNotificationsCollector),
         _processingNotificationsCollector);
     _writer = writerFactory.GetWriter <TabadminControllerEvent>(OutputInfo);
 }
 public VizqlDesktopEventProcessor(IWriterFactory writerFactory, int maxQueryLength)
 {
     _sessionsWriter          = writerFactory.GetWriter <VizqlDesktopSession>(SessionsDsi);
     _errorsWriter            = writerFactory.GetWriter <VizqlDesktopErrorEvent>(ErrorsDsi);
     _endQueryEventsWriter    = writerFactory.GetWriter <VizqlEndQueryEvent>(EndQueryEventsDsi);
     _performanceEventsWriter = writerFactory.GetWriter <VizqlPerformanceEvent>(PerformanceEventsDsi);
     _sessionTracker          = new SessionTracker();
     _maxQueryLength          = maxQueryLength;
 }
Пример #12
0
        public ResourceManagerEventsProcessor(IWriterFactory writerFactory, IProcessingNotificationsCollector processingNotificationsCollector)
        {
            _processingNotificationsCollector = processingNotificationsCollector;

            _actionsWriter       = writerFactory.GetWriter <ResourceManagerAction>(ActionsDataSetInfo);
            _cpuSamplesWriter    = writerFactory.GetWriter <ResourceManagerCpuSample>(CpuSamplesDataSetInfo);
            _memorySamplesWriter = writerFactory.GetWriter <ResourceManagerMemorySample>(MemorySamplesDataSetInfo);
            _thresholdsWriters   = writerFactory.GetWriter <ResourceManagerThreshold>(ThresholdsDataSetInfo);
            _cpuUsageWriter      = writerFactory.GetWriter <ResourceManagerHighCpuUsage>(HighCpuUsageDataSetInfo);
        }
Пример #13
0
        public void Configure(IWriterFactory writerFactory, IConfiguration pluginConfig, IProcessingNotificationsCollector processingNotificationsCollector, ILoggerFactory loggerFactory)
        {
            _errorWriter          = writerFactory.GetWriter <ClusterControllerError>(_errorDSI);
            _postgresActionWriter = writerFactory.GetWriter <ClusterControllerPostgresAction>(_postgresActionDSI);
            _diskIOSampleWriter   = writerFactory.GetWriter <ClusterControllerDiskIoSample>(_diskIOSampleDSI);
            _zkErrorWriter        = writerFactory.GetWriter <ZookeeperError>(_zkErrorDSI);
            _zkFsyncLatencyWriter = writerFactory.GetWriter <ZookeeperFsyncLatency>(_zkFsyncLatencyDSI);

            _processingNotificationsCollector = processingNotificationsCollector;
        }
Пример #14
0
        public async Task <RunSummary> Run(IWriterFactory customWriterFactory = null)
        {
            var startMetricsTask = _metricsModule.ReportStartMetrics(_config);
            var processLogTask   = ProcessLog(customWriterFactory);
            await Task.WhenAll(startMetricsTask, processLogTask);

            var runSummary = await processLogTask;
            await _metricsModule.ReportEndMetrics(runSummary);

            return(runSummary);
        }
Пример #15
0
        private static void DisplayOutputString(IWriterFactory writerFactory)
        {
            if (writerFactory == null)
            {
                throw new ArgumentNullException(nameof(writerFactory));
            }

            var writer = writerFactory.CreateWriter();

            writer.WriteValue();
        }
Пример #16
0
        public void Configure(IWriterFactory writerFactory, IConfiguration pluginConfig, IProcessingNotificationsCollector processingNotificationsCollector, ILoggerFactory loggerFactory)
        {
            _writer = writerFactory.GetWriter <ApacheEvent>(OutputInfo);
            var section       = pluginConfig?.GetSection("IncludeGatewayChecks");
            var sectionExists = section != null && section.Exists();

            if (!sectionExists)
            {
                var logger = loggerFactory.CreateLogger <ApachePlugin>();
                logger.LogWarning("{pluginName} config was missing from Plugins Configuration. Using default value of {defaultValue} for {missingParameterName} parameter", nameof(ApachePlugin), DefaultIncludeGatewayHealthChecksValue, "IncludeGatewayChecks");
            }

            _includeGatewayHealthChecks       = sectionExists ? section.Get <bool>() : DefaultIncludeGatewayHealthChecksValue;
            _processingNotificationsCollector = processingNotificationsCollector;
        }
Пример #17
0
 public TableauLogsProcessor(
     LogSharkConfiguration config,
     IPluginManager pluginManager,
     IWriterFactory writerFactory,
     ILogTypeDetails logTypeDetails,
     IProcessingNotificationsCollector processingNotificationsCollector,
     ILoggerFactory loggerFactory)
 {
     _config         = config;
     _loggerFactory  = loggerFactory;
     _logger         = _loggerFactory.CreateLogger <TableauLogsProcessor>();
     _logTypeDetails = logTypeDetails;
     _pluginManager  = pluginManager;
     _processingNotificationsCollector = processingNotificationsCollector;
     _writerFactory = writerFactory;
 }
Пример #18
0
        public override IWriterFactory GetWritter(string type)
        {
            IWriterFactory abstractWritter = null;

            switch (type)
            {
            case "A":
                abstractWritter = new WritterA();
                break;

            case "B":
                abstractWritter = new WritterB();
                break;
            }
            return(abstractWritter);
        }
Пример #19
0
        public void Configure(IWriterFactory writerFactory, IConfiguration pluginConfig, IProcessingNotificationsCollector processingNotificationsCollector, ILoggerFactory loggerFactory)
        {
            var section              = pluginConfig?.GetSection("MaxQueryLength");
            var sectionExists        = section != null && section.Exists();
            var parsedMaxQueryLength = 0;
            var parsedSuccessfully   = sectionExists && int.TryParse(section.Value, out parsedMaxQueryLength);

            if (!parsedSuccessfully)
            {
                var logger = loggerFactory.CreateLogger <VizqlDesktopPlugin>();
                logger.LogWarning("{pluginName} config was missing from Plugins Configuration or contained incorrect value. Using default value of {defaultValue} for {missingParameterName} parameter", nameof(VizqlDesktopPlugin), DefaultMaxQueryLength, "MaxQueryLength");
            }
            var maxQueryLength = parsedSuccessfully ? parsedMaxQueryLength : DefaultMaxQueryLength;

            _eventProcessor = new VizqlDesktopEventProcessor(writerFactory, maxQueryLength);
            _processingNotificationsCollector = processingNotificationsCollector;
        }
Пример #20
0
 public void Configure(IWriterFactory writerFactory, IConfiguration pluginConfig, IProcessingNotificationsCollector processingNotificationsCollector, ILoggerFactory loggerFactory)
 {
     _eventWriter  = writerFactory.GetWriter <ServerTelemetryEvent>(EventsDsi);
     _metricWriter = writerFactory.GetWriter <ServerTelemetryMetric>(MetricsDsi);
     _processingNotificationsCollector = processingNotificationsCollector;
 }
Пример #21
0
        private async Task <RunSummary> ProcessLog(IWriterFactory customWriterFactory)
        {
            _logger.LogInformation("Starting to process Log set {logSetPath}", _config.LogSetLocation);
            var totalElapsedTimer = Stopwatch.StartNew();

            if (_config.OutputDirMaxResultsToKeep != null)
            {
                OutputDirTrimmer.TrimOldResults(_config.OutputDir, _config.OutputDirMaxResultsToKeep.Value, _loggerFactory.CreateLogger(nameof(OutputDirTrimmer)));
            }

            var runId = GetRunId(_config.ForceRunId);

            var fileCheckResult = TableauLogsExtractor.FileCanBeOpened(_config.LogSetLocation, _logger);

            if (!fileCheckResult.FileCanBeOpened)
            {
                var error = $"Path `{_config.LogSetLocation}` does not exist or LogShark cannot open it. Make sure `LogSetLocation` parameter points to the valid zip files with Tableau logs or unzipped copy of it. Exception message was: {fileCheckResult.ErrorMessage ?? "(null)"}";
                _logger.LogInformation(error);
                return(RunSummary.FailedRunSummary(runId, error, ExitReason.BadLogSet, _processingNotificationsCollector, totalElapsedTimer.Elapsed));
            }

            IWriterFactory writerFactory;

            try
            {
                writerFactory = customWriterFactory ?? GetWriterFactory(runId);
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("Context: 0x86a93465"))
                {
                    _logger.LogError("Microsoft Visual C++ Runtime required to run LogShark. Please download and install it from 'https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads' and rerun application");
                }

                var error = $"Exception occurred while initializing writer factory for writer '{_config.RequestedWriter ?? "null"}'. Exception message: {ex.Message}";
                _logger.LogError(ex, error);

                return(RunSummary.FailedRunSummary(runId, error, ExitReason.UnclassifiedError, _processingNotificationsCollector, totalElapsedTimer.Elapsed));
            }

            using (_logger.BeginScope(runId))
                using (writerFactory)
                {
                    ProcessLogSetResult logSetProcessingResults;
                    using (var pluginManager = new PluginManager(_config, _loggerFactory))
                    {
                        var logTypeDetails    = new LogTypeDetails(_processingNotificationsCollector);
                        var tableauLogsReader = new TableauLogsProcessor(_config, pluginManager, writerFactory, logTypeDetails, _processingNotificationsCollector, _loggerFactory);
                        logSetProcessingResults = tableauLogsReader.ProcessLogSet();
                    }

                    if (logSetProcessingResults.IsSuccessful)
                    {
                        var pluginsReceivedAnyDataForLogs = string.Join(", ",
                                                                        logSetProcessingResults.PluginsReceivedAnyData.OrderBy(name => name));
                        _logger.LogInformation("Plugins that had any data sent to them: {pluginsReceivedAnyData}", pluginsReceivedAnyDataForLogs);
                    }
                    else
                    {
                        _logger.LogDebug($"Log processing failed with error: {logSetProcessingResults.ErrorMessage}");
                        return(RunSummary.FailedRunSummary(runId, logSetProcessingResults.ErrorMessage, logSetProcessingResults.ExitReason, _processingNotificationsCollector, totalElapsedTimer.Elapsed, logSetProcessingResults));
                    }

                    var workbookGenerator = writerFactory.GetWorkbookGenerator();
                    var generatorResults  = workbookGenerator.CompleteWorkbooksWithResults(logSetProcessingResults.PluginsExecutionResults.GetWritersStatistics());

                    if (!GeneratedAnyWorkbooks(generatorResults.CompletedWorkbooks) && workbookGenerator.GeneratesWorkbooks)
                    {
                        const string errorMessage = "No workbooks were generated successfully.";
                        _logger.LogError(errorMessage);
                        return(RunSummary.FailedRunSummary(runId, errorMessage, ExitReason.UnclassifiedError, _processingNotificationsCollector, totalElapsedTimer.Elapsed, logSetProcessingResults, generatorResults));
                    }

                    PublisherResults publisherResults = null;
                    if (_config.PublishWorkbooks)
                    {
                        var projectDescription = GetProjectDescription();
                        var workbookPublisher  = writerFactory.GetWorkbookPublisher(_publisherSettings);

                        publisherResults = await workbookPublisher.PublishWorkbooks(
                            runId,
                            projectDescription,
                            generatorResults.CompletedWorkbooks,
                            logSetProcessingResults.PluginsExecutionResults.GetSortedTagsFromAllPlugins());

                        if (!publisherResults.CreatedProjectSuccessfully)
                        {
                            var errorMessage = $"Workbook publisher failed to connect to the Tableau Server or create project for the results. Exception message: {publisherResults.ExceptionCreatingProject.Message}";
                            _logger.LogError(errorMessage);
                            return(RunSummary.FailedRunSummary(runId, errorMessage, ExitReason.UnclassifiedError, _processingNotificationsCollector, totalElapsedTimer.Elapsed, logSetProcessingResults, generatorResults, publisherResults));
                        }
                    }

                    _logger.LogInformation("Done processing {logSetPath}. Whole run took {fullRunElapsedTime}", _config.LogSetLocation, totalElapsedTimer.Elapsed);
                    return(RunSummary.SuccessfulRunSummary(runId, totalElapsedTimer.Elapsed, _processingNotificationsCollector, logSetProcessingResults, generatorResults, publisherResults));
                }
        }
Пример #22
0
 public void Configure(IWriterFactory writerFactory, IConfiguration pluginConfig, IProcessingNotificationsCollector processingNotificationsCollector, ILoggerFactory loggerFactory)
 {
     _hyperErrorWriter = writerFactory.GetWriter <HyperError>(HyperErrorOutputInfo);
     _hyperQueryWriter = writerFactory.GetWriter <HyperEvent>(HyperQueryOutputInfo);
     _processingNotificationsCollector = processingNotificationsCollector;
 }
Пример #23
0
 public void Configure(IWriterFactory writerFactory, IConfiguration pluginConfig, IProcessingNotificationsCollector processingNotificationsCollector, ILoggerFactory loggerFactory)
 {
     _backgrounderEventPersister       = new BackgrounderEventPersister(writerFactory);
     _backgrounderEventParser          = new BackgrounderEventParser(_backgrounderEventPersister, processingNotificationsCollector);
     _processingNotificationsCollector = processingNotificationsCollector;
 }
Пример #24
0
 public CompressDataDispatcher(IReaderFactory readerFactory, IWriterFactory writerFactory, int readThreadsCount, int writeThreadsCount)
     : base(readerFactory, writerFactory, readThreadsCount, writeThreadsCount)
 {
 }
Пример #25
0
 public void Configure(IWriterFactory writerFactory, IConfiguration pluginConfig, IProcessingNotificationsCollector processingNotificationsCollector, ILoggerFactory loggerFactory)
 {
     _eventsProcessor = new ResourceManagerEventsProcessor(writerFactory, processingNotificationsCollector);
     _processingNotificationsCollector = processingNotificationsCollector;
 }
Пример #26
0
 public void Configure(IWriterFactory writerFactory, IConfiguration pluginConfig,
                       IProcessingNotificationsCollector processingNotificationsCollector, ILoggerFactory loggerFactory)
 {
     throw new NotImplementedException();
 }
Пример #27
0
 public void Configure(IWriterFactory writerFactory, IConfiguration pluginConfig, IProcessingNotificationsCollector processingNotificationsCollector, ILoggerFactory loggerFactory)
 {
     _writer = writerFactory.GetWriter <NetstatActiveConnection>(OutputInfo);
     _processingNotificationsCollector = processingNotificationsCollector;
 }
Пример #28
0
 public WriteManager(IWriterFactory factory)
 {
     _writer = factory.GetWriter();
 }
Пример #29
0
 public void Configure(IWriterFactory writerFactory, IConfiguration pluginConfig, IProcessingNotificationsCollector processingNotificationsCollector, ILoggerFactory loggerFactory)
 {
     _writer = writerFactory.GetWriter <PostgresEvent>(OutputInfo);
     _processingNotificationsCollector = processingNotificationsCollector;
 }
Пример #30
0
 public Worker(IClient client, IWriterFactory writerFactory)
 {
     _client        = client;
     _writerFactory = writerFactory;
 }
Пример #31
0
 public DecompressDataDispatcher(IReaderFactory readerFactory, IWriterFactory writerFactory, int readThreadsCount, int writeThreadsCount)
     : base(readerFactory, writerFactory, readThreadsCount, writeThreadsCount)
 {
     _locker = new object();
 }