awscurl을 사용하여 Prometheus 호환 API 쿼리 - Amazon Managed Service for Prometheus

awscurl을 사용하여 Prometheus 호환 API 쿼리

Amazon Managed Service for Prometheus에 대한 API 요청은 SigV4로 서명해야 합니다. awscurl을 사용하여 쿼리 프로세스를 간소화할 수 있습니다.

awscurl을 설치하려면 Python 3와 pip 패키지 관리자가 설치되어 있어야 합니다.

Linux 기반 인스턴스에서는 다음 명령이 awscurl을 설치합니다.

$ pip3 install awscurl

macOS 시스템에서는 다음 명령이 awscurl을 설치합니다.

$ brew install awscurl

다음 예제는 awscurl 쿼리 샘플입니다. 리전, Workspace-idQUERY 입력을 사용 사례에 적합한 값으로 바꿉니다.

# Define the Prometheus query endpoint URL. This can be found in the Amazon Managed Service for Prometheus console page # under the respective workspace. $ export AMP_QUERY_ENDPOINT=https://aps-workspaces.Region.amazonaws.com/workspaces/Workspace-id/api/v1/query # credentials are infered from the default profile $ awscurl -X POST --region Region \ --service aps "${AMP_QUERY_ENDPOINT}" -d 'query=QUERY' --header 'Content-Type: application/x-www-form-urlencoded'
참고

쿼리 문자열은 URL로 인코딩해야 합니다.

query=up과 같은 쿼리의 경우 다음과 같은 결과를 얻을 수 있습니다.

{ "status": "success", "data": { "resultType": "vector", "result": [ { "metric": { "__name__": "up", "instance": "localhost:9090", "job": "prometheus", "monitor": "monitor" }, "value": [ 1652452637.636, "1" ] }, ] } }

awscurl이 제공된 요청에 서명하도록 하려면 다음 방법 중 하나로 유효한 보안 인증을 전달해야 합니다.

  • IAM 역할의 액세스 키 ID와 보안 키를 제공합니다. https://console.aws.amazon.com/iam/에서 역할에 대한 액세스 키와 보안 키를 찾을 수 있습니다.

    예:

    $ export AMP_QUERY_ENDPOINT=https://aps-workspaces.Region.amazonaws.com/workspaces/Workspace_id/api/v1/query $ awscurl -X POST --region <Region> \ --access_key <ACCESS_KEY> \ --secret_key <SECRET_KEY> \ --service aps "$AMP_QUERY_ENDPOINT?query=<QUERY>"
  • .aws/credentials/aws/config 파일에 저장된 구성 파일을 참조합니다. 또한 사용할 프로파일의 이름을 지정하도록 선택할 수 있습니다. 지정하지 않으면 default 파일이 사용됩니다. 예:

    $ export AMP_QUERY_ENDPOINT=https://aps-workspaces.<Region>.amazonaws.com/workspaces/<Workspace_ID>/api/v1/query $ awscurl -X POST --region <Region> \ --profile <PROFILE_NAME> --service aps "$AMP_QUERY_ENDPOINT?query=<QUERY>"
  • EC2 인스턴스와 연결된 인스턴스 프로파일을 사용합니다.

awscurl 컨테이너를 사용하여 쿼리 요청 실행

다른 버전의 Python을 설치하는데 관련 종속성을 실행할 수 없는 경우 컨테이너를 사용하여 awscurl 애플리케이션과 해당 종속성을 패키징할 수 있습니다. 다음 예제에서는 Docker 런타임을 사용하여 awscurl을 배포하지만 OCI 호환 런타임과 이미지가 모두 잘 작동합니다.

$ docker pull okigan/awscurl $ export AMP_QUERY_ENDPOINT=https://aps-workspaces.Region.amazonaws.com/workspaces/Workspace_id/api/v1/query $ docker run --rm -it okigan/awscurl --access_key $AWS_ACCESS_KEY_ID --secret_key $AWS_SECRET_ACCESS_KEY \ --region Region --service aps "$AMP_QUERY_ENDPOINT?query=QUERY"