Amazon Web Services 한국 블로그

Amazon Managed Service for Prometheus 정식 출시 – Alert Manager 및 Ruler 추가 지원

AWS re:Invent 2020에서 Amazon Managed Service for Prometheus미리보기로 소개 하였습니다. 오픈 소스인 Prometheus 호환 가능 모니터링 서비스이며, 대량의 컨테이너화된 애플리케이션을 쉽게 모니터링할 수 있습니다. Amazon Managed Service for Prometheus를 사용하면 Prometheus 쿼리 언어 (PromQL)를 이용해 운영 지표의 수집, 저장, 알림 및 쿼리의 크기를 조정하고 보호하기 위해 필요한 기본 인프라를 관리할 필요 없이, 컨테이너화된 워크로드의 성능을 모니터링할 수 있습니다.

Amazon Managed Service for Prometheus는 사용자의 모니터링 요구가 증가하면 자동으로 크기를 조정합니다. AWS 보안 및 규정 준수 기능을 통합하는 여러 가용 영역(AZ)에 배포되는 고가용성 서비스입니다. 해당 서비스는 PromQL에 대한 기본 지원 뿐만 아니라 오픈 소스 커뮤니티에서 유지 관리하는 150개 이상의 Prometheus 익스포터로부터 프로메테우스 지표를 수집할 수 있는 기능을 제공합니다.

Amazon Managed Service for Prometheus를 사용하면 Amazon Elastic Compute Cloud(Amazon EC2), Amazon Elastic Container Service(Amazon ECS)Amazon Elastic Kubernetes Service(Amazon EKS) 환경에서 AWS Distro for OpenTelemetry(ADOT) 또는 Prometheus 서버를 수집 에이전트로 사용하여 Prometheus 지표를 수집할 수 있습니다.

미리 보기 기간 동안, 저희는 고가용성 알림 관리자를 오픈 소스 Cortex 프로젝트에 제공했습니다. 이 프로젝트는 Prometheus를 위한 수평 확장 가능, 고가용성, 장기 스토어를 제공합니다. 또한 수집된 지표 샘플의 가격을 최대 84%까지 낮췄으며, ADOT에서 지원하는 AWS Lambda 애플리케이션에 대한 지표 수집을 지원했습니다.

오늘 Amazon Managed Service for Prometheus를 정식 출시합니다. 이 서비스는 Amazon Simple Notification Service(Amazon SNS)를 알림 관리자의 알림 수신자를 대상으로 지원하는 알림 관리자 및 룰러 등의 신규 기능을 포함합니다. Amazon SNS를 통해 이메일, 웹훅, Slack, PagerDuty, OpsGenie, 또는 VictorOps 등의 대상에 Amazon SNS를 통합할 수 있습니다.

알림 관리자 및 룰러 시작하기
AWS 관리 콘솔에서 시작하려면, 하나 이상의 Prometheus 서버에서 지표를 저장, 알림 및 쿼리 전용 논리적 공간인 WorkSpace를 생성하기만 하면 됩니다. Helm을 사용하여 Prometheus 지표를 이 WorkSpace에 수집하도록 설정하고, 해당 지표를 쿼리할 수 있습니다. 자세한 내용은 Amazon Managed Service for Prometheus 사용 설명서의 시작하기를 참조하십시오.

일반 배포 시점에 새로운 알림 관리자 및 규칙 관리 기능을 추가했습니다. 해당 서비스는 기록 규칙알림 규칙의 두 가지 규칙 유형을 지원합니다. 이러한 규칙 파일은 독립 실행형 Prometheus와 동일한 YAML 형식이며, 구성한 다음에는 정기적으로 평가할 수 있습니다.

일련의 규칙을 사용하여 WorkSpace을 구성하려면 네임스페이스 추가규칙 관리에서 고르고 YAML 형식 규칙 파일을 선택합니다.

예제 규칙 파일은 컨테이너 워크로드의 CPU 사용량 지표를 기록하고, 5분 간 CPU 사용량이 높을 경우 알림을 트리거합니다.

다음으로 신규 Amazon SNS 주제를 생성하거나, 알림을 라우팅할 기존 SNS 주제를 재사용할 수 있습니다. 알림 관리자는 알림을 SNS 및 SNS 경로를 통해 다운스트림 위치로 라우팅합니다. 구성한 알림 규칙은 알림 관리자에 알림를 발생시켜서 SNS 수신기를 통해 알림을 중복 제거, 그룹화, 그리고 Amazon SNS로 라우팅합니다. 알림에 대한 이메일 알림을 받으려면 보유한 SNS 주제에 대한 이메일 구독을 구성하십시오.

Amazon Managed Service for Prometheus에 사용자의 SNS 주제에 대한 메시지 전송 권한을 부여하려면, 전송할 주제를 선택하고, 액세스 정책 블록을 추가합니다.

{
    "Sid": "Allow_Publish_Alarms",
    "Effect": "Allow",
    "Principal": {
        "Service": "aps.amazonaws.com"
    },
    "Action": [
        "sns:Publish",
        "sns:GetTopicAttributes"
    ],
    "Resource": "arn:aws:sns:us-east-1:123456789012:Notifyme"
}

알림를 받을 주제가 있다면, 알림 관리자 구성에서 이 SNS 수신기를 구성할 수 있습니다. 예제 구성 파일은 Prometheus와 형식이 동일하나, 서비스의 알림 관리자 내 alertmanager_config: 블록 하위로 해당 구성을 제공해야 합니다. 알림 관리자 구성에 대한 자세한 내용은 Prometheus 가이드의 알림 구성을 참조하십시오.

alertmanager_config:
  route:
    receiver: default
    repeat_interval: 5m
  receivers:
    name: default
    sns_configs:
      topic_arn: "arn:aws:sns:us-east-1:123456789012:Notifyme"
      sigv4:
        region: us-west-2
      attributes:
        key: severity
        value: "warning"

SNS 연결을 설정하는 동안 생성한 주제에 대한 topic_arn을 변경할 수 있습니다. 알림 관리자 구성에서 SNS 수신기에 대해 자세히 알아보려면 Prometheus Github 페이지에서 Prometheus SNS 수신기를 방문하십시오.

알림 관리자를 구성하려면 알림 관리자를 열고 정의 추가를 선택한 다음, YAML 형식의 알림 구성 파일을 선택합니다.

Prometheus가 알림을 생성하여 알림 관리자로 전송하면 ListAlerts 엔드포인트를 눌러 시스템의 모든 활성 알림을 확인하여 알림을 쿼리할 수 있습니다. 엔드포인트에 도달하면 활성 발생 알림 목록에서 알림을 확인할 수 있습니다.

$ curl https://aps-workspaces.us-east-1.amazonaws.com/workspaces/ws-0123456/alertmanager/api/v2/alerts
GET /workspaces/ws-0123456/alertmanager/api/v2/alerts HTTP/1.1
Host: aps-workspaces.us-east-1.amazonaws.com
X-Amz-Date: 20210628T171924Z
...
[
    "receivers": [
      {
        "name": "default"
      }
    ],
    "startsAt": "2021-09-24T01:37:42.393Z",
    "updatedAt": "2021-09-24T01:37:42.393Z",
    "endsAt": "2021-09-24T01:37:42.393Z",
    "status": {
      "state": "unprocessed",
    },
    "labels": {
      "severity": "warning"
    }
  }
]

알림에 성공하면 SNS 주제에서 알림 세부 정보를 담은 이메일을 수신할 수 있습니다. 또한 JSON 형식으로 메시지를 출력하여, AWS Lambda 또는 기타 API 및 웹훅 수신 엔드포인트에서 SNS의 다운스트림으로 쉽게 처리할 수 있습니다. 예를 들어 메시지 변환 또는 트리거 자동화를 위해 SNS를 Lambda 함수와 연결할 수 있습니다. 자세한 내용은 Amazon Managed Service for Prometheus 사용 설명서의 JSON을 SNS로 출력하도록 알림 관리자 구성 단원을 참조하십시오.

Amazon SNS에서 다른 알림 대상으로 전송
Amazon SNS를 이메일, 웹훅, Slack, PagerDuty, OpsGenie, 또는 VictorOps 등의 다양한 아웃바운드 대상에 Amazon SNS를 통합할 수 있습니다.

  • 웹훅 – 웹훅 엔드포인트에 메시지를 출력하도록 기존 SNS 주제를 구성하려면 먼저 기존 주제에 대한 구독을 생성하십시오. 활성화되면 HTTP 엔드포인트가 SNS 알림을 수신해야 합니다.
  • Slack – 이메일을 수신하여 슬랙 채널로 전달할 수 있는 슬랙의 이메일-채널 통합과 통합하거나 람다 함수를 사용하여 SNS 알림을 슬랙으로 다시 작성할 수 있습니다. 자세한 내용은 Slack 채널로 이메일 전달 단원 및 SNS 메시지를 Slack으로 변환하는 AWS Lambda 함수 단원을 참조하십시오.
  • PagerDuty – PagerDuty로 전송하는 페이로드를 사용자 정의하려면 알림 관리자 정의에서 template_files 블록을 조정 또는 업데이트하여, SNS로 전송되는 메시지 생성에 사용하는 템플릿을 사용자 지정합니다.

정식 출시
Amazon Managed Service for Prometheus는 지금 미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(오레곤), EU(프랑크푸르트), EU(아일랜드), EU(스톡홀름), 아시아 태평양(싱가포르), 아시아 태평양(시드니) 및 아시아 태평양(도쿄)의 9개 AWS 리전에서 사용할 수 있습니다.

수집, 쿼리 및 저장된 지표를 기준으로 사용한 만큼만 비용을 지불하면 됩니다. AWS 프리 티어의 일부로 수집한 4천만 개의 메트릭 샘플과 월별 10GB의 지표를 저장하는 Amazon Managed Service for Prometheus를 시작할 수 있습니다. 자세한 내용은 요금 페이지를 참조하세요.

AWS에서의 AWS 관찰 가능성에 대해 알아보려면 애플리케이션에 대한 모니터링 및 관찰 가능성을 설정하기 위해 AWS가 제공하는 다양한 도구 세트를 직접 체험해 볼 수 있는 One Observability Workshop을 방문하십시오.

Amazon Managed Service for Prometheus의 AWS 포럼 또는 평소 이용하는 AWS Support 연락처를 통해 피드백을 보내주시기 바랍니다.

Channy