private static async Task MainAsync(string[] args) { //// App Metrics configuration // Build metrics root var metrics = new MetricsBuilder() .Report.ToGraphite($"net.tcp://{Program.GraphiteEndpoint}") .Build(); // Build and run scheduler var scheduler = new AppMetricsTaskScheduler( TimeSpan.FromMilliseconds(Program.GraphiteUpdateIntervalMilliseconds), async() => { await Task.WhenAll(metrics.ReportRunner.RunAllAsync()); }); scheduler.Start(); //// DataStax C# Driver configuration Cassandra.Diagnostics.CassandraTraceSwitch.Level = TraceLevel.Warning; Trace.Listeners.Add(new TextWriterTraceListener(Console.Out)); var cluster = Cluster.Builder() .AddContactPoint(Program.ContactPoint) .WithSessionName(Program.SessionName) .WithMetrics( metrics.CreateDriverMetricsProvider(), new DriverMetricsOptions() .SetEnabledNodeMetrics(NodeMetric.AllNodeMetrics) .SetEnabledSessionMetrics(SessionMetric.AllSessionMetrics)) .Build(); var session = await cluster.ConnectAsync().ConfigureAwait(false); //// Run some queries to have metrics data var cts = new CancellationTokenSource(); var task = Task.Run(async() => { while (!cts.IsCancellationRequested) { try { await session.ExecuteAsync(new SimpleStatement("SELECT * FROM system.local")); } catch (Exception ex) { Console.WriteLine($"ERROR: {ex}"); } } }); Console.WriteLine("Press enter to shutdown the session and exit."); Console.ReadLine(); cts.Cancel(); await task.ConfigureAwait(false); await cluster.ShutdownAsync().ConfigureAwait(false); }