Slackbot
06/28/2023, 12:34 AMBrian Richardson
06/28/2023, 12:35 AMsilo.Services.AddOpenTelemetry()
.WithTracing(trace =>
{
trace
.AddSource("*")
.SetResourceBuilder(
ResourceBuilder
.CreateDefault()
.AddEnvironmentVariableDetector()
.AddTelemetrySdk()
.AddService(serviceName: serviceName, serviceVersion: serviceVersion));
trace.AddOtlpExporter(otlp => otlp.Endpoint = new Uri($"http://{hostContext.Configuration["Otel:Collector"]}"));
trace.AddConsoleExporter();
});
Brian Richardson
06/28/2023, 12:35 AMpublic Task<IList<Election>> GetElections(ElectionId? electionId = null, bool openOnly = true)
{
ActivityContext? activityContext = null;
using var activity = _activities.StartActivity(ActivityKind.Server);
IList<Election> elections;
try
{
activity?.SetTag("electionId", electionId?.ToString());
activity?.SetTag("openOnly", openOnly.ToString());
elections = electionId == null
? State.Elections.Where(e => !e.Deleted &&
(e.Status == "Active" || !openOnly)).ToList()
: State.Elections.Where(x => x.Id == electionId && !x.Deleted).ToList();
activity?.SetStatus(ActivityStatusCode.Ok);
}
catch (Exception ex)
{
activity?.RecordException(ex);
activity?.SetStatus(ActivityStatusCode.Error, ex.Message);
throw;
}
return Task.FromResult(elections);
}
Brian Richardson
06/28/2023, 12:36 AMpublic async Task Create(ElectionId id, Title title, Description? description)
{
var activity = _activities.StartActivity(ActivityKind.Consumer);
try
{
activity?.SetTag("id", id);
activity?.SetTag("title", title);
activity?.SetTag("description", description);
var @event = new Vote.Election.Created
{
Id = this.GetPrimaryKey(),
Title = title,
Description = description
};
var activityEvent = new ActivityEvent(@event.GetType().FullName ?? @event.GetType().Name, tags: new ActivityTagsCollection
{
{ "Id", @event.Id },
{ "Title", @event.Title },
{ "Description", @event.Description }
});
RaiseEvent(@event);
activity?.AddEvent(activityEvent);
_subscribeToElections = this.GetStreamProvider("StreamProvider").GetStream<object>("Election", this.GetPrimaryKey());
if (_publishToApplication != null) await _publishToApplication.OnNextAsync(@event);
await ConfirmEvents();
activity?.SetStatus(ActivityStatusCode.Ok);
}
catch (Exception ex)
{
activity?.SetStatus(ActivityStatusCode.Error, ex.Message);
throw;
}
}
Brian Richardson
06/28/2023, 12:37 AMActivitySource
as follows: silo.Services.AddSingleton(activitySource);
Brian Richardson
06/28/2023, 12:38 AMActivitySource
, all activities are derived from that source, and yet only one method's activities are successfully generated?Brian Richardson
06/28/2023, 1:13 AMvar activity = ...
vs using var activity = ...
SigNoz is an open-source APM. It helps developers monitor their applications & troubleshoot problems, an open-source alternative to DataDog, NewRelic, etc.
Powered by