본문 바로가기
+ 펴낸 책

프로메테우스, 오픈소스 모니터링 시스템

by 책만 2019. 10. 16.

프로메테우스, 오픈소스 모니터링 시스템

쿠버네티스와 클라우드 환경을 위한
메트릭 기반 성능 모니터링 도구

브라이언 브라질 지음 | 김영기, 김현진 옮김 | 464쪽 | 32,000원 | 
2019년 10월 28일 출간 | 185*240*23 | ISBN 9791189909079

판매처 [교보문고] [YES24] [알라딘] [인터파크] [반디앤루니스+ 전국 교보문고 매장
전자책 판매처 [리디북스] [교보문고] [YES24] [알라딘] | ISBN 9791189909086 | PDF 포맷 | 


★ 예제 코드와 구성파일 다운로드: https://github.com/prometheus-up-and-running/examples

★ 정오표: https://www.onlybook.co.kr/entry/prometheus-errata 

클러스터와 컨테이너 운영을 위한 필수 모니터링 도구

프로메테우스에 대한 유일무이 최고의 가이드!

프로메테우스(Prometheus)는 쿠버네티스에 이어 CNCF(클라우드 네이티브 컴퓨팅 재단) 프로젝트를 두 번째로 졸업하며 사실상의 표준 모니터링 도구로 자리잡았다. 또한, 쿠버네티스 클러스터를 운영하며 인프라스트럭처와 애플리케이션에 대한 모니터링 시스템을 구축하려거나, 웹이나 애플리케이션에 대한 모니터링을 통해 성능 분석과 문제 예방을 하고자 하는 애플리케이션 개발자와 시스템 관리자, 데브옵스 실무자를 위한 탁월한 도구다.

이 책은 프로메테우스의 개념과 설치부터 설정, 모니터링 예제 프로그램의 활용, 익스포터를 이용한 서드파티 시스템에서의 메트릭 수집, 프로메테우스 쿼리언어인 PromQL, 그라파나를 활용한 대시보드 작성과 알림, 직접 코드 계측, 그리고 컨테이너 모니터링에 이르기까지 프로메테우스에 대한 모든 것을 담은 완벽 실용 가이드다.


추천의 글

쿠버네티스가 컨테이너 오케스트레이터로 등장하고 클라우드 네이티브라는 단어가 널리 퍼지면서 애플리케이션을 포함한 시스템에 대한 가시성(visibility)이 더욱 중요하게 대두되고 있습니다. 프로메테우스는 CNCF(클라우드 네이티브 컴퓨팅 재단) 프로젝트 중에서 쿠버네티스에 이어 두 번째로 졸업(graduate)한 프로젝트로, 쿠버네티스 클러스터 및 관련 애플리케이션에 대한 표준 모니터링 툴로 여겨지고 있습니다. 하지만 이상하게도 프로메테우스에 대해 자세히 설명한 책은 거의 찾기 어려웠습니다. 

이 책은 프로메테우스의 개념부터, 개발, 구축, 사용법까지 자세하게 설명합니다. 쿠버네티스 클러스터를 운영하며 이와 관련된 모니터링을 구축하고 싶다면 이 책이 적절한 가이드를 줄 수 있습니다. 그뿐 아니라 자신이 개발한 애플리케이션을 커스텀 메트릭으로 모니터링하고 싶을 때도 이 책에서 많은 도움을 얻을 수 있습니다. 프로메테우스를 처음 배우거나, 좀 더 자세히 알고 싶다면 최우선으로 이 책을 보실 것을 추천드립니다.

- 안승규 / SK텔레콤 클라우드 네이티브 개발팀, 쿠버네티스 코리아 그룹 대표

프로메테우스는 클라우드 네이티브와 컨테이너 네이티브 환경에서 다양한 시스템 메트릭 데이터를 모니터링하는 목적으로 이미 광범위하게 사용되고 있습니다. 하지만 안타깝게도 그간 한글 자료가 부족하던 차에 적절한 시기에 좋은 책이 번역 출간되어 반가운 마음에 책 리뷰에 참여하게 되었습니다이 책은 프로메테우스의 역사에서부터 아키텍처, 그라파나, 그리고 PromQL까지 프로메테우스를 활용하기 위한 내용을 알차게 담고 있어, 프로메테우스에 입문하기 위한 책으로 적격이라 생각합니다. 무엇보다도 프로메테우스의 첫 책이라 용어 번역 등의 어려움이 많이 있었음에도 독자들의 이해를 돕는 좋은 책이 출간되었기에 더욱 추천드립니다.

- 강인호 / 한국 오라클 클라우드 엑설런스팀 부장

쿠버네티스와 마찬가지로 모니터링 분야에서 프로메테우스의 성장세는 단연 돋보입니다. 운영하는 클러스터나 컨테이너의 개수가 점점 증가하고 있는 오늘날, 저뿐만 아니라 대다수 사용자가 모니터링의 중요성은 인식하지만 원하는 결과물에 접근하기가 쉽지 않을 것입니다이 책에서는 프로메테우스의 사용법과 함께 그라파나를 통해 가시적으로 확인하는 방법을 설명하며, 알림매니저를 통해 특정 상황에 대한 알림을 받아 시스템 운영자들이 장애에 유연하게 대처할 수 있는 방법을 알려줍니다. 개발자들에게는 웹이나 애플리케이션을 모니터링해 성능을 분석하고 문제를 예방하는 데 큰 도움이 될 것입니다.

- 이호광 / 삼성전자 네트워크사업부 데브옵스 엔지니어

다양한 전문 모니터링 도구가 넘쳐나는 지금 '왜 프로메테우스이어야 하는가'에 대한 답을 이 책에서 찾을 수 있었습니다. 전문 모니터링 솔루션인 프로메테우스가 사실상의 표준처럼 사용되는 이유는 CNCF에 소속된 오픈소스 프로젝트 중 두 번째 졸업생이기도 하지만, CNCF의 프로젝트인 쿠버네티스 등과 잘 정합되어 쉽게 모니터링 시스템을 구축할 수 있기 때문입니다이 책에서는 프로메테우스의 개념과 설치부터 설정, 예제프로그램의 활용 및 익스포터, PromQL, 대시보드인 그라파나에 이르는 매우 방대한 내용을 독자가 따라 할 수 있도록 잘 가이드해줍니다. 웹상의 분산되고 정제되지 않은 정보 검색에 지친 개발자들에게 이 책은 프로메테우스에 대한 좋은 레퍼런스가 될 것입니다.

- 최일환 / 삼성전자 네트워크사업부 소프트웨어 아키텍트

모니터링은 엔지니어가 시스템을 정상 상태로 유지할 수 있게 도우며, 주요한 모든 비즈니스 서비스의 기초사항이기도 합니다. 프로메테우스의 출시는 모니터링 분야의 분수령과도 같았으며, 모니터링의 수행 방법을 완전히 변화시켰습니다. 이 책은 프로메테우스의 핵심 팀원들이 참여해 저술하고 검토했습니다. 이 책은 독자들이 손에 넣을 수 있는 공식 레퍼런스에 가깝습니다.

- 리차드 하트만(Richard Hartmann) / 스페이스넷(SpaceNet) 사의 모니터링 책임자

이 책에 제시된 모범 사례와 원칙들은 개발자 여러분의 운영 오버헤드를 줄이는 데 도움이 될 것입니다. 프로메테우스를 일일 모니터링 도구로 활용하기 바랍니다.

- 올렉 메이코(Oleg Mayko) / 스위스컴(Swisscom)의 데브옵스 엔지니어

책의 구성

1부 프로메테우스를 시작하며

1부에서는 일반적인 모니터링 방법에 대해 알아보고 프로메테우스를 구체적으로 다룬다1장에서는 모니터링의 다양한 의미와 접근 방법, 프로메테우스에서의 메트릭 접근 방법, 프로메테우스의 아키텍처 등을 알아본다. 2장에서는 머신 메트릭의 수집과 쿼리 계산, 알림 통보를 위해 직접 프로메테우스를 설정하고 수행해본다.

 

2부 애플리케이션

모니터링 자신의 애플리케이션에 직접 추가한 메트릭(metric)에 쉽게 접근할 수 있는 경우, 프로메테우스의 모든 혜택을 누릴 수 있을 것이다. 2부에서는 계측(instrumentation) 기능을 추가하고 사용하는 방법을 알아본다3장에서는 기본적인 계측 기능의 추가 방법과 계측이 갖는 혜택에 대해 배워본다. 4장에서는 프로메테우스에서 애플리케이션의 메트릭을 사용하는 방법을 설명한다. 5장에서는 프로메테우스의 가장 강력한 기능 중 하나를 살펴보고, 계측 시에 해당 기능을 사용하는 방법을 살펴본다. 6장에서는 사용자의 애플리케이션 메트릭이 프로메테우스에 추가되고 난 후, 관련 그래프들을 모두 함께 그룹화하는 대시보드를 생성하는 방법에 대해 살펴볼 것이다.

 

3부 인프라스트럭처 모니터링

세상은 프로메테우스를 중심으로 돌아가지 않으며, 특별히 프로메테우스 메트릭을 별도로 제공하지도 않는다. 익스포터는 다른 시스템의 메트릭을 프로메테우스가 이해할 수 있는 형식으로 변환하는 도구다7장에서는 가장 먼저 사용할 가능성이 높은 익스포터 중 하나인 노드 익스포터(Node Exporter)에 대해 자세히 다룬다. 8장에서는 프로메테우스로 가져와야 하는 메트릭이 무엇인지 알아내는 방법과 메트릭을 가져오는 방법을 알아본다. 9장에서는 도커(Docker)와 쿠버네티스(Kubernetes) 같은 컨테이너 기술의 모니터링에 대해 자세히 다룬다. 프로메테우스 생태계에는 말 그대로 수백 개의 익스포터가 있다. 10장에서는 다양하고 전형적인 익스포터의 사용 방법에 대해 살펴본다. 이미 다른 메트릭 기반 모니터링 시스템을 사용할 수도 있으니, 11장에서는 이러한 시스템에 프로메테우스를 통합하는 방법에 대해 살펴본다. 익스포터는 갑자기 나타나지 않는다. 원하는 익스포터가 없는 경우, 12장의 내용을 활용해 익스포터를 생성할 수 있다.

 

4PromQL

PromQL, 즉 프로메테우스 쿼리 언어(Prometheus Query Language)는 모든 종류의 집계, 분석, 연산을 할 수 있는 기능을 제공하며, 메트릭을 활용해 우리 시스템의 성능에 대해 더 잘 이해할 수 있게 해준다. 4부에서는 2장에서 생성한 프로메테우스 및 노드 익스포터 설정을 다시 사용하고 쿼리를 실행하기 위해 수식 브라우저를 사용한다13장은 PromQL의 기본 사항과 표현식을 실행하기 위해 HTTP API를 사용하는 방법을 다룬다. 14장에서는 집계가 동작하는 방법을 심도 있게 살펴본다. 15장은 추가 및 비교 연산자 같은 다양한 연산자를 다루고, 다양한 메트릭을 함께 조인(Join)하는 방법을 다룬다. 16장에서는 시간을 알아내는 함수부터 언제 하드 디스크가 다 채워질지 예상하는 함수까지 PromQL이 제공하는 광범위하고 다양한 함수에 대해 살펴본다. 17장은 프로메테우스 기록 규칙의 특징을 다룬다. 프로메테우스의 기록 규칙을 지키면 PromQL을 사용한 더 빠르고 정교한 쿼리를 사용해 메트릭을 미리 계산할 수 있다.

 

5부 알림

새벽 3시에도 모니터링 시스템에서 알림을 받고 이를 확인하기 위해 잠에서 깨길 원한다면, 이번 장은 바로 그런 내용을 다룬다앞 장의 내용을 기반으로, 18장에서는 단순히 임계치에 대한 알림 이외의 더 많은 이상 상태에 대한 알림을 가능하게 하는 프로메테우스의 알림 규칙에 대해 다룬다. 프로메테우스에서 알림이 발생하면, 19장에서 설명하는 것처럼 알림매니저는 각 통보를 더 가치있게 하기 위해 그룹화 및 압축하며 알림을 통보로 변환한다.

 

6부 배치

로컬 머신에서 프로메테우스를 다루는 것은 간단한 작업이지만, 실제 운영 시스템에 프로메테우스를 배치하는 것은 또 다른 문제다. 마지막 20장에서는 운영 환경에서 프로메테우스를 실행하는 실질적인 측면과 프로메테우스의 롤아웃(rolling out) 방법에 대해 살펴본다.


이 책의 주요 특징

■ 애플리케이션 코드 계측의 대상과 방법

■ 레이블을 통한 메트릭의 식별: 고유한 키-값 쌍

■ 대시보드 구축용 인기 도구인 그라파나(Grafana)

■ 인프라스트럭처 모니터링을 위한 노드 익스포터(Node exporter)의 사용 방법

■ 머신 및 서비스에 대한 다양한 뷰 제공을 위한 서비스 검색 활용

■ 프로메테우스와 쿠버네티스의 연동 방법

■ 컨테이너와 함께 사용 가능한 익스포터

■ 다른 모니터링 시스템 데이터를 프로메테우스 형식으로 변환하기

 

이 책의 독자 대상

이 책에서는 애플리케이션과 인프라스트럭처 성능에 대한 모니터링, 그래프 작성, 알림 설정 등 프로메테우스 모니터링 시스템의 사용 방법을 자세하게 설명한다. 애플리케이션 개발자, 시스템 관리자, 데브옵스 실무자에게 인프라스트럭처와 애플리케이션의 모니터링, 대시보드 작성과 알림, 직접 코드 계측, 익스포터를 통한 서드파티 시스템에서의 메트릭 수집을 포함해 프로메테우스의 중요한 기능에 대해 실용적인 내용을 소개한다.

 

지은이 브라이언 브라질Brian Brazil

로버스트 퍼셉션(Robust Perception) 사의 창립자이자 프로메테우스의 개발자로, 초기 단계의 스타트업부터 <포춘> 500대 기업에 오른 회사들과 함께 모니터링 관련 이슈에 대한 업무를 하고 있다. 프로메테우스 커뮤니티에서 이미 잘 알려진 인물로, 여러 컨퍼런스에서 수많은 발표를 했으며, 로버스트 퍼셉션 사의 웹사이트에 개설한 블로그에 프로메테우스와 모니터링의 다양한 측면에 대한 글을 기고하고 있다.

모니터링에서는 시스템의 동작 여부를 파악하는 것이 중요하지만 그것이 전부는 아니다. 모니터링의 가장 큰 성과는 시스템의 성능을 이해하는 것이다성능(performance)이란 각 요청의 응답 시간과 이에 사용된 CPU 사용량뿐만 아니라 더 넓은 의미를 지닌다. 고객의 주문을 처리하기 위해 얼마나 많은 데이터베이스 요청이 필요한가? 처리량이 더 큰 네트워크 장비를 구매해야 할 시점일까? 캐시 미스(cache miss) 를 처리하기 위해 얼마나 많은 머신이 필요한가? 복잡한 기능(feature)을 유지하는 것이 당연할 만큼 사용자가 해당 기능을 충분하게 사용하고 있는가?

메트릭 기반 모니터링 시스템은 이런 종류의 질문에 대한 답을 구할 때 도움이 되며, 단지 답을 구하는 것을 넘어서 그런 답이 왜 나왔는지 이유를 살펴보는 데도 도움이 된다. 모니터링이란 고수준의 개요부터 디버깅에 유용한 핵심 세부사항에 이르기까지, 시스템 전반에 걸쳐 통찰을 얻는 것이라 할 수 있다. 디버깅과 분석을 위한 전체 모니터링 도구에는 메트릭뿐 아니라 로그(logs), 추적(traces), 프로파일링(profiling)도 포함된다. 그러나 시스템 수준의 질문에 대한 답을 구하려는 경우에는 메트릭이 첫 번째 항목이 되어야 한다.

프로메테우스(Prometheus)를 활용하면 애플리케이션에서 베어 메탈(bare metal)까지 시스템 전반에 걸쳐 자유롭게 계측(instrumentation)을 수행할 수 있다. 계측을 통해 모든 서브시스템과 컴포넌트가 상호작용하는 방법을 관찰하고, 관찰한 내용을 통해 미처 몰랐던 내용을 파악할 수 있다.

옮긴이 김영기

삼성전자 네트워크 사업부 기술전략 그룹에서 신기술 센싱 및 소프트웨어 혁신 업무를 담당하고 있다. 지능망(IN)과 모바일 애플리케이션 개발, 정적 분석과 소프트웨어 구조 분석, 소프트웨어 개발 인프라 관리 등의 업무를 담당했다. 소프트웨어 개발과 개발 문화를 비롯해 개발자 역량 강화와 조직 구성, 애자일과 데브옵스, 자동화 등에 관심이 많다.

 

옮긴이 김현진

삼성전자에서 소프트웨어 엔지니어로 근무 중이다. 문제에 대해 생각하고, 이해하고, 풀이하는 것을 좋아하며, 코딩과 새로운 알고리즘을 배우는 것을 즐긴다. 현재 테스트 자동화를 위한 프레임워크 개발 업무와 자동차 인포테인먼트 시스템의 반도체 소프트웨어 검증 업무를 수행하고 있다.

소프트웨어라는 용어가 생긴 이후 관련 분야는 점점 더 빠르게 변하고 있고, 변화의 속도는 점점 더 빨라지고 있습니다. 빠르게 변화하는 분야 중 하나가 IT 인프라스트럭처 부분입니다. 관리해야 하는 인프라 구조는 점점 더 복잡하고 더 많은 대상을 더 빠르게 처리해야 합니다. 이러한 IT 인프라스트럭처와 함께 빠르게 진화하는 분야 중 하나가 모니터링 분야입니다. 모니터링 분야는 이전에도 있었지만, 지금은 시스템 관리자들이 모니터링 제품 없이 서비스나 서버를 운영하는 것은 상상하기도 어렵습니다모니터링의 필요성이 더 크게 부각된 시점은 한정된 자원을 효율적으로 관리해야 하고 자원의 상태가 끊임없이 변화하는 클라우드 환경이 본격적으로 도입되기 시작하면서부터입니다. 프로메테우스는 2012년부터 시작된 프로젝트로 쿠버네티스에 이어 2016년에 CNCF(Cloud Native Computing Foundation)의 두 번째 프로젝트가 되었습니다. 이후, 많은 사람들의 관심과 더불어 사실상의 표준 오픈소스 모니터링 시스템으로 자리잡았습니다. 

이 책은 프로메테우스에 대해 알고 싶어 하는 누구나가 참고할 수 있는 책입니다. 국내에는 이제 막 알려지기 시작한 프로메테우스에 대한 책이라 기술 용어 등을 한글로 옮기는 작업은 다소 어색함도 있었지만, 독자들이 이 책을 모두 읽게 되면 프로메테우스가 상상 이상으로 간단하고 사용하기 편리한 시스템이란 사실에 공감할 것이라 생각합니다. 별도의 빌드 없이 압축만 풀면 끝나는 설치 환경, 모니터링 시스템이라고는 믿어지지 않는 단순하고 명료한 웹 기반 GUI, 그런 단순함을 완벽하게 메워주는 강력한 PromQL과 다양한 모니터링 대상을 지원하는 익스포터에 이르기까지, 이 책은 모니터링에 대한 재미있고 흥미로운 경험을 제공할 것입니다이 책이 프로메테우스와 함께하는 모니터링 여정에 도움이 되길 바랍니다. 

차례

[1] 프로메테우스를 시작하며

1장 프로메테우스란 무엇인가

__모니터링이란 무엇인가

__프로메테우스 아키텍처

__프로메테우스 사용시 고려사항


2장 프로메테우스 시작하기

__프로메테우스 실행

__수식 브라우저 사용하기

__노드 익스포터 실행하기

__알림

 

[2] 애플리케이션 모니터링

3장 계측

__간단한 예제 프로그램

__카운터

__게이지

__서머리

__히스토그램

__단위 테스팅 계측

__계측 적용 방법

 

4장 메트릭 게시

__파이썬

__

__자바

__푸시게이트웨이

__브릿지

__파서

__메트릭 게시 형식

 

5장 레이블

__레이블의 정의

__계측 레이블과 대상 레이블

__계측

__집계

__레이블 패턴

__레이블 사용 시점

 

6장 그라파나를 활용한 대시보드

__설치

__데이터 소스

__대시보드와 패널

__그래프 패널

__단일 상태 패널

__테이블 패널

__템플릿 변수

 

[3] 인프라스트럭처 모니터링

7장 노드 익스포터

__CPU 수집기

__filesystem 수집기

__diskstats 수집기

__netdev 수집기

__meminfo 수집기

__hwmon 수집기

__stat 수집기

__uname 수집기

__loadavg 수집기

__textfile 수집기

 

8장 서비스 검색

__서비스 검색 메커니즘

__레이블 재지정

__수집 방법

 

9장 컨테이너와 쿠버네티스

__cAdvisor

__쿠버네티스

 

10장 일반적인 익스포터

__컨설 익스포터

__HAProxy 익스포터

__그록 익스포터

__블랙박스

 

11장 다른 모니터링 시스템 사용하기

__다양한 모니터링 시스템

__인플럭스디비

__StatsD

 

12장 익스포터 작성하기

__컨설 원격측정

__사용자 정의 수집기

__가이드라인

 

[4] PromQL

13PromQL 활용

__집계 기본 사항

__선택기

__HTTP API

 

14장 집계 연산자

__그룹화

__집계 연산자

 

15장 이진 연산자

__스칼라로 작업하기

__벡터 매칭

__연산자 우선순위

 

16장 함수

__타입 변경

__수학 함수

__시간 및 날짜 함수

__레이블 함수

__카운터 함수

__게이지 변화

__시간의 흐름에 따른 집계

 

17장 기록 규칙

__기록 규칙 사용하기

__언제 기록 규칙을 사용하는가

__기록 규칙의 이름 지정 방법

 

[5] 알림

18장 알림

__알림 규칙

__알림매니저 구성하기

 

19장 알림매니저

__통보 파이프라인

__구성 파일

__알림매니저 웹 인터페이스

 

[6] 배치

20장 배치와 유지보수

__롤아웃 계획하기

__페더레이션 기능을 통한 전역화

__장기 저장소

__프로메테우스 실행

__장애에 대한 계획 세우기

__성능 관리

__변경 관리

__더 읽을거리

댓글