ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何在 .NET 控制台应用中使用 ApplicationInsights-dotnet?从零到遥测上报实战

如何在 .NET 控制台应用中使用 ApplicationInsights-dotnet?从零到遥测上报实战 如何在 .NET 控制台应用中使用 ApplicationInsights-dotnet从零到遥测上报实战【免费下载链接】ApplicationInsights-dotnetApplicationInsights-dotnet项目地址: https://gitcode.com/gh_mirrors/ap/ApplicationInsights-dotnetApplicationInsights-dotnet是 Azure Monitor / Application Insights 的官方 .NET SDK基于 OpenTelemetry 构建能帮助你的 .NET 控制台应用把事件、日志、指标、异常等遥测数据自动上报到 Azure 平台实现代码还在跑问题早知道。本文将带你从零开始用最少的步骤完成控制台应用的遥测上报实战并给出两种接入方案的选择建议。先选路径3 种接入方式怎么选在写第一行代码前先根据自己的场景选对武器接入方式适用场景核心包 手动配置简单脚本、独立工具、不想引入宿主Microsoft.ApplicationInsights Worker Service推荐长期运行的后台服务、Worker ServiceMicrosoft.ApplicationInsights.WorkerService NLog 日志适配已用 NLog 写日志想让日志直通监控Microsoft.ApplicationInsights.NLogTarget 经验法则长期运行的后台应用选 Worker Service能获得自动依赖采集、ILogger 集成和优雅停机一次性脚本选手动配置3 行代码即可跑通。方案一手动配置 TelemetryClient最快上手第 1 步添加 NuGet 包dotnet add package Microsoft.ApplicationInsights --version 3.*第 2 步配置连接字符串连接字符串指向你的 Application Insights 资源推荐通过环境变量APPLICATIONINSIGHTS_CONNECTION_STRING注入避免密钥硬编码测试时也可直接在代码中设置InstrumentationKeyxxx格式的值。第 3 步创建客户端并发送遥测using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.Extensibility; using var config TelemetryConfiguration.CreateDefault(); config.ConnectionString InstrumentationKeyxxx;IngestionEndpointhttps://...; var client new TelemetryClient(config); client.TrackEvent(AppStarted); client.TrackMetric(ItemsProcessed, 42);项目中的完整示例涵盖事件、追踪、指标、异常、依赖、请求全部类型位于examples/BasicConsoleApp/Program.cs配套的 项目文件 仅引用了基础包 OpenTelemetry 控制台导出器非常适合作为起步参考。6 种遥测类型速查表TelemetryClient提供 6 个核心方法覆盖几乎所有监控场景方法用途典型场景TrackEvent自定义事件用户点击、订单创建TrackTrace日志消息带严重级别的调试信息TrackMetric数值指标响应时间、队列长度TrackException异常上报捕获异常并附堆栈TrackDependency依赖调用数据库查询、HTTP 调用TrackRequest请求追踪处理单个任务的完整链路其中指标推荐用GetMetric(名称).TrackValue(值)方式上报还能带维度如按接口分组统计完整演示见examples/BasicConsoleApp/MetricsExamples.cs和examples/BasicConsoleApp/ExceptionTelemetryExamples.cs。方案二WorkerService 包让控制台应用自动驾驶如果你的控制台应用是长期运行的后台服务推荐直接用 Worker Service 包——一行注册自动搞定依赖采集HTTP、SQL、异常捕获、ILogger 集成和停机刷新using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; var builder Host.CreateApplicationBuilder(args); builder.Services.AddApplicationInsightsTelemetryWorkerService(); builder.Services.AddHostedServiceMyWorker(); var host builder.Build(); await host.RunAsync();之后你只需通过依赖注入拿到ILoggerT和TelemetryClient使用即可比如logger.LogWarning(Response status: res); // 自动上报 var res new HttpClient().GetAsync(https://example.com).Result; // 依赖自动采集连接字符串通过环境变量或appsettings.json中的ApplicationInsights:ConnectionString配置即可。完整的 Worker Service 示例可参考examples/ConsoleApp/Program.cs与examples/WorkerService/Program.cs官方说明文档见NETCORE/WorkerService.md。用 NLog 日志直通 Application Insights如果你的项目已经用 NLog 记录日志只需在nlog.config中添加一个ApplicationInsightsTarget日志就能同步变成监控数据业务代码零改动target xsi:typeApplicationInsightsTarget nameaiTarget connectionString${environment:APPLICATIONINSIGHTS_CONNECTION_STRING}/connectionString /target rules logger name* minlevelTrace writeToaiTarget / /rules现成示例见examples/NLogConsoleApp/nlog.config和examples/NLogConsoleApp/Program.cs支持结构化日志、异常日志和自定义属性也支持 AAD 认证方式。⚠️ 控制台应用关键提醒退出前必须 Flush这是控制台应用最容易踩的坑遥测数据在内存中是缓冲批量发送的如果应用直接退出缓冲区里的数据会丢失手动配置方案必须在退出前显式调用client.Flush()然后稍作等待示例中等待了 5 秒确保数据发出。Worker Service 方案Generic Host 会在停机时自动优雅刷新无需手动处理。项目源码注释里也特别强调了这一点见examples/BasicConsoleApp/Program.cs中 Explicitly call Flush() followed by sleep is required in Console Apps 的说明。常见问题 FAQQ1运行后在 Azure 平台看不到数据依次检查① 连接字符串是否正确② 是否忘了Flush()③ 采样比例SamplingRatio是否过低——测试阶段建议设为1.0f100% 采样。Q2数据量太大如何控制成本通过TelemetryConfiguration.SamplingRatio设置采样百分比生产环境按流量调整即可。Q3想临时关闭全部遥测怎么办在创建第一个TelemetryClient之前设置configuration.DisableTelemetry trueSDK 会返回空操作实现完全不采集。相关文件与进阶参考手动配置完整示例examples/BasicConsoleApp/Program.cs异常上报演示examples/BasicConsoleApp/ExceptionTelemetryExamples.cs指标上报演示examples/BasicConsoleApp/MetricsExamples.csWorker Service 示例examples/ConsoleApp/Program.csNLog 集成示例examples/NLogConsoleApp/Program.cs、examples/NLogConsoleApp/nlog.config控制台应用配置指南skills/applicationinsights-setup/references/console-setup.mdSDK 核心概念连接字符串、OpenTelemetry 架构docs/concepts.mdWorker Service 详细说明NETCORE/WorkerService.md掌握以上内容你的 .NET 控制台应用就具备了完整的可观测能力——从一条日志、一个指标到完整的分布式追踪Application Insights 都能帮你尽收眼底。【免费下载链接】ApplicationInsights-dotnetApplicationInsights-dotnet项目地址: https://gitcode.com/gh_mirrors/ap/ApplicationInsights-dotnet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表