启用Xpack Security后无法获取APM日志的问题求助
解决方案:启用Xpack Security后APM及后端服务认证失败问题
1. 修复APM Server的认证配置
从APM Server日志的401错误来看,它未正确携带认证信息连接Elasticsearch,按以下步骤排查:
- 验证环境变量加载情况:进入APM Server Pod,执行
printenv | grep ELASTICSEARCH,确认ELASTICSEARCH_USERNAME和ELASTICSEARCH_PASSWORD存在且值正确。若未加载,检查容器配置是否正确传递了环境变量。 - 手动测试认证连接:在APM Server容器内执行命令,测试Elasticsearch连接:
若返回401,说明密码错误或curl -u apm_system:yyyyyyyyy http://elasticsearch:9200apm_system用户权限不足。可重新执行elasticsearch-setup-passwords auto生成新密码并更新配置,或检查apm_system的角色权限(默认apm_system角色已包含APM数据写入的必要权限)。
2. 配置后端服务的Elasticsearch认证
后端服务直接写入audit_logs索引时未携带认证信息,导致401错误,需做以下配置:
- 在后端服务的Elasticsearch客户端配置中添加用户名和密码。建议创建专用日志写入用户(如
audit_writer)代替elastic超级用户:- 用
elastic账号登录Kibana,进入Stack Management > Security > Users创建新用户audit_writer。 - 为该用户分配自定义角色,包含
audit_logs*索引的create_index、write、read权限。 - 在后端服务配置中更新Elasticsearch连接参数,填入该用户的账号密码。
- 用
3. 确认Elasticsearch安全配置生效
检查Elasticsearch Pod的安全配置是否正确加载:
- 进入Elasticsearch Pod,执行
printenv | grep xpack.security.enabled,确认值为true。 - 执行
curl -u elastic:xxxxxxxxx http://localhost:9200(替换为elastic用户的实际密码),验证Elasticsearch的HTTP接口是否已开启认证要求。
4. 重启服务并验证
完成配置后,按以下顺序重启Pod:
- Elasticsearch
- APM Server
- 后端服务
之后查看APM Server日志是否仍有401错误,同时在Kibana的Discover中检查APM索引和audit_logs索引是否有新数据写入。
内容的提问来源于stack exchange,提问作者Avishka Pasindu
相关产品推荐
相关产品推荐

