ElasticAPM、APM服务配置安全接入、TSL/SSL下的accessToken方式如何配置accessToken接入,官方文档地址在apm的配置文件中apm-server.yaml中的-serverapm-server.auth.secret_token自定义一个字符串,比如:`apm-server.auth.secret_token:123456xxx`然后在你的客户端Agent中配置:Node.js示例:源码Github地址varapm=require('elastic-apm-node').start({//从package.json覆盖服务名称//允许的字符:a-z、A-Z、0-9、-、_和空格serviceName:'zipcodeservice',//如果APMServer需要token就使用secretToken:'123456xxx',//注意这里//设置自定义APMServerURL(默认:http://localhost:8200)serverUrl:'https://localhost:8200',})然后重启apm-server,重启客户端,登录kibana,就可以在APM控制台看到实例了。如果agent没有配置secretToken访问,会报错。以上过程是SSL/TSL访问,没有配置apm-server,会带来安全问题。凭据很容易通过http请求被窃取,所以需要配置为https服务。这是官方推荐的做法。官网SSL/TSL配置文档地址是英文的,不详细。推荐更详细的教程。本教程中的大部分操作都是正确的,但有些是错误的,例如下面的代码:varapm=require('elastic-apm-node').start({//Overrideservicenamefrompackage.json//Allowedcharacters:a-z,A-Z,0-9,-,_,andspaceserviceName:'zipcodeservice',//APMServer需要token时使用secretToken:'1234561',//ca配置好后,已经是httpsserver//设置自定义APMServerURL(default:http://localhost:8200)serverUrl:'http://localhost:8200'//这里是错误的serverUrl:'https://localhost:8200'//这个是正确的verifyServerCert:true,serverCaCertFile:"ca.crt"})如果不更正,按照教程中的代码即可,apm-server会报APMServertransporterror(400):UnexpectedAPMServerresponse\nClientsentanHTTPrequesttoanHTTPSserver.\n”,意思是客户端向HTTPS服务器发送了HTTP请求。另外,在教程中:注意:我们可以使用如下命令发送一个.crt证书转换为.pem证书:opensslx509-inmycert.crt-outmycert.pem-outformPEM这个不影响我们的配置,你不用看,我看教程的时候就受影响了。PS:还有一点需要注意。生成证书时教程中传入的名字是localhost,生成的证书也是localhost.crt和localhost.key。这里是你上次访问的https地址(https://localhost:8200),相应的,不能改成其他的。至于原理,是https原理的问题,这里不再赘述。教程是在Mac上操作的,我是在windows下操作的,是可以的,但是我没有在linux下实际操作过。PS:如果Agent在连接apm-server时出现错误,错误提示很清楚。当出现问题时,你首先想到的是阅读这里的报错信息(Agent的报错信息,apm-server的报错信息)。真心感谢原教程,原教程写的很好,很详细,但是有一点点错误,之所以重新写一篇文章是因为我实在是不太喜欢CSDN,所以就没有了'不要在CSDN下留言。所以在这里写下所有的补充。如有错误,请指正!
