여러 이유로 Prometheus, Grafana 실습 환경이 필요해서 글 작성하게 되었습니다.
설치하기
어디까지나 Prometheus의 기본적인 지표를 Grafana에 시각화하는 것이 목적이므로, Docker, K8s 등의 외부 변수를 최소화합니다.
Prometheus 설치하기
brew install prometheus brew services start prometheus brew services info prometheus
Node Exporter 설차하기
brew install node_exporter brew services start node_exporter brew services info node_exporter
Grafana 설치하기
brew install grafana brew services start grafana brew services info grafana
설정정보
기본적으로 세 프로그램은 아래의 기본 포트를 가집니다.
Prometheus - http://localhost:9090/
Prometheus Node Exporter - http://localhost:9100/
Grafana - http://localhost:3000/
버전 정보
최소한 Prometheus, Grafana 버전을 아래와 같이 통일해주세요.
prometheus, version 3.0.1 (branch: non-git, revision: non-git)
grafana version 11.3.0
버전 정보는 아래와 같이 조회할 수 있습니다.
prometheus --version | grep prometheus
grafana --version
Prometheus 사전 준비
이런 설정 정보는 ps -eo command | grep “target” | grep -v “grep target”을 사용하여 편하게 조회할 수 있습니다.
ps -eo command | grep “target” | grep -v “grep target”
아래는 Prometheus 실행 인자를 확인하는 예제 코드입니다.
ps -eo command | grep prometheus | grep -v "grep prometheus"
/opt/homebrew/Cellar/prometheus/3.0.1/bin/prometheus --config.file /opt/homebrew/etc/prometheus.yml --web.listen-address=127.0.0.1:9090 --storage.tsdb.path /opt/homebrew/var/prometheus
위에서 기본 설정 파일을 확인해보면 9090 에서 매트릭 수집하는 부분 알 수 있습니다.
cat /opt/homebrew/etc/prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
Prometheus가 Node Exporter에 scrap_configs의 설정을 변경해야 합니다.
이 설정이 있어야 Prometheus가 시스템 메트릭을 가져올 수 있습니다.
global:
scrape_interval: 15s
scrape_configs:
- job_name: "node_exporter"
static_configs:
- targets: ["localhost:9100"]
이후 아래 명령어로 Prometheus를 재시작해주도록 합시다.
brew services restart prometheus
Grafana 사전 준비
아래는 Grafana 실행 인자를 확인하는 예제 코드입니다.
ps -eo command | grep grafana | grep -v "grep grafana"
/opt/homebrew/opt/grafana/bin/grafana server --config /opt/homebrew/etc/grafana/grafana.ini --homepath /opt/homebrew/opt/grafana/share/grafana --packaging=brew cfg:default.paths.logs=/opt/homebrew/var/log/grafana cfg:default.paths.data=/opt/homebrew/var/lib/grafana cfg:default.paths.plugins=/opt/homebrew/var/lib/grafana/plugins
위에서 기본 실행 파일을 열어보면 엄청나게 많은 파일이 출력됩니다.
cat /opt/homebrew/etc/grafana/grafana.ini
##################### Grafana Configuration Example #####################
#
# Everything has defaults so you only need to uncomment things you want to
...
파일 구성을 알아보기가 매우 힘드므로 주석 (#) 등을 제거해봅시다.
이때 출력되는 값들이 기본으로 Grafana에 설정되는 값일 겁니다.
cat /opt/homebrew/etc/grafana/grafana.ini | grep -v '#'
;app_mode = production
;instance_name = ${HOSTNAME}
[paths]
;data = /var/lib/grafana
;temp_data_lifetime = 24h
...
다만 실제로 저희는 프로비저닝 폴더에서 작업을 진행할 겁니다.
따라서 출력되는 값을 필터링해서 provisioning 경로를 찾아야합니다.
cat /opt/homebrew/etc/grafana/grafana.ini | grep -v '#' | grep '/'
;data = /var/lib/grafana
;logs = /var/log/grafana
;plugins = /var/lib/grafana/plugins
;provisioning = conf/provisioning
...
아까 위에서 실행 인자 중에 homepath가 있었는데 여기서부터 config/provisioning 쪽에 관련 정보가 저장됩니다.
ls /opt/homebrew/opt/grafana/share/grafana/conf/provisioning
access-control alerting dashboards datasources plugins
Grafana Datasource, Dashboard 준비
Grafana에서 Prometheus(localhost:9090) Datasource를 추가합니다.
이후 Node Exporter Full[1] 이라는 친구의 ID를 기반으로 Dashboard를 임포트할 수 있습니다.
1860
수집 기본값이 비활성화인 친구들은 N/A로 나오지만,
대부분의 지표는 정상적으로 출력이 되는 것을 볼 수 있습니다.
여기까지 완료했으면 몇가지 Prometheus 실습을 위한 최소 준비가 완료되었습니다.