[GCP]Stackdriver Monitoring 확장하기 — Bleu Medora 의 BindPlane 연동
안녕하세요 이정운 입니다.
요즘 출퇴근 시간의 소일거리중의 하나는 Google Cloud Next 2019 세션들이 유튜브에 다 올라와있어서 하나씩 듣는 것입니다. 그러다가 재미있는 세션을 하나 찾았는데 “Third-Party Database Visibility in Google Stackdriver (Cloud Next ‘19)” 라는 제목의 세션입니다.
Third-Party Database Visibility in Google Stackdriver (Cloud Next ‘19)
https://www.youtube.com/watch?v=LOvFUiBBXf8
이 세션의 내용은 기존의 Stackdriver Monitoring 이 Google cloud 와 AWS 를 통합적으로 지원할 수 있었지만 on-prem 이나 MS Azure 등의 지원이 어려웠는데 Blue Medora 의 BindPlane 을 연계해서 이러한 다양한 환경에서도 Stackdriver Monitoring 을 통합 지원하는 것에 대한 데모가 포함되어 있는 세션입니다.
특히나, 세션에서도 반복적으로 언급하고 있고, 하단의 공식 링크에서도 언급되어있지만 Google cloud 와 Blue Medora 와의 전략적 파트너십을 통해서 Stackdriver 와 함께 사용될 경우에 별도의 비용이 추가되지 않는다는 아주 큰 장점(?)을 가지고 있습니다.
https://bluemedora.com/bindplane-extends-stackdriver-monitoring-with-log-streaming/
그럼 이러한 조합은 어떤 유즈케이스에 의미가 있을까요? 다른 유즈케이스도 많겠지만 우선은 하단의 2가지 유즈케이스에 크게 의미가 있을듯 합니다.
- Google cloud 의 GCE(VM) 위에서 직접 MySQL 이나 MS SQL 등을 설치해서 사용중이고 상세 모니터링이 필요한 경우
- Google cloud 만이 아니라 다른 타사 클라우드(AWS, Azure 등) 나 On-Prem 환경도 통합적으로 모니터링 해서 하나의 대시보드로 보고자 할 경우
실제 구성이 어떻게 진행되는 것인지 살펴보기 위해서 하단의 공식 가이드를 기반으로 실제 테스트를 해보고 간략하게 그 내용을 정리해 봤습니다.
Extending Stackdriver to on-prem with the new BindPlane integration
https://cloud.google.com/blog/products/management-tools/extending-stackdriver-to-on-prem-with-the-newbindplane-integration
Google Stackdriver
https://docs.bindplane.bluemedora.com/docs/google-stackdriver?_ga=2.29115707.60052964.1557917998-1455099664.1557917998
Monitor MySQL and MySQL-based Database Servers
https://docs.bindplane.bluemedora.com/docs/mysql?_ga=2.58993834.60052964.1557917998-1455099664.1557917998
BindPlane for Stackdriver Demo
https://www.youtube.com/watch?v=PyAQZ-V2qcg
#1) GCP Marketplace 에서 Blue Medora 의 BindPlane 기본 연동
Stackdirver Monitoring 에 Blue Medora 의 BindPlane 연동은 기본적으로 Marketplace 를 통해서 쉽게 가능하도록 설정되어 있습니다. GCP 의 관리콘솔에서 Marketplace 로 가서 Bindplane 을 선택한 후 구독을 클릭합니다.
그러면 구독을 위한 요금제를 선택할 수 있는데 Stackdirver 연동목적인 경우 free 로 되어 있는 것을 확인 가능합니다.
Free 요금제를 선택하면 Blue Medora 에서 등록 메뉴를 선택할 수 있습니다.
그러면 실제 새창에서 Blue Medora 의 BindPlane 의 가입 메뉴가 나오며 email 주소로 하단과 같이 간단하게 가입하면 됩니다.
그러면 하단과 같이 Congratulations 화면을 확인할 수 있으며 기본 연동이 마무리 된 것입니다.
#2) 추가 모니터링을 위한 BindPlane 구성작업
BindPlane 에 대한 기본 연동이 완료되었으므로 BindPlane 의 관리콘솔로 접속이 가능하며 기본 구성을 수행해야 합니다. Overview 페이지를 보면 하단과 같은 기본 화면을 확인할 수 있습니다.
BindPlane 의 UI 는 보시면 아시겠지만 아주 직관적으로 설계되어 있으며 모니터링 데이터를 전달할 목적지인 Destination 과 BindPlane 에 데이터를 수집할 에이전트인 Collector, 모니터링을 수행할 대상인 Source 로 구성되어 있습니다. 그림에서도 확인하실 수 있겠지만 결국은 Source -> Collector -> BindPlane -> Destination 구조로 모니터링 데이터가 흘러가도록 되어 있습니다.
가장 먼저 할 일은 Destination 을 지정하는 것이고 당연히 Google Stackdriver 를 선택하시면 됩니다.
Stackdriver 를 연동하기 위해서는 GCP 프로젝트에서 서비스 계정(Service account) 생성이 필요한데 하단의 가이드에 그 설명이 되어 있습니다.
Google Stackdriver
https://docs.bindplane.bluemedora.com/docs/google-stackdriver?_ga=2.29115707.60052964.1557917998-1455099664.1557917998
해당 가이드를 따라서 GCP 관리콘솔에서 ‘모니터링 관리자’ 역할을 가지고 있는 서비스 계정을 하나 만들고 해당 key 를 JSON 형태로 다운로드 받습니다.
그리고, 해당 JSON 키 파일의 내용을 Application Credentials 에 그대로 복사해서 넣어주시면 됩니다.
Test Connection 이 문제없이 수행되었다면 Overview 화면에 하단과 같이 Destination 이 빈 아이콘에서 Stackdriver 아이콘으로 변경된 것을 확인할 수 있습니다.
이제 실제 Source 에서 모니터링 데이터를 가지고 전달할 에이전트인 Collector 를 설치해야 합니다. ‘Add First Collector’ 버튼을 클릭합니다.
그러면 새로운 Collector 를 추가할 수 있는 화면을 하단과 같이 확인할 수 있습니다. 보시면 아시겠지만 AWS, GCP, Linux, macOS, Windows 등 다양한 환경을 지원 가능합니다.
원하는 환경을 선택하면 컬렉터 설치에 대한 가이드를 확인할 수 있습니다. 예를 들어 Google cloud 라면 Deployment Manager 를 활용할 수 있는 스크립트 하나를 확인할 수 있습니다.
추신 #1: 테스트는 편의성을 위해서 Google cloud 환경을 대상으로 하며 샘플로 GCE 위에 직접 설치한 MySQL 서버를 대상이라고 가정하고 진행하도록 하겠습니다.
실제 이를 설치하기 위하여 Cloud Shell 에 접속해서 스크립트를 입력하면 프로젝트 명이나 리전, 네트워크, VM 사이즈 등을 선택하게 되어 있습니다.
선택을 마무리하게 되면 필요한 파일을 자동으로 다운로드 한후에 Google Deployment Manager 를 사용하여 자동으로 GCE 을 만들어서 에이전트를 설치하는 작업이 완료됩니다.
추신 #2: 실제 설치된 에이전트인 Collector 는 하단과 같이 GCE 메뉴에서도 확인 가능합니다.
이제 Collector 설치가 완료되었다면 BindPlane 관리콘솔에서 Collector 를 확인할 수 있고 마지막으로 실제 모니터링을 수행할 대상인 Source 를 선택하는 작업을 수행합니다.
BindPlane 의 장점중의 하나는 150개가 넘는 다양한 Source 가 사전 정의되어 있고 이를 통해서 쉽게 해당 Source 들을 모니터링 할 수 있다는 점입니다. 화면을 보시면 아시겠지만 다양한 클라우드 — AWS, MS Azure, 데이터베이스 — MySQL, PostreSQL, Oracle, Compute — VMware vCenter, Microsoft Hyper-V 등을 선택 가능합니다.
여기서 모니터링 하고자 하는 대상인 Source 를 선택하면 되며, 가용한 Collector 중에서 Source 의 모니터링 데이터를 수집할 에이전트인 Collector 를 선택합니다.
그 뒤에 MySQL 에 대한 접속 정보를 넣어야 하는데 그 전에 하단의 링크를 참고해서 모니터링에 필요한 사전 작업을 수행합니다.(모니터링을 위한 Mysql 데이터베이스 User 생성과 필요한 권한 부여)
Monitor MySQL and MySQL-based Database Servers
https://docs.bindplane.bluemedora.com/docs/mysql?_ga=2.58993834.60052964.1557917998-1455099664.1557917998
가이드에 나와있는데로 MySQL 에 필요한 User 생성과 필요한 권한 부여 작업을 합니다.
CREATE USER ‘bluemedora’@’%’ IDENTIFIED BY ‘password’;
GRANT SELECT,EXECUTE ON sys.* TO 'bluemedora'@'%';
GRANT REPLICATION CLIENT, REPLICATION SLAVE, PROCESS, SHOW DATABASES, SELECT ON *.* TO 'bluemedora'@'%';
FLUSH PRIVILEGES;
설정이 완료되었으면 BindPlane 의 Source 설정에 필요한 User 명과 패스워드 등을 넣고 테스트를 수행합니다.
연결에 문제가 없다면 이제 Overview 화면에 하단과 같이 MySQL 부터 완벽한 하나의 플로우를 확인할 수 있습니다.
이제 본래 GCP 관리콘솔의 Stackdriver Monitoring 화면으로 접속하여 Metrics Explorer 를 선택합니다.
Metrics Explorer
https://cloud.google.com/monitoring/charts/metrics-explorer
여기서 모니터링을 위한 메트릭 정보를 추가할 수 있는데 하단과 같이 mysql 로 필터링 해보면 기존에는 확인 할 수 없는 다양한 메트릭 정보들을 추가로 볼 수 있는 것을 확인 가능합니다. (external 로 시작하는 것이 Blue Medora 를 통해 모니터링 되는 정보들 입니다.)
당연히 Stackdriver Monitoring 의 모든 기능을 활용할 수 있으므로 하단과 같이 대시보드를 만들거나 메트릭 정보를 통해서 임계치를 넘었을때 알람을 보내는 것이 가능합니다.
추신 #3 : MySQL 의 어떤 정보들을 BindPlane 이 메트릭으로 수집하는지는 하단의 링크를 참고하시면 자세하게 확인할 수 있습니다.
https://docs.bindplane.bluemedora.com/docs/mysql?_ga=2.58993834.60052964.1557917998-1455099664.1557917998
#3) Blue Medora 의 BindPlane 모니터링 및 추가 설정
BindPlane 의 각 컴포넌트는 깔끔한 모니터링 화면을 추가로 제공하고 있습니다. 예를 들어서 Destination 을 보면 분당 어느정도의 메트릭 정보가 전송되고 요청되고 있는지 연결에 문제가 없는지 등을 확인할 수 있습니다.
Collector 를 클릭하면 하단과 같이 Collector 의 운영체제나 설정 정보들과 분당 보내지는 메트릭의 수 그리고 에이전트의 CPU 사용율과 메모리 사용율과 같은 다양한 추가 정보를 모니터링 가능합니다.
또한, 실제 모니터링 되는 Source 에서도 모니터링 정보등을 확인할 수 있습니다.
특히, Metrics 메뉴를 클릭해 보면 수집되는 메트릭을 설정 가능하여 모든 모니터링 메트릭을 수집하는 것이 아니라 요구사항에 따라 필요한 메트릭만 on/off 하는것도 가능합니다.
여기까지 오셨으면 간단하게 Google cloud 에서 Blue Medora 의 BindPlane 을 연동해 보신 것이며 크게 어려움 없이 쉽게 연동이 가능하고 추가적인 모니터링 이점을 얻을 수 있다는 것을 확인하실 수 있습니다.
단점을 굳이 따진다면 관리적인 포인트 추가가 있을수 있겠지만 별도의 비용추가가 없으므로 Google cloud 환경의 좀 더 상세 모니터링이 필요한 경우 뿐만 아니라 on-prem 이나 MS Azure, AWS 등 다양한 환경에 대한 통합 모니터링이 필요한 경우에는 꽤(?) 유용하게 활용될 수 있지 않을까 합니다.
그럼 이번 이야기는 여기서 마치며 이만 줄이도록 하겠습니다. 휘리릭~~~
* Disclaimer: 본 글의 작성자는 Google 직원이지만 Google cloud 를 공부하는 한 개인으로서 작성된 글입니다. 본 글의 내용, 입장은 Google 을 대변하지 않으며 Google 이 해당 콘텐츠를 보장하지 않습니다.