コード例 #1
0
        public void Execute()
        {
            try
            {
                var qmsAddress = Settings.GetSetting($"{MonitorName}.QmsAddress", "(undefined)");
                DirectorySetting archivedLogsLocation;
                if (qmsAddress.Equals("(undefined)", StringComparison.InvariantCultureIgnoreCase))
                {
                    qmsAddress = $"http://{(Dns.GetHostEntry(Dns.GetHostName()).HostName).ToLower()}:4799/QMS/Service";
                }

                string  installationId;
                License licence = null;
                using (var qmsApiService = new QMS_API.AgentsQmsApiService(qmsAddress))
                {
                    if (!qmsApiService.TestConnection())
                    {
                        Log.To.Main.Add($"Could not connect to QMS API {qmsAddress} in {MonitorName}");
                        return;
                    }
                    List <ServiceInfo> qvsServices = qmsApiService.GetServices(ServiceTypes.QlikViewServer);
                    QVSSettings        qvsSettings = qmsApiService.GetQvsSettings(qvsServices[0].ID, QVSSettingsScope.Logging);

                    var folder = qvsSettings.Logging.Folder;
                    if (!Directory.Exists(folder))
                    {
                        Log.To.Main.Add($"The folder does not exist or we don't have access to the folder:'{folder}' will not read logs.");
                        return;
                    }
                    archivedLogsLocation = new DirectorySetting(folder);
                    var services  = qmsApiService.GetServices(ServiceTypes.QlikViewServer | ServiceTypes.QlikViewDistributionService);
                    var qvServers = services.Where(p => p.Type == ServiceTypes.QlikViewServer).ToList();
                    installationId = qvServers.OrderBy(p => p.ID).First().ID.ToString();

                    qvServers.ForEach(p =>
                    {
                        licence = qmsApiService.GetLicense(p.Type == ServiceTypes.QlikViewServer ? LicenseType.QlikViewServer : LicenseType.Publisher, p.ID);
                    });
                }

                var logMinerData = new FileMinerDto();
                var data         = new StatisticsDto {
                    LogFileMinerData = logMinerData, CollectionDateUtc = logMinerData.CollectionDateUtc
                };
                var settings = new LogFileDirectorSettings
                {
                    StartDateForLogs = DateTime.Now.AddDays(-2).Date,
                    StopDateForLogs  = DateTime.Now.AddDays(-1).Date.AddMilliseconds(-1),
                };

                //settings.StartDateForLogs = DateTime.Parse("2019-04-30 00:00:00").AddDays(FAKERUNCOUNT);
                //settings.StopDateForLogs = DateTime.Parse("2019-04-30 23:59:59").AddDays(FAKERUNCOUNT);
                //archivedLogsLocation = new DirectorySetting(@"C:\ProgramData\QlikTech\QlikViewServer");
                var logFileDirector = new QvLogDirector();
                data.InstallationId  = $"{licence?.Serial ?? "(unknown)"}_{installationId} ";
                data.QlikViewLicence = _licenceHelper.AnalyzeLicense(licence);
                data.LogFileMinerData.LicenseSerialNo = licence?.Serial ?? "(unknown qv)";
                Log.To.Main.Add($"Starting log director on {archivedLogsLocation.Path}");
                logFileDirector.LoadAndRead(archivedLogsLocation, settings, logMinerData);
                Notify($"{MonitorName} has analyzed the following system", new List <string> {
                    JsonConvert.SerializeObject(data, Formatting.Indented)
                }, "-1");
                FAKERUNCOUNT++;
            }
            catch (Exception ex)
            {
                Log.To.Main.AddException($"Failed executing {MonitorName}", ex);
            }
        }
コード例 #2
0
        public void Execute()
        {
            try
            {
                var data = new StatisticsDto();
                var cals = new List <QvCalAgentDto>();

                var qmsAddress = Settings.GetSetting($"{MonitorName}.QmsAddress", "(undefined)");
                if (qmsAddress.Equals("(undefined)", StringComparison.InvariantCultureIgnoreCase))
                {
                    qmsAddress = $"http://{(Dns.GetHostEntry(Dns.GetHostName()).HostName).ToLower()}:4799/QMS/Service";
                }

                WmiSystemInfoDto wmiData = new WmiSystemInfoDto();
                var exceptionList        = new List <Exception>();
                try
                {
                    wmiData = new WmiSystemInfo().GetValuesFromWin32Os();
                }
                catch (Exception e)
                {
                    data.Exceptions.Add(e);
                }

                using (var qmsApiService = new QMS_API.AgentsQmsApiService(qmsAddress))
                {
                    if (!qmsApiService.TestConnection())
                    {
                        Log.To.Main.Add($"Could not connect to QMS API ({qmsAddress})!");
                        return;
                    }

                    var services       = qmsApiService.GetServices(ServiceTypes.QlikViewServer | ServiceTypes.QlikViewDistributionService);
                    var qvServers      = services.Where(p => p.Type == ServiceTypes.QlikViewServer).ToList();
                    var installationId = qvServers.OrderBy(p => p.ID).First().ID.ToString();
                    qvServers.ForEach(p =>
                    {
                        if (p.Type == ServiceTypes.QlikViewServer)
                        {
                            var calConfigurations = new[]
                            {
                                qmsApiService.GetCalConfiguration(p.ID, CALConfigurationScope.DocumentCALs),
                                qmsApiService.GetCalConfiguration(p.ID, CALConfigurationScope.NamedCALs),
                                qmsApiService.GetCalConfiguration(p.ID, CALConfigurationScope.SessionCALs),
                                qmsApiService.GetCalConfiguration(p.ID, CALConfigurationScope.UsageCALs)
                            };
                            cals.Add(_licenceHelper.ComputeCals(p, calConfigurations));
                        }

                        var license          = qmsApiService.GetLicense(p.Type == ServiceTypes.QlikViewServer ? LicenseType.QlikViewServer : LicenseType.Publisher, p.ID);
                        data.InstallationId  = $"{license?.Serial ?? "(unknown)"}_{installationId} ";
                        data.WmiSystemInfo   = wmiData;
                        data.QlikViewLicence = _licenceHelper.AnalyzeLicense(license);
                        data.QlikViewCals    = cals;
                        data.Exceptions      = exceptionList;

                        Notify($"{MonitorName} has analyzed the following system", new List <string> {
                            JsonConvert.SerializeObject(data, Formatting.Indented)
                        }, "-1");
                    });
                }
            }
            catch (Exception ex)
            {
                Log.To.Main.AddException($"Failed executing {MonitorName}", ex);
            }
        }