Linux 환경에서 Docker 컨테이너를 통해 어플리케이션을 실행하여 간단한 PC 모니터링 시스템을 만들어보겠습니다. 본 글에서는 앞으로 진행할 실습 환경에 대해 소개합니다.
실습 개요
프로메테우스의 Window Exporter를 모니터링을 진행할 PC에 설치합니다.
Window Exporter의 Endpoint로 프로메테우스는 metric을 수집(GET)합니다.
프로메테우스가 수집한 데이터는 그라파나 대시보드를 통해 시각화됩니다.
프로메테우스와 그라파나는 모두 도커 컨테이너를 통해 실행됩니다.
실습 환경
- (OS) Rocky Linux 9.1
- Docker : v20.10.22
- Prometheus (latest image)
- Grafana (latest image)
- (모니터링 PC OS) Window 10
Rocky Linux란
Ubuntu와 함께 CentOS의 향후 대안으로 꼽히는 운영체제로 CentOS의 후속작으로도 불립니다. 레드햇(Red Hat) 계열의 운영체제이므로, YUM 패키지 관리 시스템을 사용할 수 있습니다. 앞으로의 실습에서 리눅스 관련 작업은 모두 YUM으로 진행합니다.
Docker란
도커는 리눅스 컨테이너 기술을 기반으로 특정한 서비스를 패키징하고 배포하는데 유용한 오픈소스 프로그램입니다. 여기서 컨테이너 기술이란 호스트 OS를 공유하면서도 어플리케이션 실행을 위한 독립적인 환경을 만들 수 있는 기술입니다. Docker에 대해서는 다른 포스팅에서 좀 더 자세히 다루도록 하겠습니다.
Prometheus란
메트릭 수집, 시각화, 알림, 서비스 디스커버리 기능을 제공하는 오픈 소스 모니터링 시스템입니다.
Prometheus 동작 방식을 간단하게 정리해보겠습니다.
- Jobs/exporters는 metric을 수집하는 과정을 나타냅니다.
- 모니터링 타겟에 Exporter를 설치하면, 이 Exporter는 metric을 수집합니다. 또한 Prometheus Server가 metric 데이터를 가져갈 수 있도록 /metrics라는 HTTP 엔드포인트를 제공합니다.
- Prometheus Server는 /metrics 엔드포인트로 HTTP GET 요청을 보내 metric 데이터를 수집합니다. 이를 pull metrics라고 합니다.
- Prometheus Server가 수집한 정보는 시각화 도구인 Grafana를 통해 대시보드 형태로 표현됩니다.
Grafana란
시계열(time-series) 메트릭 데이터를 시각화할 수 있는 대시보드를 제공해주는 오픈소스 시각화 도구입니다. 여기서 시계열 데이터란 시간 흐름에 따라 순차적으로 기록된 데이터를 말합니다. 쉽게 말해 시간 순으로 배열된 데이터인 것이죠. 따라서 Prometheus를 포함하여 Elasticsearch, InfluxDB 등 시계열 데이터를 처리하는 여러 서비스들과 연동이 가능합니다.
대시보드는 내가 직접 커스텀하여 구성할 수도 있고, 다른 유저들이 만들어놓은 대시보드 템플릿을 import하여 구성할 수도 있습니다.
다음 글에서는 Linux PC로 원격 접속하여 Docker 설치를 진행해보겠습니다.
참고자료
https://prometheus.io/docs/introduction/overview/
Overview | Prometheus
An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.
prometheus.io
Grafana | Query, visualize, alerting observability platform
Transformations Transformations allow you to rename, summarize, combine, and perform calculations across different queries and data sources. Transform non-time-series data into tables (e.g., JSON files or even simple lookup tables) in seconds without any c
grafana.com
댓글