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/