728x90
반응형
프로메테우스란?
- 프로메테우스는 사운드 클라우드에서 처음 제작한 모니터링 & 알람에 초점이 맞춰진 모니터링 오픈소스 툴이다.
- 요청 발생 수, DB 연결 수 등의 숫자로 치환될 수 있는 시계열 데이터를 메트릭스(Metrics) 라 하는데, 이를 시계열 데이터로 저장 및 수집하는 툴이다.
특징
- 다차원 시계열 데이터를 메트릭스 명과 key-value 쌍으로 관리한다.
- PromQL 이라는 쿼리 언어로 차원들을 관리한다.
- 다른 저장소에 종속되지 않는다.
데이터 수집 방법
- 엔드포인트에 HTTP 요청을 통해 데이터를 스크레이핑 한다.
- exporter를 배포해 해당 exporter의 엔드포인트를 통해 데이터를 스크레이핑한다.
시스템 메트릭 수집
- 프로메테우스가 서버의 시스템 메트릭스(Load Average, CPU Usage 등)을 수집하는 방법은 node-exporter를 사용하는 것이다.
- node-exporter는 시스템 정보를 수집하는 툴이라고 생각하면 편하다.
Node Exporter 실행
- 컨테이너로 이를 시행시킬 수 있다.
- 아래처럼 설정한다. 이렇게 했을 때, exporter의 엔드포인트로 접근해 데이터를 수집할 수 있다.
services:
exporter:
image: prom/node-exporter:v1.8.2
container_name: exporter
expose: 9100
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
networks:
- proxy
- path.roofts 설정
- 호스트 전체 모니터링을 위한 설정
- 루트 디렉토리에 대해 바인딩 시켜, Exporter가 호스트 FileSystem에 접근하게 해 주는 옵션
- 이후 루트 디렉토리를 볼륨으로 넣음
- 일반 디렉토리면 그냥 넣어주면 된다.
프로메테우스 실행
설정
- 프로메테우스 설정
- prometheus.yml 파일로 해야 인식한다. 물론 볼륨으로 넣을 때, 명칭을 바꿔주는 것도 가능하다.
- 수집할 대상의 엔드포인트를 정의한다.
- 이는 scrape_configs 에 그 타겟 대상과 라벨링이 가능하다.
global:
scrape_interval: 15s
evaluation_interval: 15s
# Set the scrape interval to every 15 seconds. Default is every 1 minute.
rule_files:
- alert.rules.yml
alerting:
alertmanagers:
- static_configs:
- targets: ["host.docker.internal:9093"]
scrape_configs:
- job_name: 'System Server'
static_configs:
- targets: ['node:9100']
- job_name: 'cAdvisor'
static_configs:
- targets: ['cadvisor:8080']
- 설정 옵션 관련 내용
- global: 전체적인 데이터 수집에 대한 전역 설정
- scrape_configs: 수집 작업에 대한 정의
- remote_write: 수집된 메트릭을 원격 엔드포인트로 전달하기 위한 설정
컨테이너 설정
- prometheus.yml 파일 이외에도 alert.rules (장애 알람 규칙) 등 다른 설정들도 먹일 수 있다.
- 해당 설정들은 /etc/prometheus 경로에 넣어주면 된다.
services:
prometheus:
image: prometheus:v2.54.1
volumes:
- ./prom-config/prometheus.yml:/etc/prometheus/prometheus.yml
- ./prom-config/alert.rules.yml:/etc/prometheus/alert.rules.ym
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--web.enable-lifecycle'
networks:
- proxy
restart: unless-stopped
ports:
- 9090:9090
GUI
- 이제 http://localhost:9090으로 접근해 보면 아래와 같이 확인할 수 있다.
- 아래 랜딩페이지 화면에서 PromQL을 통해 데이터를 쿼리해 볼 수 있다.
'
- 또한 현재 데이터를 수집하고 있는 대상을 확인하는 방법은 Status - Target으로 확인할 수 있다.
- 여기서 현재 정상적으로 데이터가 수집되고 있는지도 확인할 수 있다.
728x90
반응형
'데브옵스 devOps > Monitoring' 카테고리의 다른 글
[CNCF] OpenTelemetry(OTel)란? (0) | 2024.11.22 |
---|