p1. Introduction
sudo apt update
sudo apt intall -y docker.io
아키텍쳐와 구성 요소 파악
exporter -> 메트릭 수집 및 포트 오픈(nodeexporter, sqlexporter ...)
prometheus -> 메트릭 수집 및 규칙 확인
grafana -> 데이터 시각화
alertmanager(prometheus) -> 알림 발송
pushgateway(prometheus) -> push 방식 사용
p2. promethus
prometheus란 무엇인가?
CNCF 리눅스 산하조직, Prometheus는 GRADUATED에 속해 있다.
1. 메트릭 이름과 키-값 쌍으로 이뤄진 다차원 데이터 모델
<메트릭 이름>{<라벨 이름>=<라벨 값>}<메트릭 값>
2. 다차원 데이터 모델 활용을 위한 쿼리 언어
PromQL - 실시간으로 시계열 데이터를 선택 및 가공
3. HTTP를 이용한 PULL 방식 메트릭 수집
장점
- 브라우저를 통한 확인 가능
- 고가용성을 위한 다수의 모니터링 용이
- 모니터링 서버 변경 용이
단점
- 새로운 호스트 발생 시 추가 필요
- 모니터링 서버 부하(PUSH 방식보다 상대적으로 서버 부하가 높다)
---
"up" 으로 대상의 데이터가 정상 수집되는지 아닌지를 확인할 수 있다.
특정 타겟에 라벨을 추가해주어서 데이터가 정상적으로 수집되고 있는지 확인가능
또 특정 경로로부터 데이터를 받아올 수도 있다.
/etc/hosts 설정
localhost 127.0.0.1
server1 192.168.10.11
server2 192.168.10.12
server3 192.168.10.13
Docker를 이용한 Prometheus 설치
Docker란
- 컨테이너 기반의 가상화 툴
- 개발 환경이 맞지 않더라도 손쉽게 배포 가능
- 호스트 시스템의 커널 사용
- 기타 바이너리와 라이브러리 등은 이미지를 통해 가상화
docker run
새로운 컨테이너에서 해당 명령어를 실행
-d, --detach : 백그라운드에서 컨테이너 실행 및 컨테이너 ID 출력
--name: 컨테이너에 이름 할당
--network: 컨테이너를 네트워크에 연결
--v, --volume: 컨테이너 볼륨을 호스트 볼륨에 바인딩 -> 컨테이너가 종료되더라도 데이터 유출 방지용
docker ps
컨테이너 목록 출력
-a, --all 실행이 아닌 목록도 출력
docker logs
컨테이너 로그 출력
-f, --follow 컨테이너 로그 추적
docker restart
하나 이상의 컨테이너 재시작
docker rm
하나 이상의 컨테이너 제거
-f, --force 실행중인 컨테이너 강제 제거
---
프로메테우스
--config.file 설정파일 경로 설정
--storage.tsdb.path 메트릭 저장소 경로
--web.enable-lifecycle http 통신을 통한 Prometheus reload 및 shutdown 활성화
--storage.tsdb.retention.time 얼마나 오랫동안 데이터를 유지할지(최소시간, 정확히 이 시간만큼만 저장되는 건 아님)
--log.level 지정된 단계 이상으로 로그를 보임 [debug, info, warn, error]
---
mkdir -p /prometheus/config /prometheus/data
vi /prometheus/config/prometheus.yaml
scrap_configs:
- job_name: 'prometheus'
scrape_interval: 3s
scrap_timeout: 1s
static_configs:
- targets:
- localhost:9090
su docker inspect -f '{{json .Config.Cmd}}' prom/prometheus:v2.29.2 | python3 -mjson.tool
-> 프로메테우스 기본 옵션을 확인할 수 있다.
su docker run -d --name=prometheus \
-v /prometheus/config:/etc/prometheus \
-v /prometheus/data:/data \
prom/prometheus:v2.29.2 \
--config.file=/etc/prometheus/prometheus.yaml \
--storage.tsdb.path=/data
-d : 백그라운드 실행
-v : 데이터 유실을 피하기 위한 볼륨(설정파일과 데이터)
--config.file : 설치 옵션 추가
하지만 이런식으로 배포하면 권한문제로 막히게 된다.
su docker logs -f prometheus 2>&1 | grep permission
su chown -R 65534:65534 /prometheus