안녕하세요 이정운 입니다.
어떤 이야기를 공유할까 고민하다가 이번에는 시스템을 운영할 경우에 많이 필요하지만 아직 제대로 활용되고 있지못하는 부분 중의 하나가 Google cloud 의 모니터링/로깅관련 컴포넌트인 Stackdriver 가 아닐까 하고 이를 시리즈 형태로 다뤄보려고 합니다. (이게 참 좋은데 어떻게 표현을 못하겠다는…) Stackdriver 는 아직 잘 안알려져 있지만 Google Cloud Platform 만이 아니라 Amazon Web Services 에서 실행되는 응용 프로그램에 대한 통찰력을 얻는 데 도움이되는 모니터링, 로깅 및 진단을위한 SaaS 패키지로서 심지어 On-premiss 솔루션도 모니터링 및 로깅이 가능합니다.
이런 막강한 솔루션이지만 기본적으로 모니터링/로깅에 관련된 기능을 full 로 활용하려면 Stackdriver agent 가 설치되고 premium plan 을 사용해야 하는데 그러면 자원당 비용이 발생되고 이런한 비용에 대한 부담과 어려움이 그간 Stackdriver 를 활용하는데 조금 주저함을 주지않았나 생각합니다. 그런데 이번에 공격적으로 가격 체계를 변화하면서 더 많은 개발자/운영자가 Stackdriver 를 활용할 길을 열어주었습니다.
아직은 조금 시간이 남았지만 이미 제가 한번 공유드린 것처럼 2018년 6월 30일 이후로 Stackdriver 가격체계에 큰 변화를 준비하고 있습니다. 가격 체계 자체를 단순화하여 premium plan 을 없애고 모든 GCP 고객은 원하는 기능을 사용가능하며 사용한 만큼만 비용을 지불할 수 있도록 라이센스 형태가 변화됩니다. Stackdriver logging 기본적으로 한달에 50 GB 까지 무상제공이 늘어날 예정이며 Stackdriver Monitoring 은 모든 GCP metrics 까지는 무상으로 제공될 예정입니다. 실제 서비스 운영하는 입장에서는 앞으로 굉장히 가격 절감 효과가 있을듯 하며 GCP 메뉴얼에서도 하단과 같이 가격표가 이미 오픈되어 있습니다.
이것 이외에도 exclusion filters 기능이 추가되어 로깅이 필요없는 컴포넌트는 원하는 형태와 비율로 제외시킬 수 있어서 유연하게 요금을 제어할 수 있습니다. 이러한 막강한 기능을 가진 Stackdriver 가 가격까지 저렴해진다니 더 기대가 되구요 기대만이 아니라 실제로 사용해 보면서 어떤 부분이 좋은지 확인해보는 시간을 가져보도록 하겠습니다.
늘 그렇지만 이번 이야기도 역시 다양한 자료를 참고하였습니다.
Quickstart for Google Compute Engine
https://cloud.google.com/monitoring/quickstart-lamp
Quickstart
https://cloud.google.com/logging/docs/quickstart-sdk
#1) Stackdriver Logging/Monitoring 간단 테스트
우선 가장 기본적으로 GCE 에 nginx 를 하나 설치한 후에 기본적으로 GCP 에서 제공하는 Stackdriver logging 과 monitoring 관련해서 기본 기능을 살펴보도록 하겠습니다.
하단의 명령을 통해서 간단하게 nginx 를 설치하고 임시 배정된 External IP 로 서비스가 가능한 것을 확인합니다. (GCE 인스턴스가 하나 있다고 가정, 없는 경우에는 하나 만드시면 됩니다. 이때 http 서비스는 외부 서비스가 가능하도록 설정해야 합니다.)
sudo apt-get install nginx
이렇게 서비스만 만들면 별도의 작업 없이도 기본적으로 하단과 같이 Stackdriver monitoring 이 가능합니다. (GCP 콘솔에서 Stackdriver monitoring 을 클릭한 후 Resources > instance > GCE 인스턴스 이름을 클릭) 보시면 아시겠지만 Overview 와 CPU, Disk I/O, Network traffic 등 간단한 모니터링 기능은 바로 사용 가능한 것을 확인 가능합니다.
Stackdriver logging 도 확인해보면(GCE VM 인스턴스 > 인스턴스명) 간단한 로깅정보가 확인 가능한 것을 알 수 있습니다. (단, 꼭 필요한 access log 나 error log 가 없죠)
#2) Stackdriver agent 설치 및 테스트
좀 더 강화된 로깅 및 모니터링을 위해서는 Stackdriver agent 를 GCE 에 설치해야 합니다.(GAE 의 경우에는 기본적으로 포함) 이 부분은 GCE 에서 아주 간단하게 가능하며 Stackdriver logging agent 와 Stackdriver monitoring agent 가 분리되어 있어서 필요에 따라서 원하는 것만 유연하게 설치 가능합니다.
하단의 명령을 이용해서 Stackdriver logging agent 를 설치합니다
curl -sSO “https://dl.google.com/cloudagents/install-logging-agent.sh"
sudo bash install-logging-agent.sh
설치할 때 나오는 출력을 잘 보시면 Stackdriver logging agent 는 그 유명한 fluentd 를 기반으로 함을 알 수 있습니다. 이제 바로 Stackdriver monitoring agent 도 동일한 방식으로 설치합니다.
curl -sSO https://dl.google.com/cloudagents/install-monitoring-agent.sh
sudo bash install-monitoring-agent.sh
참고로 Stackdriver monitoring agent 는 collectd 를 기반으로 만들어졌습니다. 이렇게만 하면 Stackdriver agent 를 문제 없이 설치한 것이고 그 결과를 한번 확인해보도록 하겠습니다.
GCP 관리콘솔에서 Stackdriver monitoring 에 가서 Resources > Instances 를 확인해보면 기본적으로 이전까지 안나오던 Memory Usage 가 표시되는 것을 확인 가능합니다.
뿐만 아니라 Instance 이름을 클릭해서 세부 모니터링 화면으로 들어가면 CPU Load, CPU Steal, Swap Usage, Open TCP connections 등 다양한 모니터링이 추가적으로 가능합니다. 거기다가 Overview 에는 Processes 탭이 추가되어 linux 의 top 명령을 수행한 것과 동일하게 해당 GCE instance 의 processes 를 모두다 확인 가능합니다.(저는 개인적으로 이게 좋더라구요 직접 GCE 에 ssh 로 들어갈 필요없이 대쉬보드에서 바로 프로세스 리스트와 자원 사용량을 볼 수 있습니다)
이외에 더 많은 모니터링 가능 항목은 하단의 링크를 참고하시면 됩니다.
Agent Metrics List
https://cloud.google.com/monitoring/api/metrics_agent
이번엔 Stackdriver logging 을 확인해봅니다. agent 설치 후에 가장 눈에 띄게 다른 점 중의 하나는 nginx 의 access log 를 바로 확인 가능 하다는 것 입니다. (사실 이외에도 syslog 나 error log 등도 별도의 설정 없이 확인 가능합니다.)
![img(https://cdn-images-1.medium.com/max/800/0*GLVxGU4raToxzm51.)
참고로 Stackdriver logging agent 설치후에 /etc/google-fluentd/config.d 폴더를 보시면 하단과 같이 fluentd 관련 설정 파일들을 확인 가능합니다. 이를 다시 말하면 필요한 경우 원하는 형태로 로그 포멧을 수정 가능하다는 것입니다.
Agent 설치 후에 추가적으로 더 가능한 Stackdriver logging 항목에 대해서 더 궁금하신 분은 하단의 링크를 참고하시기 바라겠습니다.
Logs from the Logging Agent
https://cloud.google.com/logging/docs/view/service/agent-logs
특히, 위의 링크를 보시면 아시겠지만 Apache, Nginx, Kafka 등 이미 다양한 오픈 소스에 대한 로깅 준비가 되어 있어서 별도의 큰 작업없이도 각 솔루션에 필요한 내용을 알아서 Stackdriver 를 활용해 로깅할 수 있습니다.
우선 기본적으로 Stackdriver logging 과 monitoring 을 살펴봤고 아주 간단하게 agent 를 설치한 후 추가적으로 어떤 부분을 더 monitoring 가능하고 logging 가능한지 확인해봤습니다. 이미 보셔서 아셨겠지만 Stackdriver logging 과 monitoring 은 복잡한 작업 없이도 GCP 환경위의 다양한 자원을 통합적으로 모니터링하거나 로그를 관리할 수 있게 해줄 수 있는 꽤 쓸만한 도구 입니다.