0

这是我的设置。

我有 2 个 AWS 账户。

  1. 应用程序帐户
  2. 监控账户

应用账户有 EKS + Istio + 应用相关的微服务 + promtail 代理。

监控账户在 EKS + Istio + 内有集中式日志系统(Grafana & Prometheus & loki pods running)

从应用程序帐户,我想将日志推送到 Loki on Monitoring a/c。我尝试在监控 a/c 之外公开 Loki 服务,但我遇到了将 loki url 设置为 https://<DNS_URL>/loki 的问题。我通过在此处此处使用建议来尝试进行此更改,但这对我不起作用。我已经从这个 url安装了 loki-stack

问题是如何从应用程序帐户访问 loki URL,以便可以在应用程序 a/c 的 promtail 中对其进行配置?请注意,这两个帐户都在 EKS 中使用 pod,而不是独立的 loki 或 promtail。

谢谢并恭祝安康。

apiVersion: v1                                
kind: Service                                 
metadata:                                     
  annotations:                                
    meta.helm.sh/release-name: loki           
    meta.helm.sh/release-namespace: monitoring
  creationTimestamp: "2021-10-25T14:59:20Z"   
  labels:                                     
    app: loki                                 
    app.kubernetes.io/managed-by: Helm        
    chart: loki-2.5.0                         
    heritage: Helm                            
    release: loki                             
  name: loki                                  
  namespace: monitoring                       
  resourceVersion: "18279654"                 
  uid: 7eba14cb-41c9-445d-bedb-4b88647f1ebc   
spec:                                         
  clusterIP: 172.20.217.122                   
  clusterIPs:                                 
  - 172.20.217.122                            
  ports:                                      
  - name: metrics                             
    port: 80                                  
    protocol: TCP                             
    targetPort: 3100                          
  selector:                                   
    app: loki                                 
    release: loki                             
  sessionAffinity: None                       
  type: ClusterIP                             
status:                                       
  loadBalancer: {}                            
---

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  generation: 14
  name: grafana-vs
  namespace: monitoring
  resourceVersion: "18256422"
  uid: e8969da7-062c-49d6-9152-af8362c08016
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-ui
    rewrite:
      uri: /loki
    route:
    - destination:
        host: loki.monitoring.svc.cluster.local
        port:
          number: 80

---
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"networking.istio.io/v1alpha3","kind":"Gateway","metadata":{"annotations":{},"name":"my-gateway","namespace":"monitoring"},"spec":{"selector":{"istio":"ingressgateway"},"servers":[{"hosts":["*"],"port":{"name":"http","number":80,"protocol":"HTTP"}}]}}
  creationTimestamp: "2021-10-18T12:28:05Z"
  generation: 1
  name: my-gateway
  namespace: monitoring
  resourceVersion: "16618724"
  uid: 9b254a22-958c-4cc4-b426-4e7447c03b87
spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - '*'
    port:
      name: http
      number: 80
      protocol: HTTP

---
apiVersion: v1
items:
- apiVersion: networking.k8s.io/v1
  kind: Ingress
  metadata:
    annotations:
      alb.ingress.kubernetes.io/scheme: internal
      alb.ingress.kubernetes.io/target-type: ip
      kubectl.kubernetes.io/last-applied-configuration: |
        {"apiVersion":"networking.k8s.io/v1beta1","kind":"Ingress","metadata":{"annotations":{"alb.ingress.kubernetes.io/scheme":"internal","alb.ingress.kubernetes.io/target-type":"ip","kubernetes.io/ingress.class":"alb"},"name":"ingress-alb","namespace":"istio-system"},"spec":{"rules":[{"http":{"paths":[{"backend":{"serviceName":"istio-ingressgateway","servicePort":80},"path":"/*"}]}}]}}
      kubernetes.io/ingress.class: alb
    finalizers:
    - ingress.k8s.aws/resources
    generation: 1
    name: ingress-alb
    namespace: istio-system
    resourceVersion: "4447931"
    uid: 74b31fba-0f03-41c6-a63f-6a10dee8780c
  spec:
    rules:
    - http:
        paths:
        - backend:
            service:
              name: istio-ingressgateway
              port:
                number: 80
          path: /*
          pathType: ImplementationSpecific
  status:
    loadBalancer:
      ingress:
      - hostname: internal-k8s-istiosys-ingressa-25a256ef4d-1368971909.us-east-1.elb.amazonaws.com
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""

入口与 AWS ALB 相关联。

我想从 http(s)://my-alb-url/loki 之类的 ALB URL 访问 Loki 我希望我现在已经提供了所需的详细信息。让我知道。谢谢。

4

1 回答 1

0

...how can I access loki URL from applications account so that it can be configured in promtail in applications a/c?

您没有描述当您使用上面的外部 LB 时应该工作的问题,无论如何,由于此方法将通过 Internet,因此安全风险较高,出口成本考虑日志记录量。在这种情况下,您可以使用Privatelink,请参阅第 16 页共享服务。您的 promtail 将使用 ENI DNS 名称作为 loki 目标。

于 2021-10-21T04:12:51.097 回答