# 사용자가 만든 api 가 prometheus 데이터 포맷(시계열 데이터...)으로 응답할때
# 이 응답을 주기적으로 prometheus 에서 수집하기 위해 monitoring.coreos.com 의 ServiceMonitor 리소스를 생성한다.
# 사용자 api 서버에 대한 Service 리소스
apiVersion: v1
kind: Service
metadata:
labels:
app: ysoftman-server
release: prometheus-monitor
name: ysoftman-server
namespace: ysoftman-server
spec:
ports:
- name: metrics
port: 80
protocol: TCP
targetPort: 8080
selector:
app: ysoftman-server
---
# ServiceMonitor 리소스 생성
# 위 Service 에 대해 주기적으로 요청해 prometheus 로 수집한다.
# ServiceMonitor 가 정상적으로 등록되면 prometheus에서 메트릭이 수집되고, tagets 에 추가한 api 를 확인할 수 있다.
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
app: prometheus-monitor-ysoftman-exporter
# prometheus 오브젝트의 다음 값이 'release: prometheus-monitor' 로 되어 있고
# matchLabels 에 명시해야 이 ServiceMonitor 가 prometheus target 으로 추가된다.
# kubectl get prometheus -n prometheus-monitor prometheus-monitor -o yaml | yq '.spec.serviceMonitorSelector'
release: prometheus-monitor
name: prometheus-monitor-ysoftman-exporter
namespace: prometheus-monitor
spec:
namespaceSelector:
# 모든 namespace 에서 대상(수집,모니터링)할 service 찾는다.
# any: true
# namespace 가 ysoftman-server 인곳에서 대상(수집,모니터링)할 service 를 찾는다.
matchNames:
- ysoftman-server
selector:
matchLabels:
# 다음 label(key,value)가 명시된 Service 를 선택한다.
app: ysoftman-server
release: prometheus-monitor
endpoints:
# Service 요청할 path
- path: /metrics
# Service port name 명시
port: metrics