nats - prometheus 연동
목적
- nats -> prometheus -> grafana 구성으로 모니터링 환경을 구축 하려고 한다.
방법
nats와 prometheus 모니터링을 하기위해, nats 서버에 prometheus-nats-exporter를 설치 해야한다.
nats와 nats-exporter 연동을 위해서는 nats-server 기동시
-m
옵션으로 모니터링 포트를 지정해야한다.
nats-server -p 4222 -m 8222
- nats-exporter를 기동한다.
prometheus-nats-exporter -varz -jsz=all http://127.0.0.1:8222
nats-exporter가 nats-server보다 먼저 기동되어서는 안된다. 8222 포트가 listen 된것을 확인하고, 기동해야 정상적으로 연동된다.
- nats-exporter가 기동되면 7777 port를 통해 metrics를 조회할 수 있다
curl http://127.0.0.1:8222/metrics | grep ^gnatsd_varz
nasts-exporter와 prometheus가 연동 할 수 있도록 prometheus.yml 파일을 수정한다.
prometheus.tml 파일은 /etc/config/Prometheus.yml에 위치하는데, kubenetes로 설치하는 경우 ConfigMaps 수정을 통해 적용이 가능한다.
ConfigMap 수정
prometheus.yml:
아래scrape_configs:
가 있고, 그 아래- job_name: xxxxxx
이 존재하는데, 같은 depth에 아래와 같이 추가한다. 여러개가 있으면 targets 아래 나열해도 되고, job_name을 여러개 추가해도 된다. job_name을 여러개 추가하는 것이 나중에 grafans에서 (ip가 아니라 이름으로 보이므로) 보기에 좋다.
$ kubectl -n prometheus edit cm prometheus-server
- job_name: nats-exporter-xxxxxxx1
static_configs:
- targets:
- xxx.xxx.xxx.xxx:7777
replicas를 1 -> 0 -> 1로 변경
이렇게 하면 prometheus-server pod가 삭제되었다가 생성된다.
- grafana에 nats dashboard를 추가한다.
https://github.com/nats-io/prometheus-nats-exporter/blob/main/walkthrough/grafana-nats-dash.json