Amazon Managed Prometheus의 정보를 표시하는 방법은 무엇입니까?

15224 단어 tutorialsreawsdevops
AMP(Amazon Managed Prometheus)를 사용하면 특히 확장 가능한 플랫폼을 찾을 때 Prometheus로 많은 것을 관리할 필요가 없기 때문에 정말 유용할 수 있습니다.

그러나 현재 데이터, 규칙, 알람을 확인할 수 있는 예쁜 인터페이스가 없습니다... 그래서 여기에 옵니다Prom-UI!


무도회



Prom-UI는 Prometheus의 웹 인터페이스이지만 독립형 모드에서 실행할 수 있도록 추출되었으며 데이터를 검색할 위치를 정의할 수 있는 구성이 있습니다!


사용 방법 ?



첫째, Prom-UI는 AWS에 연결할 수 없으므로 AWS에서 약간의 설정이 필요하고 다른 도구를 사용하여 작동합니다.

1 - AWS에서 설정



(이 경우 이미 AMP 설정이 있고 작업 공간이 정의되어 있습니다.)

AWS에서는 AMP의 데이터에 액세스할 수 있도록 IAM 역할을 정의해야 합니다.
  • IAM 콘솔의 탐색 창에서 역할을 선택합니다
  • .
  • 역할 생성을 선택하고 사용자 정의 신뢰 정책을 선택합니다.
  • 사용자 정의 신뢰 정책을 다음 정책으로 바꿉니다. 업데이트 필드 Account Number , region , OpenID conect ID , namespace & service account name

  • {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Federated": "arn:aws:iam::<Account Number>:oidc-provider/oidc.eks.<region>.amazonaws.com/id/<OpenID Connect ID>"
                },
                "Action": "sts:AssumeRoleWithWebIdentity",
                "Condition": {
                    "StringEquals": {
                        "oidc.eks.<region>.amazonaws.com/id/<OpenID Connect ID>:sub": "system:serviceaccount:<namespace>:<service account name>"
                    }
                }
            }
        ]
    }
    


    이 경우 Prom-UI 앱은 EKS 클러스터에 배포됩니다. OpenID Connect ID는 AWS EKS 콘솔의 필드OpenID Connect provider URL에서 검색할 수 있습니다.
  • 다음 선택
  • 정책 생성을 클릭하면 새 탭이 열립니다
  • .
  • JSON 탭에 다음 정책을 붙여넣습니다.

  • {
        "Statement": [
            {
                "Action": [
                    "aps:ListRules",
                    "aps:ListAlertManagerAlerts",
                    "aps:ListTagsForResource",
                    "aps:GetLabels",
                    "aps:ListRuleGroupsNamespaces",
                    "aps:GetAlertManagerStatus",
                    "aps:GetAlertManagerSilence",
                    "aps:ListAlertManagerAlertGroups",
                    "aps:DescribeAlertManagerDefinition",
                    "aps:QueryMetrics",
                    "aps:DescribeRuleGroupsNamespace",
                    "aps:GetMetricMetadata",
                    "aps:DescribeWorkspace",
                    "aps:ListAlerts",
                    "aps:DescribeLoggingConfiguration",
                    "aps:ListAlertManagerSilences",
                    "aps:ListWorkspaces",
                    "aps:GetSeries",
                    "aps:ListAlertManagerReceivers"
                ],
                "Effect": "Allow",
                "Resource": "*",
                "Sid": "VisualEditor0"
            }
        ],
        "Version": "2012-10-17"
    }
    


  • 다음을 클릭하고 검토
  • 정책의 이름을 정의하고 정책 생성을 클릭합니다.
  • 규칙을 생성하던 탭으로 돌아가십시오
  • .
  • 정책 목록을 새로 고치고 방금 만든 정책을 선택합니다
  • .
  • 그런 다음 다음을 클릭하고 역할 이름을 지정하고 역할 만들기를 클릭합니다.
  • 새로 생성된 역할을 검색하고 해당 ARN을 가져옵니다.



  • 2 - Kubernetes에서 설정



    이제 AWS에서 모든 것이 준비되었으므로 모든 것이 작동하도록 Kubernetes에서 항목을 설정할 수 있습니다!

    서비스 계정



    다음 템플릿을 사용하여 서비스 계정을 생성합니다. 여기서 arn를 생성된 역할의 ARN으로, service account namenamespace를 역할을 생성하는 동안 사용한 값으로 바꿔야 합니다.

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      annotations:
        eks.amazonaws.com/role-arn: <arn>
      name: <service account name>
      namespace: <namespace>
    


    전개



    배포의 경우 교체해야 하는 다음 배포 구성을 사용할 수 있습니다.
  • deployment name
  • namespace
  • Workspace UUID - AMP 작업공간의 UUID
  • service account name

  • apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: <deployment name>
      namespace: <namespace>
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: prom-ui
      strategy:
        rollingUpdate:
          maxSurge: 25%
          maxUnavailable: 25%
        type: RollingUpdate
      template:
        metadata:
          labels:
            app: prom-ui
        spec:
          containers:
          - env:
            - name: PROMETHEUS_SRC_API
              value: http://localhost:8005/workspaces/ws-<workspace UUID>
            image: adaendraa/prom-ui:1.0.2
            livenessProbe:
              failureThreshold: 6
              httpGet:
                path: /health-check
                port: http
                scheme: HTTP
              periodSeconds: 5
              successThreshold: 1
              timeoutSeconds: 3
            name: rules-ui
            ports:
            - containerPort: 3000
              name: http
              protocol: TCP
            readinessProbe:
              failureThreshold: 3
              httpGet:
                path: /health-check
                port: http
                scheme: HTTP
              periodSeconds: 5
              successThreshold: 1
              timeoutSeconds: 3
          - args:
            - --name
            - aps
            - --region
            - <region>
            - --host
            - aps-workspaces.us-east-1.amazonaws.com
            - --port
            - :8005
            image: public.ecr.aws/aws-observability/aws-sigv4-proxy:1.0
            imagePullPolicy: IfNotPresent
            name: aws
            ports:
            - containerPort: 8005
              name: aws-sigv4-proxy
              protocol: TCP
            resources: {}
            terminationMessagePath: /dev/termination-log
            terminationMessagePolicy: File
          serviceAccount: <service account name>
          serviceAccountName: <service account name>
    


    배포는 매우 간단하며 2개의 컨테이너가 포함된 배포가 있습니다.

  • aws : AWS와 통신하는 데 도움이 되는 AWS sigV4 컨테이너

  • prom-ui : AWS Sig V4 컨테이너를 통해 AMP에서 데이터를 검색하기 위해 http://localhost:8005/workspaces/ws-<workspace UUID>를 가리키는 웹 UI 앱입니다.



  • 그런 다음 제대로 사용할 수 있도록 이 배포를 노출해야 합니다(상황에 따라 수행할 수 있는 방법이 많기 때문에 이에 대해서는 언급하지 않겠습니다).

    모든 것이 올바른지 확인하려면 kubectl port-forward 를 사용할 수 있습니다.


    그것이 당신을 도울 수 있기를 바랍니다! 🍺

    좋은 웹페이지 즐겨찾기