AWS跨账号EKS环境下应用账户promtail访问监控账户Loki配置问题
问题根因定位
你当前的Istio VirtualService中Loki路由的rewrite配置错误是访问失效的核心原因:默认部署的Loki服务根路径为/,没有/loki前缀,你现在配置的rewrite.uri: /loki会导致转发到Loki的请求路径变成/loki/xxx,Loki无法匹配该路由直接返回404。
可行配置方案
你可以选择以下任意一种方案适配路径规则:
方案一:修改VirtualService转发规则(无需调整Loki配置)
直接更新监控账户的VirtualService配置,去掉转发给Loki的路径前缀即可:
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: grafana-vs namespace: monitoring spec: gateways: - my-gateway hosts: - '*' http: - match: - uri: prefix: /grafana/ name: grafana-ui rewrite: uri: / route: - destination: host: prometheus-operator-grafana.monitoring.svc.cluster.local port: number: 80 - match: - uri: prefix: /loki name: loki-log-api rewrite: uri: / # 仅修改这一行,去掉路径前缀后再转发给Loki route: - destination: host: loki.monitoring.svc.cluster.local port: number: 80
方案二:给Loki配置统一路径前缀(无需修改VirtualService)
如果你要保留/loki前缀转发规则,直接在loki-stack的helm安装参数中添加如下配置即可:
loki: server: http_prefix: /loki
配置升级后Loki本身就会处理带/loki前缀的请求,不需要调整VirtualService的rewrite规则。
后续跨账号连通配置
- 网络打通:在两个AWS账号的VPC之间配置VPC对等连接或者Transit Gateway,确保应用账户的EKS集群可以访问监控账户的内部ALB
- 安全组放行:在监控账户ALB的安全组中,放行应用账户EKS Pod/VPC CIDR的80/443端口入站规则,同时配置对应路由表确保网络回程正常
- Promtail配置:在应用账户的promtail配置中直接填入ALB地址作为推送目标:
clients: - url: http://internal-k8s-istiosys-ingressa-25a256ef4d-1368971909.us-east-1.elb.amazonaws.com/loki/loki/api/v1/push
如果需要启用HTTPS,只需要给ALB配置ACM证书,将Ingress监听端口改为443,再把promtail的url前缀改为https即可。
验证方式
配置生效后可以在应用账户的Pod内执行如下命令验证连通性:curl http://internal-k8s-istiosys-ingressa-25a256ef4d-1368971909.us-east-1.elb.amazonaws.com/loki/ready
返回200且内容为ready即为配置正常。
内容的提问来源于stack exchange,提问作者Shashikant Kulkarni
相关产品推荐
相关产品推荐

