2018년 5월 30일 엔지니어링

Elastic Stack으로 Docker 컨테이너와 Kubernetes에서 실행되는 애플리케이션 모니터링하기

By Dan Roscigno

Rolling updates, 효율성, 복원성, 일관성 등을 위해 컨테이너에서 앱을 실행합니다. 모니터링 시스템은 같은 특성을 가져야 하며 적합도는 더 나아야 합니다.  컨테이너화 및 오케스트레이션에 익숙한 경우, 그렇다면 무엇이 다릅니까? 섹션으로 건너 뛰십시오. 거기서 컨테이너화된 애플리케이션 모니터링의 세부 사항에 대해 이야기할 것입니다.

Docker 컨테이너

Docker 컨테이너 이미지는 경량이며 독립적이고 그것을 실행하는데 필요한 모든 것, 즉 코드, 런타임, 시스템, 툴, 시스템 라이브러리, 설정을 포함하는 실행 가능한 소프트웨어 패키지입니다. 컨테이너는 예컨대 개발과 대기 환경 간의 차이처럼 그 환경으로부터 소프트웨어를 분리하며 같은 인프라 상에서 다른 소프트웨어를 실행하는 팀 간의 갈등을 줄이는데 유용합니다.

출처: www.docker.com/what-container

Kubernetes 또는 k8s

Kubernetes는 컨테이너화된 애플리케이션의 배치, 확장 및 관리를 자동화하기 위한 오픈소스 시스템입니다.  그것은 용이한 관리와 탐색을 위해 애플리케이션을 구성하는 컨테이너를 논리적 단위로 분류합니다. Kubernetes는 커뮤니티의 동급 최강의 아이디어와 관행과 결합하여 구글에서 프로덕션 워크로드를 실행한 15년의 경험을 바탕으로 구축합니다. 

출처: kubernetes.io

K8s는 숫자 기반의 응용어 (Numeronym) 입니다.

무엇이 다릅니까?

위의 정의가 말하지 않은 점은 컨테이너에서 로그와 매트릭스를 가져와 배치를 모니터링하고 확장하는 것이 조금 다르다는 점이며 이는 더 어려운 것은 아니고 그냥 다를 뿐입니다.  모니터링 시스템은 동적이 되도록 제작되어야 합니다. 배치가 확장되면서 모니터링 시스템은 자동으로 변동 사항을 탐지하고 그에 따라 조정되어야 합니다.  모니터링 시스템 관리에 대한 부담을 관리자에게 지울 수 없습니다.  이 글에서 표면적으로만 다룬 후 향후의 블로그에서 심층적으로 짚어보겠습니다. 그 때 각 Elastic 모듈의 세부 사항을 자세히 다루겠습니다.  하단의 동영상에서 현실적인 예시를 보실 수 있습니다.

모니터링

모니터링은 과부하된 용어입니다.  이 논의에서 모니터링은 애플리케이션이나 서비스 및 그것을 좌우하는 환경을 수집, 파싱, 저장, 시각화 및 대행하는 것입니다.  Kubernetes 및 Docker에서 Apache와 Redis를 실행하는 경우, 그 때 (모니터링의 정의를 이용해) 다음을 수집해야 합니다:

  • Apache 매트릭스 및 로그
  • Redis 매트릭스 및 로그
  • Kubernetes 매트릭스 및 로그
  • Docker 매트릭스 및 로그
  • 네트워크 매트릭스
  • 반응 시간

그 다음 서비스용으로 약간의 시각화를 생성합니다:

visualizations.jpg

그리고 마지막으로 상황이 안 좋아질 때 PagerDuty 또는 Slack으로 일부 자동화된 경고를 생성합니다:

SlackAlert.png

간단한 것은 간단해야 합니다

Elastic Stack (Elasticsearch, Kibana, Beats 및 Logstash)은 상기의 모든 것을 빠르고 쉽게 시행할 수 있는 기능을 제공합니다.  Elastic 모듈은 공통 로그 포맷을 위해 수집, 파싱, 색인 템플릿, 시각화 등을 포함합니다. 로그 파일이 운영체제의 기본 위치에 있는 경우 로그 파일이 어디에 있는지 알 필요가 없습니다. 이 동영상에서는 컨테이너 환경에서 가용한 풍부한 메타데이터를 이용해 귀하의 앱과 Docker / Kubernetes를 더욱 쉽게 관리하는 방법을 살펴볼 것입니다.  앞으로 보게 될 동영상의 모든 파일과 README는 GitHub 에 있습니다. Kubernetes 튜토리얼(환상적임)은 Kubernetes Docs 에 있습니다.  이 예시에서는 IBM 클라우드 컨테이너 서비스의 앱을 배치하고 그 다음 Elastic Beats와 Hosted Elasticsearch Service 를 이용하여 우리의 앱에 대한 정보를 자동 탐색, 수집, 파싱, 색인, 검색 및 시각화할 것입니다. 동영상에서 다루는 주제입니다:

  • 컨테이너 앱 모니터링이 다른 이유
  • Rolling update 진행 방법
  • 아웃오브더박스 Elastic모듈 대시보드
  • Docker 메타데이터가 Beats 자동 탐색을 구동하는 방법
  • Kubernetes 예시 PHP 게스트북 배치
  • Beats (Elasticsearch로 데이터를 탐색, 파싱, 강화, 전송하는 로그 및 매트릭스 전송자) 배치

향후의 블로그에서는 배치에 대한 세부 사항, 각 Elastic모듈이 목표에 도달하기 위해 무엇을 제공하며 아웃오브더박스 경험 이상으로 확장하기 위한 방법(경고를 Slack에 전송하는 것 같은)을 다루겠습니다. 동영상을 시청하시는 동안 특정 Docker컨테이너에서 특정 로그를 수집하기 위해 우리가 Beats를 어떻게 구성했는지 궁금하시면 autodiscover 에서 읽어보십시오. 시간이 많이 절약될 것입니다.