devops
Service Monitor 서비스 모니터 Target 등록 에러 본문
대부분 쿠버네티스 기반 모니터링에 특화된 Prometheus Operator를 활용하여 job을 추가한다.
Prometheus Operator를 사용하면 일일이 kubectl patch를 통해 configmap에서 job을 추가하지 않고도 Service monitor 혹은 Pod monitor라는 CR로 쉽게 등록이 가능하다는 장점이 있다.
그러나 문제는 Service Monitor를 apply했는데도, Target에 등록조차 안되는 상황이 올때가 있다.
kubectl get servicemonitor 를 확인하면 오브젝트가 정상적으로 apply된 상태임을 알 수 있다. 에러 메시지도 확인할 수 없는 상황.
사실 프로메테우스 오퍼레이터는 초기 배포 시 namespace와 label 키 값을 설렉터로 지정하여 특정 Service monitor만 읽어들인다. 그렇기 때문에 오퍼레이터의 셀렉터 label을 확인하고 Service monitor를 배포할 필요가 있다.
# redis-service-monitor.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
app: redis
release: prometheus-stack
name: redis
namespace: monitoring
spec:
namespaceSelector:
any: true
selector:
matchLabels:
app.kubernetes.io/instance: wemixdev-dex
app.kubernetes.io/name: prometheus-redis-exporter
endpoints:
- port: redis-exporter
위는 배포했던 Service monitor 중 하나다. label을 보면 app과 release라는 키가 설정되어있다. 나는 프로메테우스 오퍼레이터를 helm-chart로 배포했는데, 초기 배포할 때 serviceMonitorSelector로 선언된 release값은
release: prometheus라고 선언되어있다. 해당 라벨 값의 Service monitor만 불러오기 때문에 위에서 release: prometheus-stack이라는 Service monitor는 읽어오지 못한 것이다.
Service monitor의 release label키를 일치시키게 했더니 이 문제는 해결되었다.
'DevOps > Monitoring' 카테고리의 다른 글
Promtail - Loki을 이용하여 쿠버네티스 Container 로그파일 모니터링하기 (0) | 2023.12.27 |
---|---|
Grafana - Loki - Promtail 모니터링 (0) | 2023.09.29 |