k8s에 Prometheus + Grafana 통합하기 (kube-prometheus)
관련 포스트
https://blog.naver.com/sssang97/223112560400
https://blog.naver.com/sssang97/223112752812
여기서는 K8S 환경에서 Prometheus와 Grafana로 모니터링 시스템을 구축하는 방법을 다뤄본다.
내 테스트환경은 GCP GKE인데, 다른 provider라도 크게 다를 것은 없을 것이다.
Pod 구성하기
고맙게도 누가 일체형으로 말아준 구성이 있다.
service, networkpolicy,
clone받고,
git clone https://github.com/coreos/kube-prometheus.git
cd kube-prometheus/

apply로 다 띄워준다.
kubectl apply --server-side -f manifests/setup
kubectl wait --for condition=Established --all CustomResourceDefinition --namespace=monitoring
kubectl apply -f manifests/

이렇게 다 뜨면 되고
그러면 저 grafana 3000 포트를 사용해서 접속을 할 수 있다.
내부 환경이라면 바로 내부 IP로 접속해서 사용하면 되고, 외부에서 접속할 일이 있다면 IP를 추가로 할당해준다.
이렇게 말이다.
kubectl patch service grafana -n monitoring -p '{"spec": {"type": "LoadBalancer"}}'

그리고 내 아이피를 찾아서 그 아이피를 허용하게끔 방화벽 설정을 풀어준다.
기본설정은 다 막는거다.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
labels:
app.kubernetes.io/component: grafana
app.kubernetes.io/name: grafana
app.kubernetes.io/part-of: kube-prometheus
app.kubernetes.io/version: 9.5.2
name: allow-grafana
namespace: monitoring
spec:
egress:
- {}
ingress:
- from:
- ipBlock:
cidr: 내아이피/32
ports:
- port: 3000
protocol: TCP
podSelector:
matchLabels:
app.kubernetes.io/component: grafana
app.kubernetes.io/name: grafana
app.kubernetes.io/part-of: kube-prometheus
policyTypes:
- Egress
- Ingress
적용하면

이제 접속이 될 것이다.
기본계정인 admin/admin으로 로그인하고,
비밀번호 수정해주면
끝이다.


기본적인 것들은 얼추 갖추어져 있으니, 필요한대로 변경하거나 추가하면서 쓰면 된다.
참조
https://stackoverflow.com/questions/57716003/should-prometheus-exporters-be-run-as-sidecar-containers-or-in-separate-deployme
https://gist.github.com/payam-int/edf977c6af603fee0ce1b05da7792fe7
https://chhanz.github.io/kubernetes/2021/09/30/deploy-kube-prometheus/