Elastic APM配置TransactionIgnoreUrls无法过滤指定URL如何解决?
1 配置语法错误
你提供的JSON配置存在语法缺失,"ElasticApm__ServiceName": "MyApi"行末尾缺少英文逗号,会导致配置解析器直接跳过后面的ElasticApm__TransactionIgnoreUrls配置项,这是配置不生效的核心高发原因,修正后的配置如下:
"ElasticApm__TransactionSampleRate": "1.0", "ElasticApm__Enabled": "true", "ElasticApm__Environment": "Development", "ElasticApm__SecretToken": "some token", "ElasticApm__ServerUrls": "serverurl", "ElasticApm__VerifyServerCert": "FALSE", "ElasticApm__ServiceName": "MyApi", "ElasticApm__TransactionIgnoreUrls": [ "*ping*", "*/status/*" ]
2 配置键写法适配
ElasticApm__XXX这种双下划线分隔的键是环境变量专用的写法,如果你是把配置写在appsettings.json文件里,需要改成分层JSON结构,否则配置不会被识别:
{ "ElasticApm": { "TransactionSampleRate": 1.0, "Enabled": true, "Environment": "Development", "SecretToken": "some token", "ServerUrls": "serverurl", "VerifyServerCert": false, "ServiceName": "MyApi", "TransactionIgnoreUrls": [ "*ping*", "*/status/*" ] } }
3 匹配规则说明
Elastic APM .NET Agent的TransactionIgnoreUrls使用标准Shell通配符规则,上面给出的配置已经可以满足你的需求:
*ping*:匹配所有路径含ping字符的端点*/status/*:匹配所有路径包含/status/片段的端点
不需要写其他冗余的规则,也不需要加额外的前缀后缀特殊符号。
4 验证配置加载
如果修正后还是不生效,可以在Startup注册Apm的代码前加调试逻辑,确认配置被正确读取:
// 输出TransactionIgnoreUrls的第一个配置项,确认和你写的一致 Console.WriteLine(Configuration["ElasticApm__TransactionIgnoreUrls:0"]); app.UseAllElasticApm(Configuration);
如果输出为空,说明你的配置源优先级有问题,比如更高优先级的环境变量/命令行参数覆盖了该配置项,调整配置源顺序即可。
5 版本兼容问题
如果你的Elastic APM .NET Agent版本低于1.12.0,存在通配符匹配失效的已知bug,直接升级到最新稳定版即可修复。
内容的提问来源于stack exchange,提问作者Koen
相关产品推荐
相关产品推荐

