public override Task ReportAsync(CancellationToken token) { // Local log. this.ObserverLogger.LogInfo(message.ToString()); // Report to Fabric. var healthReporter = new ObserverHealthReporter(this.ObserverLogger); var healthReport = new Utilities.HealthReport { Code = FoErrorWarningCodes.Ok, HealthMessage = this.message.ToString(), NodeName = this.NodeName, Observer = this.ObserverName, ReportType = HealthReportType.Node, State = HealthState.Ok, }; healthReporter.ReportHealthToServiceFabric(healthReport); // Emit Telemetry - This will use whatever telemetry provider you have configured in FabricObserver Settings.xml. var telemetryData = new TelemetryData(this.FabricClientInstance, this.Token) { Code = FoErrorWarningCodes.Ok, HealthEventDescription = this.message.ToString(), HealthState = "Ok", NodeName = this.NodeName, ObserverName = this.ObserverName, Source = ObserverConstants.FabricObserverName, }; if (this.IsTelemetryProviderEnabled && this.IsObserverTelemetryEnabled) { _ = this.TelemetryClient?.ReportHealthAsync( telemetryData, this.Token); } // ETW. if (this.IsEtwEnabled) { Logger.EtwLogger?.Write( ObserverConstants.FabricObserverETWEventName, new { Code = FoErrorWarningCodes.Ok, HealthEventDescription = this.message.ToString(), HealthState = "Ok", this.NodeName, this.ObserverName, Source = ObserverConstants.FabricObserverName, }); } this.message.Clear(); return(Task.CompletedTask); }
public override Task ReportAsync(CancellationToken token) { // Local log. ObserverLogger.LogInfo(message.ToString()); /* Report to Fabric */ // These values will be preserved across observer runs and are useful for clearing warnings // by reporting Ok health state health events with the same property and sourceid values // as the error/warning health events when FO is safely taken down (e.g., app is being uninstalled, // safe restart of fabric node it's running on, etc.). HealthReportProperties.Add("SomePropertyName"); HealthReportSourceIds.Add($"{ObserverName}_SomethingUniqueToThisReport"); var healthReporter = new ObserverHealthReporter(ObserverLogger, FabricClientInstance); var healthReport = new Utilities.HealthReport { Code = FOErrorWarningCodes.Ok, HealthMessage = this.message.ToString(), NodeName = NodeName, Observer = ObserverName, Property = HealthReportProperties[HealthReportProperties.Count - 1], ReportType = HealthReportType.Node, State = HealthState.Ok, }; healthReporter.ReportHealthToServiceFabric(healthReport); // Emit Telemetry - This will use whatever telemetry provider you have configured in FabricObserver Settings.xml. var telemetryData = new TelemetryData(FabricClientInstance, Token) { Code = FOErrorWarningCodes.Ok, HealthEventDescription = this.message.ToString(), HealthState = "Ok", NodeName = NodeName, ObserverName = ObserverName, Source = ObserverConstants.FabricObserverName, }; if (IsTelemetryProviderEnabled && IsObserverTelemetryEnabled) { _ = TelemetryClient?.ReportHealthAsync( telemetryData, Token); } // ETW. if (IsEtwEnabled) { Logger.EtwLogger?.Write( ObserverConstants.FabricObserverETWEventName, new { Code = FOErrorWarningCodes.Ok, HealthEventDescription = this.message.ToString(), HealthState = "Ok", NodeName, ObserverName, Source = ObserverConstants.FabricObserverName, }); } this.message.Clear(); return(Task.CompletedTask); }