如何将Amazon Managed Grafana连接到EKS集群中的Loki
连接Amazon Managed Grafana(AMG)到EKS集群内的Loki实例
根据你的网络架构和安全需求,有几种可行的连接方案,以下是具体实现步骤:
方案1:公网暴露Loki(测试/非敏感场景)
这种方式快速便捷,但不建议用于生产环境:
- 为Loki创建LoadBalancer类型的Service,将其暴露到公网:
apiVersion: v1 kind: Service metadata: name: loki-public namespace: <your-loki-namespace> spec: type: LoadBalancer selector: app: loki # 匹配你的Loki Pod标签 ports: - protocol: TCP port: 3100 targetPort: 3100 - 应用配置后,获取Loki的公网地址:
查看输出的kubectl get svc loki-public -n <your-loki-namespace>EXTERNAL-IP字段,拼接成完整URL(比如http://xxx.xxx.xxx.xxx:3100) - 进入AMG工作区,添加Loki数据源:
- 左侧菜单选择「Data sources」→ 搜索「Loki」→ 点击「Add data source」
- 在「URL」栏填入上面的公网地址
- 如果Loki启用了基本认证,在「Auth」区域填写对应的用户名和密码
- 点击「Save & test」验证连接是否成功
方案2:私有网络连接(生产环境推荐)
通过VPC对等连接或Amazon PrivateLink,让AMG和EKS集群在私有网络内通信,避免公网暴露:
子步骤1:打通VPC网络
- VPC对等连接:
- 在AWS控制台创建AMG所在VPC与EKS集群VPC的对等连接,双方接受连接请求
- 配置两个VPC的路由表,添加指向对方CIDR的路由,下一跳为对等连接ID
- 调整EKS节点安全组规则,允许AMG VPC的CIDR访问3100端口
- Amazon PrivateLink:
- 为Loki的ClusterIP Service创建端点服务:
apiVersion: v1 kind: Service metadata: name: loki-privatelink namespace: <your-loki-namespace> annotations: service.beta.kubernetes.io/aws-load-balancer-type: "nlb" service.beta.kubernetes.io/aws-load-balancer-scheme: "internal" spec: type: LoadBalancer selector: app: loki ports: - port: 3100 targetPort: 3100 - 在AMG所在VPC创建端点,连接到上面的端点服务
- 为Loki的ClusterIP Service创建端点服务:
子步骤2:配置AMG数据源
- 使用Loki的私有地址:
- 如果是VPC对等,可直接用集群内部DNS:
http://loki.<your-loki-namespace>.svc.cluster.local:3100 - 如果是PrivateLink,使用端点的DNS名称
- 如果是VPC对等,可直接用集群内部DNS:
- 进入AMG添加Loki数据源,填入私有地址
- 若Loki启用了AWS IAM认证,在数据源配置中开启「AWS Signature Version 4」,选择对应区域,并确保AMG的服务角色拥有访问Loki的IAM权限(比如允许
loki:Query等动作) - 点击「Save & test」完成验证
方案3:基于IRSA的IAM认证(生产环境增强版)
如果你的Loki配置了IAM Roles for Service Accounts(IRSA)认证:
- 确保AMG的服务角色能访问EKS集群的OIDC提供商,并且拥有调用Loki API的权限
- 在Loki的配置文件中,添加AMG角色到允许访问的IAM策略列表
- 在AMG的Loki数据源配置中,开启「AWS Signature Version 4」,填入Loki的私有地址,保存后测试连接
常见问题排查
- 安全组/网络策略:确认EKS节点安全组允许AMG的流量访问3100端口;若启用NetworkPolicy,需允许AMG的IP范围访问Loki Service
- 认证配置:如果Loki开启了任何认证方式(基本认证、IAM、OAuth),必须在AMG数据源中对应配置,否则连接会失败
- 网络连通性:可在AMG所在VPC的测试实例中执行
curl <loki-address>/ready,验证是否能访问Loki的健康检查端点
内容的提问来源于stack exchange,提问作者DAN
相关产品推荐
相关产品推荐

