Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
이전글에서 AMP를 세팅한데 이어서 AWS Grafana를 통해 시각화를 해보자.
AWS ECS Fargate 모니터링 (1) - Side car (otel), AMP
AWS Grafana
AMP(AWS Managed Service for Prometheus)는 설치형 Prometheus와 다르게 대시보드 자체의 접근을 지원하지 않는다. 따라서 Grafana와 같은 시각화 툴로 모니터링 대시보드를 제공할 필요가 있다.
실제로 Prometheus 자체의 대시보드 보다는 전문 시각화 툴인 Grafana와 같이 사용한다.
여기서 Grafana를 AWS EC2 자체에 띄운다는 가장 간단한 솔루션이 있지만, Grafana만을 위한 VPC에 ALB와 NAT GW를 세팅하는 등의 보안 신경 써야 하는 문제가 많아진다. 무엇보다, 실제 운영 환경이라면 시각화 서버인 Grafana의 가용성을 보장할 수 있도록 Active - standby와 같은 설계까지 진행해야 한다.
따라서 시각화 서버 하나만을 위해 상당한 관리 포인트와 비용이 발생한다.
이럴때 고려할 수 있는 서비스가 AWS의 관리형 서비스이다.
관리형 서비스만이 모든 환경의 정답은 아니지만, AWS Grafana는 등록된 관리자 유저별 월 9 USD와 뷰어 유저별 월 5 USD라는 상당히 저렴한 비용으로 사용할 수 있다.
위에서 설명한 관리포인트를 모두 줄이는 데도 이 가격이면 충분히 도입해볼만 하다.
AWS Grafana 세팅
AWS Grafana는 AWS 계정으로 로그인하거나 SAML 통해 외부 로그인 서비스를 사용할 수 있다.
AWS 계정을 통한 세팅은 편리하지만 클라이언트가 이미 다른 SSO 서비스를 사용해서 이를 SAML으로 연동하는 것으로 해보자.
유명한 업체는 Okta이지만, 연동에 계속 오류가 발생해서 Onelogin으로 진행해 보았다.
인증에서 SAML을 선택해 주자.
연결 서비스는 Prometheus와 SNS(알림용)를 선택해 주자.
생성이 완료되면, SAML 세팅을 진행한다.
SAML(Onelogin) 세팅
1달 무료 이용을 제공하는 Onelogin을 통해 SAML연동을 진행해 보았다.
Applications에서 Add App을 통해 AWS Grafana를 추가한다.
Configuration에 생성한 grafana의 url을 입력한다.
이 세팅은 Onelogin에서 바로 AWS Grafana로 접속하기 위한 용도라서 중요한 세팅은 아니다.
이후 reapply로 적용 해주자.
유저 맵핑을 위해 아래와 같이 세팅한다.
원래는 아래처럼 contain으로 하나의 email에만 Admin role을 적용해야 한다.
본인은 계속 admin 접속이 안되어서 does not eqaul로 세팅했다.
세팅을 적용해 주자.
이후 Issuer URL을 선택해 복사한다.
이 URL을 AWS grafana saml 세팅의 메타데이터에 넣어주자.
이때 어설션 속성 매핑을 위와 정확히 동일하게 해 주어야 admin 로그인이 가능하다.
잘 안된다면 app Admin까지 직접 추가해 주자.
AWS Grafana와 AMP 연동
이제 그라파나의 url로 접속하면 saml을 통한 로그인이 가능하다.
Admin role 세팅에 성공해야만 아래와 같이 Admin 메뉴가 확인된다.
Data source에서 Prometheus를 선택해 주자.
이전 글에서 생성해 준 AMP의 쿼리 URL을 복사
*/api/v1/query 부분은 자동 추가되니 제거하고 붙여 넣자!*
AWS 연동에 SigV4 auth를 사용하므로 enable 해주자. 이를 통해 할당된 Role로 AWS 서비스에 연결할 수 있다.
(표시가 안된다면 버전 업이 필요할 수 있다. 세팅 기준은 9.4 버전이다.)
EC2가 아니므로 AWS grafana의 Role을 사용해야 한다.
사실 해당 Role은 생성 시, AMP 연결을 선택하였으므로 생성된 권한이 이미 있다.
이대로 Data source save test를 하면 성공한다.
Grafana 대시보드 세팅
build a dashboard로 연동을 확인해 보자.
ECS Fargate의 Task들의 CPU util이 정상적으로 확인된다.
Import dashboard로 대시보드를 세팅해 보자.
import 방법
https://grafana.com/grafana/dashboards/17419-aws-ecs-fargate-template-for-cloudwatch-exporter/
ecs fargate dashboard
https://ecsworkshop.com/monitoring/amp_amg/visualize_metrics/
해당 dash board는 지표이름이 맞지 않아서 세부 쿼리 세팅을 해주면 된다.
각 클러스터에서 동작하는 태스크 개수를 알기 위해 직접 쿼리를 세팅해 보자.
count(count(ecs_task_cpu_reserved_None{aws_ecs_task_id=~".*", aws_ecs_cluster_name="<클러스터 이름>"}) by (aws_ecs_task_id))
또는
count(count(ecs_task_cpu_utilized_None{TaskId=~".*", ClusterName="app-ecs"}) by (TaskId))
이러면 특정 클러스터에서의 태스크 개수를 셀 수 있다.
이렇게 각 패널을 원하는 대로 세팅해 주면 ECS Fargate 대상으로도 실시간 모니터링이 가능해진다.
참조
https://docs.aws.amazon.com/grafana/latest/userguide/AMG-SAML-providers-onelogin.html
https://onelogin.service-now.com/support?id=kb_article&sys_id=e555e5211bb1b450b9d8cb3f034bcbf1
'Cloud > AWS' 카테고리의 다른 글
AWS ALB의 Path routing 활용하기 (0) | 2024.07.13 |
---|---|
AWS Code Build buildspec , 컨테이너 빌드 및 ECR 전송 (Terraform) (0) | 2024.07.06 |
AWS ECS Fargate 모니터링 (1) - Side car (otel), AMP (0) | 2024.07.02 |
AWS ECS Task와 Service 그리고 Auto scaling (Terraform) (0) | 2024.07.02 |
VPC Endpoint로 ECR 연결하기 (Docker hub와 S3의 관계) (0) | 2024.07.01 |