private static bool GetBestIfShouldMultiThreadRequests() { if (_systemInfo == null) { _systemInfo = SystemInfoHelper.GetSystemInfo(); } return(_systemInfo.CpuCores >= 2); }
private static int GetBestMaxDegreesOfParallelism() { if (_systemInfo == null) { _systemInfo = SystemInfoHelper.GetSystemInfo(); } if (_systemInfo.CpuCores == 1) { return(1); } else if (_systemInfo.CpuCores == 2) { return(2); } else if (_systemInfo.CpuCores < 5) { return(3); } else if (_systemInfo.CpuCores < 7) { return(4); } else if (_systemInfo.CpuCores < 9) { return(5); } else if (_systemInfo.CpuCores < 13) { return(6); } else if (_systemInfo.CpuCores < 17) { return(7); } else if (_systemInfo.CpuCores < 21) { return(8); } else if (_systemInfo.CpuCores < 25) { return(9); } else if (_systemInfo.CpuCores < 33) { return(10); } else if (_systemInfo.CpuCores < 65) { return(11); } else { return(12); } }
private void imageTextButtonSendErrorInfo_Click(object sender, EventArgs e) { var helpdeskMail = AdditionalInfo.SplitByTwoDifferentStrings("HelpdeskEmail:", ";", true)[0]; var userCode = AdditionalInfo.SplitByTwoDifferentStrings("UserCode:", ";", true)[0]; var appVersion = AdditionalInfo.SplitByTwoDifferentStrings("ApplicationVersion:", ";", true)[0]; var valueText = new ValueText { Value = ".NET Framework", Text = "" }; var listValueText = new List <ValueText>(); listValueText.Add(valueText); var installedNetFxes = SystemInfoHelper.GetInstalledSoftwareList(listValueText); var installedNetFxesStr = ""; for (int index = 0; index < installedNetFxes.Count; index++) { var installedSoftware = installedNetFxes[index]; if (index == 0) { installedNetFxesStr = installedSoftware.ProductName + " " + installedSoftware.VersionString; } else { installedNetFxesStr = installedNetFxesStr + "; " + installedSoftware.ProductName + " " + installedSoftware.VersionString; } } var body = "Dear Developer%0D%0A" + "%0D%0A" + "Following is system running error infomation for you:" + (userCode.IsNullOrEmpty() ? "" : " (send by " + userCode + ")") + "%0D%0A" + "Application Version : " + appVersion + "%0D%0A" + "Assembly Bits : " + IntPtr.Size * 8 + "%0D%0A" + "OS : " + SystemInfoHelper.GetSystemInfo("osinfo") + " " + SystemInfoHelper.GetSystemInfo("osbit") + " bits" + "%0D%0A" + "Machine Name: " + SystemInfoHelper.GetSystemInfo("machinename") + "%0D%0A" + "IP: " + SystemInfoHelper.GetSystemInfo("Ips") + "%0D%0A" + "Windows Account: " + SystemInfoHelper.GetSystemInfo("currentuser") + "%0D%0A" + "Occurring Time: " + OccurringTime + "%0D%0A" + "Installed dotNetFx: " + installedNetFxesStr + "%0D%0A" + "Exception Message: " + ExceptionMsg; body = body.Replace("\n", "%0D%0A"); var subject = ErrorText + " occured at " + OccurringTime; LocalEmailHelper.Send(helpdeskMail, subject, body); }
public void System_Should_Serialize_ConfiguredHostName_And_DetectedHostName() { var systemHelper = new SystemInfoHelper(new NoopLogger()); var hostName = "this_is_my_hostname"; var system = systemHelper.GetSystemInfo(hostName); var json = _payloadItemSerializer.Serialize(system); var jObject = JObject.Parse(json); var configuredHostName = jObject.Property("configured_hostname"); configuredHostName.Should().NotBeNull(); configuredHostName.Value.Value <string>().Should().Be(hostName); var detectedHostName = jObject.Property("detected_hostname"); detectedHostName.Should().NotBeNull(); }
internal AgentComponents( IApmLogger logger, IConfigurationReader configurationReader, IPayloadSender payloadSender, IMetricsCollector metricsCollector, ICurrentExecutionSegmentsContainer currentExecutionSegmentsContainer, ICentralConfigurationFetcher centralConfigurationFetcher, IApmServerInfo apmServerInfo, BreakdownMetricsProvider breakdownMetricsProvider = null ) { try { var tempLogger = logger ?? ConsoleLogger.LoggerOrDefault(configurationReader?.LogLevel); ConfigurationReader = configurationReader ?? new EnvironmentConfigurationReader(tempLogger); Logger = logger ?? ConsoleLogger.LoggerOrDefault(ConfigurationReader.LogLevel); Service = Service.GetDefaultService(ConfigurationReader, Logger); var systemInfoHelper = new SystemInfoHelper(Logger); var system = systemInfoHelper.GetSystemInfo(ConfigurationReader.HostName); ConfigurationStore = new ConfigurationStore(new ConfigurationSnapshotFromReader(ConfigurationReader, "local"), Logger); ApmServerInfo = apmServerInfo ?? new ApmServerInfo(); PayloadSender = payloadSender ?? new PayloadSenderV2(Logger, ConfigurationStore.CurrentSnapshot, Service, system, ApmServerInfo, isEnabled: ConfigurationReader.Enabled); if (ConfigurationReader.Enabled) { breakdownMetricsProvider ??= new BreakdownMetricsProvider(Logger); } HttpTraceConfiguration = new HttpTraceConfiguration(); SubscribedListeners = new HashSet <Type>(); // initialize the tracer before central configuration or metric collection is started TracerInternal = new Tracer(Logger, Service, PayloadSender, ConfigurationStore, currentExecutionSegmentsContainer ?? new CurrentExecutionSegmentsContainer(), ApmServerInfo, breakdownMetricsProvider); if (ConfigurationReader.Enabled) { CentralConfigurationFetcher = centralConfigurationFetcher ?? new CentralConfigurationFetcher(Logger, ConfigurationStore, Service); MetricsCollector = metricsCollector ?? new MetricsCollector(Logger, PayloadSender, ConfigurationStore, breakdownMetricsProvider); MetricsCollector.StartCollecting(); } else { Logger.Info()?.Log("The Elastic APM .NET Agent is disabled - the agent won't capture traces and metrics."); } TracerInternal = new Tracer(Logger, Service, PayloadSender, ConfigurationStore, currentExecutionSegmentsContainer ?? new CurrentExecutionSegmentsContainer(), ApmServerInfo, breakdownMetricsProvider); if (ConfigurationReader.EnableOpenTelemetryBridge) { #if NET5_0 || NET6_0 if (ApmServerInfo.Version >= new ElasticVersion(7, 16, 0, string.Empty)) { new OpenTelemetry.ElasticActivityListener(this, TracerInternal); } else { Logger.Warning()?.Log("OpenTelemetry (Activity) bridge is only supported with APM Server 7.16.0 or newer - bridge won't be enabled.."); } #else Logger.Warning()?.Log("OpenTelemetry (Activity) bridge is only supported on .NET5 or newer - bridge won't be enabled."); #endif } } catch (Exception e) { Logger.Error()?.LogException(e, "Failed initializing agent."); } }
internal AgentComponents( IApmLogger logger, IConfigurationReader configurationReader, IPayloadSender payloadSender, IMetricsCollector metricsCollector, ICurrentExecutionSegmentsContainer currentExecutionSegmentsContainer, ICentralConfigurationFetcher centralConfigurationFetcher, IApmServerInfo apmServerInfo, BreakdownMetricsProvider breakdownMetricsProvider = null ) { try { var tempLogger = logger ?? ConsoleLogger.LoggerOrDefault(configurationReader?.LogLevel); ConfigurationReader = configurationReader ?? new EnvironmentConfigurationReader(tempLogger); Logger = logger ?? ConsoleLogger.LoggerOrDefault(ConfigurationReader.LogLevel); Service = Service.GetDefaultService(ConfigurationReader, Logger); var systemInfoHelper = new SystemInfoHelper(Logger); var system = systemInfoHelper.GetSystemInfo(ConfigurationReader.HostName); ConfigurationStore = new ConfigurationStore(new ConfigurationSnapshotFromReader(ConfigurationReader, "local"), Logger); ApmServerInfo = apmServerInfo ?? new ApmServerInfo(); // Called by PayloadSenderV2 after the ServerInfo is fetched Action <bool, IApmServerInfo> serverInfoCallback = null; #if NET5_0 || NET6_0 ElasticActivityListener activityListener = null; if (ConfigurationReader.EnableOpenTelemetryBridge) { activityListener = new OpenTelemetry.ElasticActivityListener(this); serverInfoCallback = (success, serverInfo) => { if (success) { if (serverInfo.Version >= new ElasticVersion(7, 16, 0, string.Empty)) { Logger.Info() ?.Log("APM Server version ready - OpenTelemetry (Activity) bridge is active. Current Server version: {version}", serverInfo.Version.ToString()); } else { Logger.Warning() ?.Log( "OpenTelemetry (Activity) bridge is only supported with APM Server 7.16.0 or newer - bridge won't be enabled. Current Server version: {version}", serverInfo.Version.ToString()); activityListener?.Dispose(); } } else { Logger.Warning() ?.Log( "Unable to read server version - OpenTelemetry (Activity) bridge is only supported with APM Server 7.16.0 or newer. " + "The bridge remains active, but due to unknown server version it may not work as expected."); } }; } #endif PayloadSender = payloadSender ?? new PayloadSenderV2(Logger, ConfigurationStore.CurrentSnapshot, Service, system, ApmServerInfo, isEnabled: ConfigurationReader.Enabled, serverInfoCallback: serverInfoCallback); if (ConfigurationReader.Enabled) { breakdownMetricsProvider ??= new BreakdownMetricsProvider(Logger); } HttpTraceConfiguration = new HttpTraceConfiguration(); SubscribedListeners = new HashSet <Type>(); // initialize the tracer before central configuration or metric collection is started TracerInternal = new Tracer(Logger, Service, PayloadSender, ConfigurationStore, currentExecutionSegmentsContainer ?? new CurrentExecutionSegmentsContainer(), ApmServerInfo, breakdownMetricsProvider); #if NET5_0 || NET6_0 if (ConfigurationReader.EnableOpenTelemetryBridge) { // If the server version is not known yet, we enable the listener - and then the callback will do the version check once we have the version if (ApmServerInfo.Version == null || ApmServerInfo?.Version == new ElasticVersion(0, 0, 0, null)) { activityListener?.Start(TracerInternal); } // Otherwise do a version check else if (ApmServerInfo.Version >= new ElasticVersion(7, 16, 0, string.Empty)) { Logger.Info() ?.Log("Starting OpenTelemetry (Activity) bridge"); activityListener?.Start(TracerInternal); } else { Logger.Warning() ?.Log( "OpenTelemetry (Activity) bridge is only supported with APM Server 7.16.0 or newer - bridge won't be enabled. Current Server version: {version}", ApmServerInfo.Version.ToString()); activityListener?.Dispose(); } } #endif if (ConfigurationReader.Enabled) { CentralConfigurationFetcher = centralConfigurationFetcher ?? new CentralConfigurationFetcher(Logger, ConfigurationStore, Service); MetricsCollector = metricsCollector ?? new MetricsCollector(Logger, PayloadSender, ConfigurationStore, breakdownMetricsProvider); MetricsCollector.StartCollecting(); } else { Logger.Info()?.Log("The Elastic APM .NET Agent is disabled - the agent won't capture traces and metrics."); } } catch (Exception e) { Logger.Error()?.LogException(e, "Failed initializing agent."); } }
public MonitWindowsAgent() { Run = new Run_T(); Run.id = UniqueWindowsId.GetOrCreateUniqueId(); Run.incarnation = SystemStats.ProcessRunningInSec(); Run.controlfile = "none"; //TODO Run.startdelay = 0; //TODO Run.polltime = 120; //TODO Run.Env = new myenvironment(); Run.Env.user = SystemStats.GetHostname(); Run.httpd = new Httpd_T(); Run.httpd.port = ConfigMgr.Config.Httpd.Port; Run.httpd.ssl = ConfigMgr.Config.Httpd.SSL; Run.httpd.address = ConfigMgr.Config.Httpd.BindIp; Run.httpd.credentials = new List <Auth_T>(); Run.httpd.credentials.Add(new Auth_T { uname = ConfigMgr.Config.Httpd.Username, passwd = ConfigMgr.Config.Httpd.Password }); Run.mmonits = new List <Mmonit_T>(); Run.mmonits.Add(new Mmonit_T { url = new URL_T { url = ConfigMgr.Config.MMonits[0].Url, //port = ConfigMgr.Config.MMonits[0].Port, password = ConfigMgr.Config.MMonits[0].Password, user = ConfigMgr.Config.MMonits[0].Username } }); servicelist = new List <Service_T>(); servicelist_conf = new List <Service_T>(); ConfigMgr.Config.Services.ForEach(sc => { var newS = ServiceHelper.CreateService(sc, sc.Name.ToLower()); if (newS == null) { Logger.Log.Error("Service could not be created!"); } else { if (sc is ProcessConfig) { ProcessHelper.AddProcess(newS); } else if (sc is FilesystemConfig) { FilesystemHelper.AddFilesystem(newS); } } }); servicegrouplist = new List <ServiceGroup_T>(); systeminfo = SystemInfoHelper.GetSystemInfo(); m_timer = new Timer(ConfigMgr.Config.Period); m_timer.Elapsed += DoPeriodicCheck; m_timer.AutoReset = true; m_mMonitClient = new Collector(); var service = ServiceHelper.GetSystemService(); Run.system = new List <Service_T>(); Run.system.Add(service); }