Prometheus는 메트릭 기반 오픈소스 모니터링 시스템이다
특히 쿠버네티스(Kubernetes) 환경에서 표준처럼 사용되며,
시스템/애플리케이션의 성능과 상태를 실시간으로 관찰하고 알림까지 제공하는 도구다.
모니터링 리소스를 분리하려고 전용 네임스페이스를 만든다.
kubectl create namespace monitoring
아래 리소스 정의 파일들을 작성한다.
namespace.yaml: 모니터링 네임스페이스 정의prometheus-configmap.yaml: 프로메테우스 설정 정보prometheus-deployment.yaml: 프로메테우스 배포 설정prometheus-service.yaml: 프로메테우스 서비스 정의prometheus-serviceaccount.yaml: 서비스 계정prometheus-clusterrole.yaml: 클러스터 권한 설정prometheus-clusterrolebinding.yaml: 권한 바인딩ConfigMap에 아래 설정을 넣는다.
프로메테우스가 쿠버네티스 API에 접근할 수 있도록 권한을 부여한다.
쿠버네티스 리소스 상태 메트릭을 수집하려고 kube-state-metrics 컴포넌트를 설치한다.
monitoring으로 맞춘다prom/prometheus:latest 이미지로 Deployment 생성http://192.168.49.2:30090)에 접속minikube의 pod에서 prometheus가 실행 중인 것을 확인할 수 있다.

다음과 같이 k8s의 health도 한눈에 확인할 수 있다.

PromQL를 이용해서 디코봇 pod의 cpu 누적 사용시간을 그래프로 확인할 수 있다.

하지만 예쁘지 않아서 맘에 안든다. 다음에는 Grafana를 설치해서 웹 ui를 통해 k8s 전체 리소스를 한눈에 볼 수 있게 해보겠다.