ElasticSearch和Apm搜索阶段执行异常:[script_exception]原因:link错误
ElasticSearch and Apm search phase execution exception: [script_exception] Reason: link error
我安装了 ElasticSrarch 和 Kibana,然后在 windows 服务器 2019 和 2022 上添加了集成车队和 Apm(现在都处于活动状态,所有堆栈版本都是 8.1.2)。对于客户端,我使用 AspNetCore 示例表单 OpenTelemetry Github repository。我没有任何问题当我将 Apm 发送到 windows 服务器 2022 但是当我发送到 2019 并尝试从可观察性访问 apm 服务时,我得到以下错误。
记录了这个错误:
[2022-04-18T14:34:22.619+04:30][ERROR][plugins.apm] Error: search_phase_execution_exception: [script_exception] Reason: link error
at D:\ElasticStack\kibana\x-pack\plugins\observability\common\utils\unwrap_es_response.js:60:11
at runMicrotasks (<anonymous>)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at getServiceInstancesSystemMetricStatistics (D:\ElasticStack\kibana\x-pack\plugins\apm\server\routes\services\get_service_instances\get_service_instances_system_metric_statistics.js:126:20)
at async Promise.all (index 1)
at D:\ElasticStack\kibana\x-pack\plugins\apm\server\routes\services\get_service_instances\main_statistics.js:28:51
at async Promise.all (index 0)
at handler (D:\ElasticStack\kibana\x-pack\plugins\apm\server\routes\services\route.js:622:45)
at D:\ElasticStack\kibana\x-pack\plugins\apm\server\routes\apm_routes\register_apm_server_routes.js:143:13
at Router.handle (D:\ElasticStack\kibana\src\core\server\http\router\router.js:163:30)
at handler (D:\ElasticStack\kibana\src\core\server\http\router\router.js:124:50)
at exports.Manager.execute (D:\ElasticStack\kibana\node_modules\@hapi\hapi\lib\toolkit.js:60:28)
at Object.internals.handler (D:\ElasticStack\kibana\node_modules\@hapi\hapi\lib\handler.js:46:20)
at exports.execute (D:\ElasticStack\kibana\node_modules\@hapi\hapi\lib\handler.js:31:20)
at Request._lifecycle (D:\ElasticStack\kibana\node_modules\@hapi\hapi\lib\request.js:371:32)
at Request._execute (D:\ElasticStack\kibana\node_modules\@hapi\hapi\lib\request.js:281:9)
Response: {
error: {
root_cause: [
{
type: 'script_exception',
reason: 'link error',
script_stack: [ "doc['system.memory.actual.free']", ' ^---- HERE' ],
script: "1 - doc['system.memory.actual.free'] / doc['system.memory.total']",
lang: 'expression'
}
],
type: 'search_phase_execution_exception',
reason: 'all shards failed',
phase: 'query',
grouped: true,
failed_shards: [
{
shard: 0,
index: '.ds-metrics-apm.internal-default-2022.04.17-000001',
node: 'KsqpLySITbOWAlCPlvsdSg',
reason: {
type: 'script_exception',
reason: 'link error',
script_stack: [ "doc['system.memory.actual.free']", ' ^---- HERE' ],
script: "1 - doc['system.memory.actual.free'] / doc['system.memory.total']",
lang: 'expression',
caused_by: {
type: 'parse_exception',
reason: 'Field [system.memory.actual.free] does not exist in mappings'
}
}
}
]
},
status: 400
}
我比较了服务器和代理配置,但没有发现任何差异。为什么会出现此消息和错误,我该如何解决?
两周前就发现了问题,忙了几天发到这里。另外,我认为这是一个错误。
在一般且快速的回答中,您应该添加包含 CPU 和内存基准的 APM 指标。在下面几行中,我详细描述了我的案例。
Windows Server 2022 VPS 是一个开发测试环境,我用Elastic APM库开始了我的项目。该库收集 CPU 和内存指标,并在默认配置下将它们作为 APM 指标发送。之后,我更改了我的库并使用了 OpentTelemetry。新的不发送 CPU 和内存基准测试,我在测试中忽略了它,因为它对我的使用并不明显。当我使用 Elastic 的全新安装从开发环境转移到暂存环境时,出现了一个错误。经过一些调试,我发现如果我添加 CPU 和内存指标,问题就会解决。我通过使用我的第一个 Elastic APM 库发送它们来添加指标,但其他人可以使用 Kibana 并添加一些虚假指标。第二种方法,可以看Ovidiu comment.
我安装了 ElasticSrarch 和 Kibana,然后在 windows 服务器 2019 和 2022 上添加了集成车队和 Apm(现在都处于活动状态,所有堆栈版本都是 8.1.2)。对于客户端,我使用 AspNetCore 示例表单 OpenTelemetry Github repository。我没有任何问题当我将 Apm 发送到 windows 服务器 2022 但是当我发送到 2019 并尝试从可观察性访问 apm 服务时,我得到以下错误。
记录了这个错误:
[2022-04-18T14:34:22.619+04:30][ERROR][plugins.apm] Error: search_phase_execution_exception: [script_exception] Reason: link error
at D:\ElasticStack\kibana\x-pack\plugins\observability\common\utils\unwrap_es_response.js:60:11
at runMicrotasks (<anonymous>)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at getServiceInstancesSystemMetricStatistics (D:\ElasticStack\kibana\x-pack\plugins\apm\server\routes\services\get_service_instances\get_service_instances_system_metric_statistics.js:126:20)
at async Promise.all (index 1)
at D:\ElasticStack\kibana\x-pack\plugins\apm\server\routes\services\get_service_instances\main_statistics.js:28:51
at async Promise.all (index 0)
at handler (D:\ElasticStack\kibana\x-pack\plugins\apm\server\routes\services\route.js:622:45)
at D:\ElasticStack\kibana\x-pack\plugins\apm\server\routes\apm_routes\register_apm_server_routes.js:143:13
at Router.handle (D:\ElasticStack\kibana\src\core\server\http\router\router.js:163:30)
at handler (D:\ElasticStack\kibana\src\core\server\http\router\router.js:124:50)
at exports.Manager.execute (D:\ElasticStack\kibana\node_modules\@hapi\hapi\lib\toolkit.js:60:28)
at Object.internals.handler (D:\ElasticStack\kibana\node_modules\@hapi\hapi\lib\handler.js:46:20)
at exports.execute (D:\ElasticStack\kibana\node_modules\@hapi\hapi\lib\handler.js:31:20)
at Request._lifecycle (D:\ElasticStack\kibana\node_modules\@hapi\hapi\lib\request.js:371:32)
at Request._execute (D:\ElasticStack\kibana\node_modules\@hapi\hapi\lib\request.js:281:9)
Response: {
error: {
root_cause: [
{
type: 'script_exception',
reason: 'link error',
script_stack: [ "doc['system.memory.actual.free']", ' ^---- HERE' ],
script: "1 - doc['system.memory.actual.free'] / doc['system.memory.total']",
lang: 'expression'
}
],
type: 'search_phase_execution_exception',
reason: 'all shards failed',
phase: 'query',
grouped: true,
failed_shards: [
{
shard: 0,
index: '.ds-metrics-apm.internal-default-2022.04.17-000001',
node: 'KsqpLySITbOWAlCPlvsdSg',
reason: {
type: 'script_exception',
reason: 'link error',
script_stack: [ "doc['system.memory.actual.free']", ' ^---- HERE' ],
script: "1 - doc['system.memory.actual.free'] / doc['system.memory.total']",
lang: 'expression',
caused_by: {
type: 'parse_exception',
reason: 'Field [system.memory.actual.free] does not exist in mappings'
}
}
}
]
},
status: 400
}
我比较了服务器和代理配置,但没有发现任何差异。为什么会出现此消息和错误,我该如何解决?
两周前就发现了问题,忙了几天发到这里。另外,我认为这是一个错误。
在一般且快速的回答中,您应该添加包含 CPU 和内存基准的 APM 指标。在下面几行中,我详细描述了我的案例。
Windows Server 2022 VPS 是一个开发测试环境,我用Elastic APM库开始了我的项目。该库收集 CPU 和内存指标,并在默认配置下将它们作为 APM 指标发送。之后,我更改了我的库并使用了 OpentTelemetry。新的不发送 CPU 和内存基准测试,我在测试中忽略了它,因为它对我的使用并不明显。当我使用 Elastic 的全新安装从开发环境转移到暂存环境时,出现了一个错误。经过一些调试,我发现如果我添加 CPU 和内存指标,问题就会解决。我通过使用我的第一个 Elastic APM 库发送它们来添加指标,但其他人可以使用 Kibana 并添加一些虚假指标。第二种方法,可以看Ovidiu comment.