Example #1
0
        /// <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;
                }
            }
        }
Example #2
0
        /// <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;
                }
            }
        }
Example #3
0
        /// <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");
            }
        }