private void Analyze(QMS_API.AgentsQmsApiService qmsAgentsQmsApi) { List <Guid> serviceIDs = qmsAgentsQmsApi.GetServices().Select(t => t.ID).ToList(); if (serviceIDs.Count == 0) { return; } //List<ServiceInfo> qvsServices = qmsAgentsQmsApi.GetServices(ServiceTypes.QlikViewServer); //var abb = qmsAgentsQmsApi.GetQdsSettings(serviceIDs[2], QDSSettingsScope.General); List <ServiceStatus> serviceStatuses = qmsAgentsQmsApi.GetServiceStatuses(serviceIDs); serviceStatuses.ForEach(svc => svc.MemberStatusDetails.ForEach(msd => { try { //var a = qmsAgentsQmsApi.GetQdsSettings(svc.ID, QDSSettingsScope.General); //if (!a.General.ShowAlerts) // return; var key = $"{svc.Name}_{msd.Host}_{msd.ID}"; _groupedNotifyer.AddIfMissing(key, $"{svc.Name} service down on {msd.Host}", ""); _groupedNotifyer.Analyze(key, (int)msd.Status); } catch (Exception ex) { Log.To.Main.AddException("Failed QmsMonitor analyze", ex); } })); _groupedNotifyer.AnalyzeRoundFinished(); }
public void CollectFromApi() { try { var collectionStatus = MessageLevels.Ok; _notify("Starting Collecting from API", MessageLevels.Animate, "ApiCollector"); using (var qmsApiService = new QMS_API.AgentsQmsApiService(_settings.QvSettings.QmsAddress)) { if (!qmsApiService.TestConnection()) { _logger.Add("Could not connect to QMS API (" + _settings.QvSettings.QmsAddress + ")!"); _notify("Failed Collecting from API", MessageLevels.Error, "ApiCollector"); return; } var services = qmsApiService.GetServices(); List <Guid> serviceIDs = services.Select(t => t.ID).ToList(); //List<ServiceInfo> qvsServices = qmsApiService.GetServices(ServiceTypes.QlikViewServer); _collectorHelper.WriteContentToFile(qmsApiService.GetServiceStatuses(serviceIDs), "QvServiceStatuses"); _collectorHelper.WriteContentToFile(services, "QvServices"); var qvServers = services.Where(p => p.Type == ServiceTypes.QlikViewServer | p.Type == ServiceTypes.QlikViewDistributionService).ToList(); _notify("Collecting Service info from API", MessageLevels.Animate, "ApiCollector"); qvServers.ForEach(p => { if (p.Type == ServiceTypes.QlikViewServer) { QVSSettings settings = null; try { settings = qmsApiService.GetQvsSettings(p.ID, QVSSettingsScope.All); _collectorHelper.WriteContentToFile(settings, $"QvsSettings_{p.Name}"); _collectorHelper.WriteContentToFile(qmsApiService.GetCalConfiguration(p.ID, CALConfigurationScope.All), $"QvsCals_{p.Name}"); _collectorHelper.WriteContentToFile(qmsApiService.GetUserDocuments(p.ID), $"QvsUserDocuments_{p.Name}"); _collectorHelper.WriteContentToFile(qmsApiService.GetQvsDocumentsAndUsers(p.ID, QueryTarget.Resource), $"QvsDocumentsAndUsers_{p.Name}"); } catch (Exception e) { _logger.Add($"Failed collecting API details from {p.Name ?? "UndefinedService"}", e); _notify($"Failed collecting details from {p.Name}", MessageLevels.Warning, "ApiCollector"); collectionStatus = MessageLevels.Warning; } _settings.QvSettings.QvLogLocations.Add(new QvLogLocation { Name = $"Qvs settings - {p.Name}", Type = QvLogLocationSource.QvsSetting, Path = settings?.Logging?.Folder ?? "Failed retrival" }); _settings.QvSettings.QvLogLocations.Add(new QvLogLocation { Name = $"Qvs Root Folder - {p.Name}", Type = QvLogLocationSource.QvsSetting, Path = settings?.Folders?.UserDocumentRootFolder ?? "Failed retrival" }); } if (p.Type == ServiceTypes.QlikViewDistributionService) { var docs = GetAllDocumentsAndFolders(qmsApiService, p); _collectorHelper.WriteContentToFile(docs, $"QvsDocumentsAndFolders_{p.Name}"); var qdsSettings = qmsApiService.GetQdsSettings(p.ID, QDSSettingsScope.All); qdsSettings.General.ClusterInfo.ForEach(clusterInfo => { var hostName = clusterInfo.Url.Host; _settings.QvSettings.QvLogLocations.Add(new QvLogLocation { Name = $"Programdata - QlikTech - {hostName}", Type = QvLogLocationSource.QdsClusterInfoUrl, Path = $"\\\\{hostName}\\c$\\ProgramData\\QlikTech" }); _settings.QvSettings.QvLogLocations.Add(new QvLogLocation { Name = $"ProgramFiles - QlikView - {hostName}", Type = QvLogLocationSource.QdsClusterInfoUrl, Path = $"\\\\{hostName}\\c$\\Program Files\\QlikView", LogCollectionType = QvLogCollectionType.SettingsOnly }); _settings.QvSettings.QvLogLocations.Add(new QvLogLocation { Name = $"CommonFiles - QlikTech - {hostName}", Type = QvLogLocationSource.QdsClusterInfoUrl, Path = $"\\\\{hostName}\\c$\\Program Files\\Common Files\\QlikTech", LogCollectionType = QvLogCollectionType.SettingsOnly }); }); _settings.QvSettings.QvLogLocations.Add(new QvLogLocation { Name = $"QDS Application DataFolder - {p.Name}", Type = QvLogLocationSource.QdsSettingsApplicationDataFolder, Path = qdsSettings.General.ApplicationDataFolder, IgnorePaths = IgnoreQdsApplicationDataFolder, LogCollectionType = QvLogCollectionType.SettingsOnly }); _collectorHelper.WriteContentToFile(qdsSettings, $"QdsSettings_{p.Name}"); } _collectorHelper.WriteContentToFile(qmsApiService.GetLicense(p.Type == ServiceTypes.QlikViewServer ? LicenseType.QlikViewServer : LicenseType.Publisher, p.ID), $"License_{p.Name}"); }); if (collectionStatus == MessageLevels.Ok) { _notify("Finished collectinging from API", MessageLevels.Ok, "ApiCollector"); } else { _notify("Finished collectinging from API but some errors where found.", MessageLevels.Warning, "ApiCollector"); } //Analyze(qmsApiService); } } catch (Exception e) { _logger.Add("Failed collecting from API", e); _notify("Failed collecting from API", MessageLevels.Error, "ApiCollector"); } }