0

我想将 ElasticAPM 代理添加到用 .NET Framework 4.8 编写的 WinForms 应用程序中。

我已经在远程机器上安装了 APM 服务器,我想在其中发送消息。

我从https://www.elastic.co/guide/en/apm/agent/dotnet/current/public-api.html完成了公共 API 的配置,但是 APM 代理无法从环境变量中读取值,所以它试图连接到 http://localhost:8200/ 而不是远程机器。

理想情况下,我希望能够从应用程序级别设置它,而不是从 ENV 读取,因为有数百个用户使用应用程序,我不想弄乱他们的 Windows 设置。

下面是我用于测试的控制台应用程序代码(我认为应该正确初始化 AgentComponents 对象):

using Elastic.Apm;
using Elastic.Apm.Config;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace elastic_apm_dotnet_framework_console
{
    class Program
    {
        static async Task Main(string[] args)
        {
            SetApmAgent();
            var config = Agent.Config;

            await Agent.Tracer.CaptureTransaction("dummy trans", "Request", async () =>
            {
                var response = $"Bla bla {await GetRandomNumber()}";
            });
            Console.ReadKey();
        }

        private static void SetApmAgent()
        {
            var ac = new AgentComponents();
            Agent.Setup(ac);
        }

        private static readonly Random Random = new Random();

        private static async Task<int> GetRandomNumber()
        {
            await Task.Delay(5);
            return Random.Next();
        }
    }
}
4

0 回答 0