새로지은 역삼의 센터필드 AWS 건물에서 Prometheus에 대한 세미나에 참석할 수 있었다.
Monitoring
- 서비스 관점: 지연시간, 트래픽, 에러, 포화도
- 시스템 관점: 네트워킹 에러, 사용율, 포화도
1. Prometheus
Prometheus
- Built at SoundCloud 2012
- Time-series based
- CNCF 2nd graduated
- Service discovery
Features
- Multi-dimensional data
- PromQL
- Pull over HTTP
- Push gateway sometimes
Exporter
- 서비스나 어플리케이션에서 데이터를 수집
- Go, Java, Python, Ruby
AlertManager
Visualization
- API를 PromQL쿼리 통해 데이터 제공
- WEB-GUI 2종류의 내부 시각화 컴포넌트 제공, PromQL 쿼리를 이용한 시각화
- Grafana 다양한 데이터소스로 시각화 가능, alert 무료, Grafanalab을 통한 다양한 dashboard 템플릿, 키바나보다 이쁜 느낌
2. EKS
Kubernetes Components
- EKS를 한 이유는 API서버를 제공하고 있다.
Control Plane Componenets
- 노드들이 각각 되어 있기 때문에 하나 다운되면 힘들고, 버전업이 되면서 Kubernetes 갖추고 있는 컴포넌트의 버전과 충돌이 된다.
EKS
- Control Plane 역할에 한해서 대신 해 줌.
- kubernetes는 혼자서 할 수 있는 게 별로 없다.
- 이걸 최상의 상태로 유지해줍니다, 무중단 보장.
3. Helm
Command는 소문자로 하고, document는 대문자로 하기.
Package manager
- 우리에게는 dependency 벽이 있어서 package manager로 하는 게 따로 혼자 하는 것보다 낫다.
Helm
- CNCF graduated
- Rollback (빠른 롤백 가능), manage complexity, easy updates, simple sharing
- Yaml 형식의 chart를 이용: Chart.yaml, charts/, Templates, Values.yaml
4. Prometheus Operator
Operator
- Kubernetes에서 Prometheus의 관리 제공, 간편한 스택 구성과 자동화 제공.
- 주요기능: 기본적으로 kubernetes에서 설치할 때 제공되는 관리수준 느낌이지만, 딥다이브하면 생각보다 복잡함.
Vs.
- Prometheus Operator: 공식설치 방식
- kube-prometheus: 클러스터링을 목적으로 하는 설치, HA 지원, Prometheus Operator 포함함
- community helm chart: Kube-prometheus를 package manager를 사용하여 설치
Operator
5. 데모
윈도우 choco로 helm 설치 후 helm version을 통해 설치 완료를 확인함.
- helm search repo
- kubectl create ns monitoring
- helm install kps-monitor prometheus-community/kub-prometheus-stack
- kubectl get pods -n monitoring
- kubectl get service -n monitoring
- helm search repo
- helm fetch prometheus-communitu/kube-prometheus(...)
- 이후 yaml파일의 포트 설정 (3000줄 가량 되는데, 이것도 줄인 것이다)
- kubectl get svc -n monitoring