프로메테우스(Prometheus)는 CNCF가 호스트하는 오픈 소스 소프트웨어 모니터링 도구다.

 

프로메테우스 구성요소

- prometheus-alertmanager : 규칙에 위반하는 사항에 대해서 알람을 전송(메일, 슬랙 등).

- prometheus-kube-state-metrics : 메트릭 수집을 위한 /metrics 엔드포인트를 제공

- prometheus-pushgateway : application이 push gateway에 메트릭을 push 한 후, prometheus server가 pushgateway에 접근해 metric을 pull하는 방식. 프록싱으로 접근할 수 없는 곳에 데이터가 존재하는 경우 사용.

- prometheus-server : 저장소.

- prometheus-node-exporter : prometheus에게 메트릭 정보를 제공.

 

프로메테우스 서버가 수집하는 메트릭은 데이터 소스에서 수집하는 풀방식 아키텍처를 채용하고 있으므로 프로메테우스 서버가 데이터를 수집하러 가는 형태가 된다. 

출처 : https://prometheus.io/docs/introduction/overview/
출처 : https://medium.com/finda-tech/kube-state-metrics%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-1303b10fb8f8

Helm을 이용한 설치

- 옵션 확인

helm inspect values stable/prometheus

- 설치

helm install prometheus stable/prometheus
--set alertmanager.persistentVolume.storageClass="xx"
--set server.persistentVolume.storageClass="xx"
--set pushgateway.persistentVolume.storageClass="xx"

--set nodeExporter.tolerations[0].key=xxx \
--set nodeExporter.tolerations[0].operator=Exists \
--set nodeExporter.tolerations[0].effect=NoSchedule

- 업데이트

helm upgrade prometheus -f values.yaml stable/prometheus

- 삭제

helm uninstall prometheus

- Grafana 설치

helm install grafana stable/grafana \
--set datasources."datasources\.yaml".apiVersion=1 \
--set datasources."datasources\.yaml".datasources[0].name=Prometheus \
--set datasources."datasources\.yaml".datasources[0].type=prometheus \
--set datasources."datasources\.yaml".datasources[0].url=http://prometheus-server.default.svc.cluster.local \
--set datasources."datasources\.yaml".datasources[0].access=proxy \
--set datasources."datasources\.yaml".datasources[0].isDefault=true \

--set adminPassword='password' \

--set plugins=grafana-kubernetes-app

출처

- [Helm prometheus]

https://gruuuuu.github.io/cloud/l-helm-basic/

- [Grafana] 

https://grafana.com/grafana/dashboards/315

- [prometheus arch]

https://medium.com/finda-tech/kube-state-metrics%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-1303b10fb8f8

https://prometheus.io/docs/introduction/overview/

- [container restart] : https://stackoverflow.com/questions/41452930/how-can-i-alert-for-container-restarted

+ Recent posts