

현재 이렇게 pods와 service는 모두 올라온 상태이다.
따라서
http://192.168.1.12 에 접속하게 되면 다음과 같이 확인할 수 있다.

Grafana의 역할은 다음과 같다.
혼자서는 아무것도 못하기 때문에
반드시 데이터 소스(Data Source) 가 필요하다. 또한
Prometheus의 역할은 다음과 같다.
즉,
Grafana는
“Prometheus에게 모아둔 데이터 좀 달라”
라고 요청하는 구조다.
그래서 Grafana 설정에서
Data Source → Prometheus 를 추가하는 것이다.

이렇게 설정 -> data source가 나오게 되는데,

여기서 프로메테우스를 선택해준다.
Prometheus를 선택했다는 말은 “Grafana의 데이터 공급자는 Prometheus다”
라고 선언하는 것이다.

그런다음, url에 192.168.1.11을 적어도 되지만,
http://prometheus-server.monitoring.svc.cluster.local를 적어준다.
(실무적으로는 도메인 네임을 써서 하는것이 훨씬 변경에 대응하기 좋다.)
이는 Grafana와 Prometheus가 같은 monitoring 네임스페이스에 존재하기 때문이다.
Grafana Pod는 Prometheus에 접근할 때
쿠버네티스의 내부 DNS 탐색 규칙을 사용한다.
쿠버네티스는 기본적으로 다음 순서로 서비스를 탐색한다.
따라서 전체 주소인
prometheus-server.monitoring.svc.cluster.local
를 모두 입력하지 않아도,
Grafana는 monitoring 네임스페이스 내에 존재하는
prometheus-server Service를 자동으로 찾아갈 수 있다.
해당 서비스 이름은 다음 명령어를 통해 확인할 수 있다.
kubectl get svc -n monitoring

이 명령어 결과에 표시되는
prometheus-server가
Grafana에서 연결해야 할 Prometheus Service의 실제 이름이다.

save&test 하면 다음과 같이 잘되는 것을 확인할 수 있다.
Grafana와 Prometheus는
모두 쿠버네티스 클러스터 내부의 Pod로 실행되고 있다.
따라서 Grafana는
외부 IP가 아닌 쿠버네티스 내부 Service 주소를 통해
Prometheus에 접근한다.
쿠버네티스에서는
다음과 같은 DNS 규칙을 제공한다.
서비스이름.네임스페이스.svc.cluster.local
이를 통해
Grafana는 Prometheus Service를
IP가 아닌 이름 기반으로 안정적으로 접근할 수 있다.