Grafana, prometheus, node-exporter install guide
**모니터링**
은 Devops 방법론을 도입할 때 자주 간과되는 분야 중 하나다. 과거의 모니터링 솔루션은 프로그램 환경의 기본적인 통계에 대한 시야만 제공했다. 그러나 요즘은 애자일한 개발 문화, 빈번한 코드 변경이 일반화되면서 프로그램 환경에 대한 더 종합적인 실시간 시야가 필요해졌다. 그래서 최근 부상하고 있는 모니터링 도구인 Prometheus
라는 소프트웨어를 소개하려고 한다.
Prometheus
는 이벤트 모니터링 및 alert에 사용되는 오픈소스 소프트웨어이다. Grafana
같은 Metric dashboard, graph 편집 툴로 다양하게 시각화할 수도 있다. 그리고 node-exporter
를 통해 시스템 Metric(disk I/O 통계, CPU 부하, 메모리 사용량, 네트워크 통계 등)을 분석할 수도 있다.
호스트 네임 설정, 포트 열고 닫기 등등 네트워크 및 리눅스 command에 관한 기본적인 지식이 있다는 가정하에 진행한다.
Contents
Prometheus
설치Grafana
설치node-exporter
설치- Prometheus-node_exporter Connetion
- Prometheus-Grafana Connention
- Grafana AlertManeger setting
- Conclusion
Version Info
- **
Ubuntu** 18.04 LTS
- **
prometheus**-2.9.2.linux-amd64
- **
grafana**-6.1.4.linux-amd64
1. Prometheus
모니터링 도구
서버에 클라이언트가 떠 있으면 서버가 주기적으로 클라이언트에 접속해서 데이터를 가져오는 방식
Expoter가 열어놓은 HTTP 엔드포인트에 접속해서 Metric을 수집한다.
go 언어로 만들어져서 쓰레드처리가 뛰어나다는 장점이 있다.
Prometheus Architecture
Exporter
- 프로메테우스 클라이언트 기반이 아닌 애플리케이션들에서 Metric 데이터를 수집할 수 있게 해준다.
- 본 문에서는
node-exporter
로 시스템 리소스를 모니터링할 것이지만nginx-exporter
,mysql-exporter
등등 여러가지 exporter가 존재해서 여러 애플리케이션을 모니터링할 수 있다.
Prometheus Server
- 시각화 툴인
Grafana
와 연동해서 여러가지 시각화를 할 수 있다. Prometheus
의 AlertManager를 통해 Alert를 설정할 수 있는데 본 문에서는Grafana
의 AlertManager에서 Alert를 설정할 것이다. (간편하다.)
Prometheus agent installation
wget https://github.com/prometheus/prometheus/releases/download/v2.9.2/prometheus-2.9.2.linux-amd64.tar.gz
wget 명령어로 github에서 설치할 파일을 다운받는다.
아래 주소에서 cpu 종류, 릴리즈 버전, 운영체제를 고려해서 다운 받도록한다.
Download 주소: https://github.com/prometheus/prometheus/releases/download
gzip -d prometheus-2.9.2.linux-amd64.tar.gz
tar -xvf prometheus-2.9.2.linux-amd64.tar
cd prometheus-2.9.2.linux-amd64/
압축을 풀고 디렉터리 안으로 이동한다.
./prometheus --config.file=prometheus.yml
prometheus
를 실행한다.
Prometheus의 실행화면이다. (default port 번호 9090)
2. Grafana
데이터 시각화, 모니터링 및 분석을 위한 오픈 소스이다.
그래프, 단일 차트, 테이블, 히트 맵 및 프리 텍스트 패널을 지원할 뿐만 아니라 공식,커뮤니티 기반 플러그인 및 시각화 할 수있는 앱과의 통합을 지원한다.
오픈 소스이기 때문에 여러 다른 데이터 소스와의 통합을 위해 플러그인을 처음부터 작성할 수 있다.
파일을 다운받고 압축을 풀어준다. 그리고 실행한다.
아래 주소에서 운영체제를 고려해서 다운 받아주도록한다.
wget https://dl.grafana.com/oss/release/grafana-6.1.4.linux-amd64.tar.gz
tar -zxvf grafana-6.1.4.linux-amd64.tar.gz
cd grafana-6.1.4
./bin/grafana-server web
Download 주소: https://grafana.com/docs/installation/
초기 아이디 비밀번호는 admin이다. (default port 번호 3000)
로그인 후 제일 먼저 보이는 dashboard 화면이다.
datasource를 Prometheus로 설정한다.
URL에는 Prometheus
url을 넣어주면 된다.
3. node-exporter
호스트 서버의 CPU, Memory, Disk 사용량등을 수집하는 node-exporter
는 모니터링 대상의 Metric 데이터를 수집하고 Prometheus
가 접속했을 때 API로 노출한다.
cd /tmp
curl -LO https://github.com/prometheus/node_exporter/releases/download/v0.16.0/node_exporter-0.16.0.linux-amd64.tar.gz
tar -xvf node_exporter-0.16.0.linux-amd64.tar.gz
sudo mv node_exporter-0.16.0.linux-amd64/node_exporter /usr/local/bin/
github에서 파일을 다운받고, 압축을 풀어준다.
아래 주소에서 cpu 종류, 릴리즈 버전, 운영체제를 고려해서 다운 받도록한다.
Download 주소: https://github.com/prometheus/node_exporter/releases
sudo nano /etc/systemd/system/node_exporter.service
node_exporter.service 파일을 만들어준다.
node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
- 이 파일은
Node-Exporter
의 콜렉터가 기본적으로 수집하는 Metric 세트로node-exporter
를 시스템에게 실행하게 지시한다. - 아래 주소로 들어가면
Node-Exporter
의 콜렉터가 수집하는 Metric의 리스트를 볼 수 있다.
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl status node_exporter
sudo systemctl enable node_exporter
node-exporter
가 시작하고, 재부팅시에도 자동으로 시작되게 해준다.
default 포트인 9100번으로 접속해보면 여러 리소스들이 수집되고 있는 것을 알 수 있다.
4. Prometheus-node_exporter Connetion
제일 중요한 부분이다. prometheus
에 6개의 서버의 node-exporter
를 연결해주고 Grafana
로 시각화 할 수 있게 할 것이다.
prometheus.yml 파일을 수정한다.
prometheus.yml
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'name'
scrape_interval: 10s
static_configs:
- targets: ['YOUR_IP:9100']
job_name은 내가 식별할 수 있는 이름으로 하자.
띄어쓰기가 문법이기 때문에 주의하도록 하자
targets에는 클라이언트 컴퓨터 ip와 node-exporter
port번호를 적는다.(클라이언트 컴퓨터에서 node-exporter가 active한 상태여야한다.)
prometheus
에 접속해서 /targets로 접속해보면 리소스가 제대로 받아와지는 것을 알 수 있다.
state가 up이 아니라면 다시 prometheus.yml 파일을 수정해보자 or 클라이언트 컴퓨터에서 node-exporter
가 잘 실행되고 있는지 확인하자
5. Prometheus-Grafana Connention
간단하게 연결할 수 있다.
datasource → Prometheus
를 누르고 url에 Prometheus
url을 넣어주면 된다.
쿼리 부분에 원하는 쿼리를 작성하고 그래프를 보면 된다.
6. Grafana AlertManeger setting
특정 리소스 모니터한 값이 임계치를 넘었을때 이메일로 경고를 보내게 할 것이다.
Grafana
설정 폴더(/conf)에서 default.ini
파일을 수정한다. 자신의 gmail id, password를 입력하도록 하자
default.ini
Alerting→Notification channels를 생성해준다.
다시 dashboard로 가서 alert탭으로 간다
Notifications에서 내가 설정한 channel 이름을 입력해주면 된다.
Alert 하는 내용은 자신이 설정할 수 있다(단순 text, graph 등등)
Alerting하는 메일이 오고, State가 안정화가 돼면 다시 메일이 온다 매우 편리한 기능인 것 같다.
7. Conclusion
본 문에서는 Prometheus
를 설치하고 Grafana
, Node-Exporter
와의 연동, Grafana AlertManager
설정 및 test를 했다.
기존에 존재하는 모니터링 툴도 많지만 Prometheus만이 가지는 Open-Source라는 강력한 장점 때문에 써보는 것도 좋을 것 같다.
Prometheus를 더 알아보고 싶다면 아래 주소로 들어가서 공식 문서를 찾아보는 것도 많은 도움이 될 것이다.
Grafana는 다른 사람이 만들어 놓은 대시보드를 사용할 수 있게 되어있다. 홈페이지에 올라와 있으니 찾아서 많이 사용해보길 바란다.
아직 관련 리소스가 부족해서 글의 내용이 부실할 수도 있지만 Prometheus, Grafana를 사용해 보고 싶은 사용자에겐 조금이나마 도움이 되고자 하는 마음에서 글을 쓴다.
Prometheus
공식 문서
Grafana
공식 홈페이지
Grafana - The open platform for analytics and monitoring
Prometheus
에서 사용 가능한 exporter
목록
'Linux' 카테고리의 다른 글
에러 solve (0) | 2019.09.21 |
---|---|
Docker registry setup (0) | 2019.07.08 |
CentOS7에 APM설치 (0) | 2018.11.05 |
Xfce Ubuntu(xUbuntu) 설치 (0) | 2018.10.27 |
CentOS에 MySQL설치 (0) | 2018.10.18 |