コード例 #1
0
        static void Main(string[] args)
        {
            var init = true;

            var configuration = new Configuration
            {
                LogGroupName        = "/Canary/Dotnet/CloudWatchAgent/Metrics",
                EnvironmentOverride = Environments.ECS,
                AgentEndPoint       = "tcp://127.0.0.1:25888"
            };

            var loggerFactory = LoggerFactory.Create(builder =>
                                                     builder
                                                     .SetMinimumLevel(LogLevel.Information)
                                                     .AddConsole());

            EnvironmentConfigurationProvider.Config = configuration;

            // get the assembly version (this does not reflect NuGet pre-releases)
            var packageVersion = GetPackageVersion();

            while (true)
            {
                using (var logger = new MetricsLogger(loggerFactory))
                {
                    logger.SetNamespace("Canary");

                    var dimensionSet = new DimensionSet();
                    dimensionSet.AddDimension("Runtime", "Dotnet");
                    dimensionSet.AddDimension("Platform", "ECS");
                    dimensionSet.AddDimension("Agent", "CloudWatchAgent");
                    dimensionSet.AddDimension("Version", packageVersion);
                    logger.SetDimensions(dimensionSet);

                    using (var currentProcess = System.Diagnostics.Process.GetCurrentProcess())
                    {
                        // https://github.com/dotnet/corefx/blob/3633ea2c6bf9d52029681efeedd84fd7a06eb6ba/src/System.Diagnostics.Process/src/System/Diagnostics/ProcessManager.Linux.cs#L137
                        logger.PutMetric("Memory.RSS", currentProcess.WorkingSet64, Unit.BYTES);
                    }

                    logger.PutMetric("Invoke", 1, Unit.NONE);

                    if (init)
                    {
                        init = false;
                        logger.PutMetric("Init", 1, Unit.NONE);
                    }

                    logger.PutMetric("Memory.HeapUsed", GC.GetTotalMemory(false), Unit.BYTES);
                }
                Thread.Sleep(1_000);
            }
        }
コード例 #2
0
        public void TestOverridePreviousDimensions()
        {
            var dimensionName  = "dim";
            var dimensionValue = "dimValue";

            _metricsLogger.PutDimensions(new DimensionSet("foo", "bar"));
            _metricsLogger.SetDimensions(new DimensionSet(dimensionName, dimensionValue));

            _metricsLogger.Flush();

            Assert.Single(_sink.MetricsContext.GetAllDimensionSets());
            Assert.Single(_sink.MetricsContext.GetAllDimensionSets()[0].DimensionKeys);
            Assert.Equal(dimensionValue, _sink.MetricsContext.GetAllDimensionSets()[0].GetDimensionValue(dimensionName));
        }
コード例 #3
0
        public void TestOverrideDefaultDimensions()
        {
            var dimensionName   = "dim";
            var dimensionValue  = "dimValue";
            var defaultDimName  = "defaultDim";
            var defaultDimValue = "defaultDimValue";

            MetricsContext metricsContext = new MetricsContext();

            metricsContext.DefaultDimensions.AddDimension(defaultDimName, defaultDimValue);
            metricsContext.SetDimensions(new DimensionSet(defaultDimName, defaultDimValue));

            _metricsLogger = new MetricsLogger(_environment, metricsContext, _logger);
            _metricsLogger.SetDimensions(new DimensionSet(dimensionName, dimensionValue));
            _metricsLogger.Flush();

            Assert.Single(_sink.MetricsContext.GetAllDimensionSets());
            Assert.Null(_sink.MetricsContext.GetAllDimensionSets()[0].GetDimensionValue(defaultDimName));
        }