/// <summary> /// Entry point /// </summary> public static void Main() { var path = System.Reflection.Assembly.GetExecutingAssembly().Location; var builder = new ConfigurationBuilder().SetBasePath(Path.GetDirectoryName(path)).AddJsonFile("appSettings.json"); IConfiguration appSettings = builder.Build(); RingMasterApplicationHelper.AttachDebugger(int.Parse(appSettings["DebuggerAttachTimeout"])); LogFileEventTracing.Start(Path.Combine(appSettings["LogFolder"], "RingMasterWatchdog.LogPath")); AppDomain.CurrentDomain.ProcessExit += (sender, eventArgs) => { LogFileEventTracing.Stop(); }; using (FabricRuntime fabricRuntime = FabricRuntime.Create()) { try { var monitoringConfiguration = new MonitoringConfiguration(FabricRuntime.GetActivationContext()); IfxInstrumentation.Initialize(monitoringConfiguration.IfxSession, monitoringConfiguration.MdmAccount); RingMasterWatchdogEventSource.Log.ConfigurationSettings( monitoringConfiguration.Environment, monitoringConfiguration.Tenant, monitoringConfiguration.Role, monitoringConfiguration.IfxSession, monitoringConfiguration.MdmAccount); LogFileEventTracing.AddEventSource("Microsoft-Azure-Networking-Infrastructure-RingMaster-Fabric-RingMasterWatchdog", EventLevel.Informational, "RingMasterWatchdog"); LogFileEventTracing.AddEventSource("Microsoft-ServiceFabric-Services", EventLevel.Informational, "ServiceFabricServices"); Trace.Listeners.Add(new LogFileTraceListener()); var metricsFactory = IfxInstrumentation.CreateMetricsFactory( monitoringConfiguration.MdmAccount, monitoringConfiguration.MdmNamespace, monitoringConfiguration.Environment, monitoringConfiguration.Tenant, monitoringConfiguration.Role, monitoringConfiguration.RoleInstance); ServiceRuntime.RegisterServiceAsync( "RingMasterWatchdog", serviceContext => new RingMasterWatchdog(serviceContext, metricsFactory)).Wait(); RingMasterWatchdogEventSource.Log.RegisterServiceSucceeded(); Thread.Sleep(Timeout.Infinite); } catch (Exception ex) { RingMasterWatchdogEventSource.Log.RegisterServiceFailed(ex.ToString()); throw; } } }
/// <summary> /// Entry point /// </summary> /// <param name="args">Arguments provided to the program</param> public static void Main(string[] args) { Trace.Listeners.Add(IfxInstrumentation.CreateTraceListener()); using (FabricRuntime fabricRuntime = FabricRuntime.Create()) { try { var monitoringConfiguration = new MonitoringConfiguration(FabricRuntime.GetActivationContext()); IfxInstrumentation.Initialize(monitoringConfiguration.IfxSession, monitoringConfiguration.MdmAccount); PopulationStressServiceEventSource.Log.ConfigurationSettings( monitoringConfiguration.Environment, monitoringConfiguration.Tenant, monitoringConfiguration.Role, monitoringConfiguration.IfxSession, monitoringConfiguration.MdmAccount); var metricsFactory = IfxInstrumentation.CreateMetricsFactory( monitoringConfiguration.MdmAccount, monitoringConfiguration.MdmNamespace, monitoringConfiguration.Environment, monitoringConfiguration.Tenant, monitoringConfiguration.Role, monitoringConfiguration.RoleInstance); ServiceRuntime.RegisterServiceAsync("PopulationStressService", serviceContext => new PopulationStressService(serviceContext, metricsFactory)).Wait(); PopulationStressServiceEventSource.Log.RegisterServiceSucceeded(); Assembly assembly = Assembly.GetExecutingAssembly(); FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location); string version = fvi.FileVersion; var uptime = Stopwatch.StartNew(); while (true) { PopulationStressServiceEventSource.Log.ReportServiceStatus(version, (long)uptime.Elapsed.TotalSeconds); Thread.Sleep(TimeSpan.FromSeconds(30)); } } catch (Exception ex) { PopulationStressServiceEventSource.Log.RegisterServiceFailed(ex.ToString()); throw; } } }
/// <summary> /// Initializes the specified environment. /// </summary> /// <param name="environment">The environment.</param> /// <param name="tenant">The tenant.</param> /// <param name="mdmAccountName">Name of the MDM account.</param> /// <param name="roleInstance">The role instance.</param> /// <param name="roleName">Name of the role.</param> /// <param name="sessionName">Name of the session.</param> /// <param name="mdmNamespace">The MDM namespace.</param> /// <param name="enableMdm">if set to <c>true</c> [MDM enabled].</param> public static void Initialize(string environment, string tenant, string mdmAccountName, string roleInstance, string roleName, string sessionName, string mdmNamespace, bool enableMdm) { mdmEnabled = enableMdm; if (mdmEnabled) { IfxInstrumentation.Initialize(sessionName, mdmAccountName); metricsFactory = IfxInstrumentation.CreateMetricsFactory(mdmAccountName, mdmNamespace, environment, tenant, roleName, roleInstance); InitializeMetrics(); System.Console.WriteLine("MDM enabled"); } else { System.Console.WriteLine("MDM disaabled"); } }