我有一个本地运行的elasticsearch和kibana堆栈。我想用它来跟踪一个本地运行的nodejs应用程序的APM。
我已经在一个ubuntu docker容器中安装了弹性代理作为fleet服务器。在第二个ubuntu docker容器上,我运行了我的APM弹性代理,它通过fleet服务器注册。我在kibana中的APM设置非常基本,只更改了主机和URL字段:
我使用以下代码片段(在主文件的顶部)配置了我的节点应用程序:
// Add this to the very top of the first file loaded in your app
var apm = require('elastic-apm-node').start({
serviceName: 'my-service-name',
secretToken: '',
serverUrl: 'http://apm.mydomain.com:8200',
environment: 'my-environment'
});
字符串
我在运行应用程序时收到以下错误:
{"log.level":"error","@timestamp":"2023-12-30T20:36:03.605Z","log.logger":"elastic-apm-node","ecs.version":"8.10.0","message":"APM Server transport error (503): Unexpected APM Server response when polling config\nAgent configuration infrastructure is not ready. Please retry later."}
型
当我直接查询apm代理(GET http://apm.mydomain.com:8200/)时,我收到以下响应:
{
"build_date": "2023-12-07T11:11:14-05:00",
"build_sha": "cba21e88bd0d376ec77dc77fccccfdc0c27206ac",
"publish_ready": false,
"version": "8.11.3"
}
型
有人知道为什么我的代理人不接受APM数据吗?
1条答案
按热度按时间11dmarpk1#
对于将来发现这个问题的人来说,问题是尽管我的弹性代理在kibana中被标记为健康,但由于证书验证失败(我使用自签名证书),他们无法将日志发布到我的弹性集群。
代理本身没有报告任何错误,表明证书验证失败。我能够在弹性集群日志中发现问题。
我尽可能地定义了我的CA证书,但最终不得不将以下内容添加到代理运行的docker-compose配置中,这解决了问题:
字符串