Thursday, March 9, 2017

draw.io + AWS CloudWatch로 모니터링 대시보드 만들어보기 (원제: draw.io + Amazon CloudWatchでAWS監視ダッシュボードもどきを作る!)

 AWS CloudWatch의 단조로운 화면에 지쳐 근사한 모니터링 대시보드를 만들어 보고자 draw.io을 이용해 간단하게 인프라 구성도를 그린 뒤 그것을 모니터링 대시보드로 사용하는 아이디어를 구현해 보았습니다.
이름하여 Drawatchio 입니다!

목표


이렇게 CloudWatch의 메트릭을 표시해 주는 동시에, 알람이 울리면 대상 인스턴스가 반짝거리는 등 인프라의 상태를 시각적으로 알려주는 대시보드를 만들고자 합니다.

간단한 구조

draw.io는 mxGraph를 기반으로 만들어져 있는데 그 API를 사용해 Plugin을 만듭니다.
draw.io Online Blog draw.io API
https://support.draw.io/display/DOB/2016/04/28/draw.io+API

Javascript를 사용할 수 있는 것 같고, 그렇다면, Amazon Cognito와 연동해서 Amazon CloudWatch에 간단하게 접근 가능할 것 같았습니다.

즉, 다음과 같이 연동하려 합니다.
draw.io <=> Javascript으로 작성한 Plugin <=> Amazon Cognito에서 인증 <=> Amazon CloudWatch API
제가 Javascript가 익숙치 않기에 실수가 있다면 피드백 부탁드립니다!

사용법

매우 쉽게 사용 가능합니다!

먼저 그림을 그림

당연한 이야기지이만, 우선 draw.io을 이용해 멋진 그림을 그립니다. 이게 제대로 되지 않으면 앞으로의 단계가 의미가 없어요.

Cognito에서 Identity pool을 작성

구글링 하면 많은 정보를 얻을 수 있기에 간단히 설명하겠습니다!
Cognito 화면을 열어 "Manage Federated Identities"를 선택합니다.

적당한 이름을 붙여서 Identity pool을 만듭니다. 간단한 설명을 위해 인증없이 연결하겠습니다. "Enable access to unauthenticated identities"을 선택합니다.
이것은 아래의 Role을 누구에게나 부여하는 것이기 때문에 실제 환경에서는 제대로 인증된 것만 통과시키도록 설정합시다.

그리고 Cognito에서 인증 시(혹은 인증 없는 경우에도)에 부여하는 Role을 지정하는 화면이 나오는데, 기본설정값대로 만들어두도록 하겠습니다.

작성 후에는 Sample Code에서 "Identity Pool ID"에 나온 값을 메모해 둡니다. Cognito를 이용하는데에 이 ID가 사용됩니다.

Cognito에서 만든 IAM  Role에 CloudWatch의 접근을 허용

Role을 작성했습니다만, 아직 아무런 권한도 갖고 있지 않기에 CloudWatch에 읽기권한을 부여합니다.

이 경우에도 동일하게, 인증 없이 CloudWatchReadOnlyAccess를 부여하면 불특정한 모든 사람들에게 CloudWatch가 보여지기에 보안을 생각해 Cognito와 IAM를 설정해 두어야 합니다.

CloudWatch의 Alarm을 만들거나, 매트릭스를 기억

CloudWatch를 사용하여 모니터링을 할 때에 적용해 둘 알람을 작성합니다. CPU 상태를 기준으로 하든, SQS의 Queue 수를 기준으로 하든, ScaleOut 상태를 기준으로 하든 자유롭게 만듭니다. 이 알람의 이름을 조금 뒤에 사용하도록 하겠습니다.

또한, 표시하고 싶은 매트릭스도 봐 둡니다.

작성해두었던 그림에 Cognito와 CloudWatch의 패턴을 포함

이제 여기서부터는
Drawatchio의 독자적 설정입니다.
앞에서 그려둔 그림에 메타데이터로써 Cognito와 CloudWatch의 정보를 포함시킵니다.
구체적인 내용은 깃허브 페이지나 아래의 동영상을 참고해 주세요. 대상 오브젝트를를 우클릭하여 "Edit Data ..."에 속성을 추가합니다.

draw.io에 Plugin 설정

포함시킨 메타테이터를 바탕으로 CloudWatch와 연동되게 Plugin을 설정합니다.
메뉴 - Extras - Plugins...
를 열어 아래 2가지를 추가한 뒤 draw.io 페이지를 리로드 합니다.

모니터링 시작!

드디어 모니터링을 시작합니다!
적당한 오브젝트를 우클릭해서 "Start Monitoring"을 눌러주세요.
설정한 매트릭스가 수집되고 있으면 모니터링이 정상 작동하고 있는 것입니다.

설정 분위기 영상

Cognito와 CloudWatch의 파라미터를 포함한 이후의 작업을 영상으로 만들어 두었으니 참고하세요.
동영상 제작 시에 사용된 Cognito ID는 이미 파기해 두었습니다. :)

마치며

이것으로 모니터링의 효율이 얼마나 오를지는 모르겠지만 조금이라도 즐겁게 업무가 될 수 있었으면 좋겠습니다.

그럼 이쯤에서 글을 마치겠습니다.



번역된 컨텐츠입니다.
Qiita. by Yaggytter. http://qiita.com/Yaggytter/items/6d7ab0384aa3c326e71f

Translated article.
Qiita. by Yaggytter. http://qiita.com/Yaggytter/items/6d7ab0384aa3c326e71f

No comments:

Post a Comment