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.