Prometheus를 사용하여 Ubuntu 14.04 서버를 모니터링하는 방법
소개
Prometheus는 SoundCloud에서 개발한 오픈 소스 모니터링 시스템입니다. InfluxDB 및 Graphite와 같은 다른 모니터링 시스템과 마찬가지로 Prometheus는 모든 데이터를 시계열 데이터베이스에 저장합니다. 그러나 다차원 데이터 모델과 강력한 쿼리 언어를 제공하여 시스템 관리자가 메트릭 정의를 쉽게 미세 조정할 수 있을 뿐만 아니라 보다 정확한 보고서를 생성할 수 있습니다.
또한 Prometheus 프로젝트에는 PromDash(사용자 지정 대시보드를 개발하는 데 사용할 수 있는 브라우저 기반 도구)와 이메일, Flowdock, Slack, HipChat 등을 통해 경고를 보낼 수 있는 실험적인 AlertManager도 포함되어 있습니다.
이 자습서에서는 Prometheus Server, Node Exporter 및 PromDash를 설치, 구성 및 사용하는 방법을 배웁니다.
전제 조건
이 자습서를 따르려면 다음이 필요합니다.
- 루트가 아닌 sudo 사용자가 있는 64비트 Ubuntu 14.04 Droplet 1개
참고: 32비트 서버를 사용해야 하는 경우 이 자습서에 언급된 모든 파일 이름과 링크에서 -amd64를 -386으로 바꾸십시오.
1단계 - Prometheus 서버 설치
먼저 이 튜토리얼에서 다운로드한 모든 파일을 저장할 새 디렉토리를 만들고 이동합니다.
- mkdir ~/Downloads
- cd ~/Downloads
wget
을 사용하여 GitHub에서 Prometheus 서버 및 시계열 데이터베이스의 최신 빌드를 다운로드하십시오.
- wget "https://github.com/prometheus/prometheus/releases/download/0.15.1/prometheus-0.15.1.linux-amd64.tar.gz"
Prometheus 모니터링 시스템은 각각 개별적으로 설치해야 하는 여러 구성 요소로 구성됩니다. 모든 구성요소를 하나의 상위 디렉토리에 보관하는 것이 좋으므로 하나를 만들고 Prometheus 서버의 모든 바이너리를 저장할 추가 하위 디렉토리를 만듭니다.
- mkdir -p ~/Prometheus/server
방금 만든 디렉터리를 입력합니다.
- cd ~/Prometheus/server
tar
를 사용하여 prometheus-0.15.1.linux-amd64.tar.gz
를 추출합니다.
- tar -xvzf ~/Downloads/prometheus-0.15.1.linux-amd64.tar.gz
이로써 Prometheus 서버 설치가 완료됩니다. 다음을 입력하여 설치를 확인합니다.
- ./prometheus -version
화면에 다음 메시지가 표시되어야 합니다.
prometheus, version 0.15.1 (branch: master, revision: 64349aa)
build user: julius@julius-thinkpad
build date: 20150727-17:56:00
go version: 1.4.2
2단계 - 노드 내보내기 설치
Prometheus는 웹 서비스 모니터링을 목적으로 개발되었습니다. Ubuntu 서버의 메트릭을 모니터링하려면 Node Exporter라는 도구를 설치해야 합니다. Node Exporter는 이름에서 알 수 있듯이 많은 지표(예: 디스크 I/O 통계, CPU 로드, 메모리 사용량, 네트워크 통계 등)를 Prometheus가 이해하는 형식으로 내보냅니다.
Prometheus
디렉토리 안에 node_exporter
라는 새 디렉토리를 만들고 그 안에 들어가십시오.
- mkdir -p ~/Prometheus/node_exporter
- cd ~/Prometheus/node_exporter
wget
을 사용하여 GitHub에서 사용할 수 있는 Node Exporter의 최신 빌드를 다운로드하고 Downloads
디렉터리에 배치합니다.
- wget https://github.com/prometheus/node_exporter/releases/download/0.11.0/node_exporter-0.11.0.linux-amd64.tar.gz -O ~/Downloads/node_exporter-0.11.0.linux-amd64.tar.gz
이제 tar
명령을 사용하여 node_exporter-0.11.0.linux-amd64.tar.gz
를 추출할 수 있습니다.
- tar -xvzf ~/Downloads/node_exporter-0.11.0.linux-amd64.tar.gz
3단계 - Node Exporter를 서비스로 실행
Node Exporter를 쉽게 시작하고 중지할 수 있도록 이제 이를 서비스로 변환해 보겠습니다.
/usr/bin
에서 node_exporter
바이너리에 대한 소프트 링크를 만듭니다.
- sudo ln -s ~/Prometheus/node_exporter/node_exporter /usr/bin
nano
또는 좋아하는 텍스트 편집기를 사용하여 node_exporter.conf
라는 Upstart 구성 파일을 만듭니다.
- sudo nano /etc/init/node_exporter.conf
이 파일에는 node_exporter
실행 파일에 대한 링크가 포함되어 있어야 하며 실행 파일이 시작되어야 하는 시기도 지정해야 합니다. 따라서 다음 코드를 추가합니다.
# Run node_exporter
start on startup
script
/usr/bin/node_exporter
end script
이 시점에서 Node Exporter는 service
명령을 사용하여 시작할 수 있는 서비스로 사용할 수 있습니다.
- sudo service node_exporter start
Node Exporter가 시작된 후 브라우저를 사용하여 http://your_server_ip:9100/metrics
에서 사용할 수 있는 웹 인터페이스를 봅니다. 텍스트가 많은 페이지가 표시됩니다.
# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0.00023853100000000002
go_gc_duration_seconds{quantile="0.25"} 0.00023998700000000002
go_gc_duration_seconds{quantile="0.5"} 0.00028122
. . .
4단계 - Prometheus 서버 시작
Prometheus 서버를 설치한 디렉토리를 입력하십시오.
cd ~/Prometheus/server
Prometheus를 시작하기 전에 먼저 prometheus.yml
이라는 구성 파일을 만들어야 합니다.
- nano ~/Prometheus/server/prometheus.yml
다음 코드를 파일에 복사합니다.
scrape_configs:
- job_name: "node"
scrape_interval: "15s"
target_groups:
- targets: ['localhost:9100']
그러면 scrape_configs
섹션이 생성되고 node
라는 작업이 정의됩니다. targets
배열에 Node Exporter의 웹 인터페이스 URL이 포함됩니다. scrape_interval
은 Prometheus가 15초마다 메트릭을 스크랩하도록 15초로 설정됩니다.
원하는 대로 작업 이름을 지정할 수 있지만 "node\라고 부르면 Node Exporter의 기본 콘솔 템플릿을 사용할 수 있습니다.
파일을 저장하고 종료합니다.
Prometheus 서버를 백그라운드 프로세스로 시작합니다.
- nohup ./prometheus > prometheus.log 2>&1 &
Prometheus 서버의 출력을 prometheus.log
라는 파일로 리디렉션했습니다. tail
명령을 사용하여 파일의 마지막 몇 줄을 볼 수 있습니다.
- tail ~/Prometheus/server/prometheus.log
서버가 준비되면 파일에 다음 메시지가 표시됩니다.
INFO[0000] Starting target manager... file=targetmanager.go line=75
INFO[0000] Listening on :9090 file=web.go line=118
브라우저를 사용하여 http://your_server_ip:9090
에 있는 Prometheus 홈페이지를 방문하십시오. 다음 홈페이지가 표시됩니다.

Prometheus가 Node Exporter에서 데이터를 스크랩하고 있는지 확인하려면 페이지 상단의 그래프 탭을 클릭하십시오. 열리는 페이지에서 Expression이라는 텍스트 필드에 메트릭 이름(예: node_procs_running)을 입력합니다. 그런 다음 파란색 실행 버튼을 누릅니다. 바로 아래의 그래프(콘솔 옆)를 클릭하면 해당 메트릭에 대한 그래프가 표시됩니다.

Prometheus에는 일반적으로 사용되는 몇 가지 메트릭의 그래프를 볼 수 있는 콘솔 템플릿이 있습니다. 이러한 콘솔 템플릿은 Prometheus 구성에서 job_name
값을 node
로 설정한 경우에만 액세스할 수 있습니다.
노드 콘솔에 액세스하려면 http://your_server_ip:9090/consoles/node.html
을 방문하고 서버 localhost:9100
을 클릭합니다. 측정항목을 보려면 다음 단계를 따르세요.

5단계 - PromDash 설치
Prometheus 서버를 사용하면 그래프를 보고 표현식을 실험할 수 있지만 일반적으로 디버깅 목적이나 일회성 쿼리 실행에만 사용됩니다. Prometheus의 시계열 데이터베이스에서 데이터를 시각화하는 기본 방법은 PromDash를 사용하는 것입니다. PromDash는 고도로 구성 가능할 뿐만 아니라 더 보기 좋은 맞춤형 대시보드를 생성할 수 있는 도구입니다.
Prometheus
디렉터리를 입력합니다.
- cd ~/Prometheus
PromDash는 GitHub에서 소스 파일을 사용할 수 있는 Ruby on Rails 애플리케이션입니다. 다운로드 및 실행을 위해서는 gem 의존성 관리자인 Git, Ruby, SQLite3, Bundler와 이들의 의존성을 설치해야 합니다. 그렇게 하려면 apt-get
을 사용하세요.
- sudo apt-get update && sudo apt-get install git ruby bundler libsqlite3-dev sqlite3 zlib1g-dev
이제 git
명령을 사용하여 소스 파일을 다운로드할 수 있습니다.
- git clone https://github.com/prometheus/promdash.git
promdash
디렉터리를 입력합니다.
- cd ~/Prometheus/promdash
bundle
을 사용하여 PromDash에 필요한 Ruby gem을 설치하십시오. 이 튜토리얼에서 PromDash가 SQLite3와 함께 작동하도록 구성할 것이므로 --without
매개변수를 사용하여 MySQL 및 PostgreSQL용 gem을 제외해야 합니다.
- bundle install --without mysql postgresql
PromDash는 여러 gem에 의존하기 때문에 이 명령이 완료될 때까지 몇 분 동안 기다려야 합니다. 완료되면 다음 메시지가 표시됩니다.
. . .
Your bundle is complete!
Gems in the groups mysql and postgresql were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
6단계 - Rails 환경 설정
PromDash와 연결된 SQLite3 데이터베이스를 저장할 디렉터리를 만듭니다.
- mkdir ~/Prometheus/databases
PromDash는 DATABASE_URL
이라는 환경 변수를 사용하여 연결된 데이터베이스의 이름을 결정합니다. PromDash가 databases
디렉터리 내에 mydb.sqlite3
라는 SQLite3 데이터베이스를 생성하도록 다음을 입력합니다.
- echo "export DATABASE_URL=sqlite3:$HOME/Prometheus/databases/mydb.sqlite3" >> ~/.bashrc
이 튜토리얼에서는 프로덕션 모드에서 PromDash를 실행하므로 RAILS_ENV
환경 변수를 production
으로 설정합니다.
- echo "export RAILS_ENV=production" >> ~/.bashrc
.bashrc
파일에 변경 사항을 적용합니다.
- . ~/.bashrc
다음으로 rake
도구를 사용하여 SQLite3 데이터베이스에 PromDash의 테이블을 만듭니다.
- rake db:migrate
PromDash는 Rails Asset Pipeline을 사용하기 때문에 PromDash 프로젝트의 모든 자산(CSS 파일, 이미지 및 Javascript 파일)을 미리 컴파일해야 합니다. 이렇게 하려면 다음을 입력하십시오.
- rake assets:precompile
7단계 - PromDash 시작 및 구성
PromDash는 경량 웹 서버인 Thin에서 실행됩니다. 다음 명령을 입력하여 서버를 데몬으로 시작합니다.
- bundle exec thin start -d
서버가 시작될 때까지 몇 초간 기다린 다음 http://your_server_ip:3000/
를 방문하여 PromDash의 홈페이지를 봅니다.

맞춤형 대시보드 생성을 시작하기 전에 PromDash에 Prometheus 서버의 URL을 알려야 합니다. 상단의 서버 탭을 클릭하면 됩니다. 새 서버를 클릭한 다음 양식에서 Prometheus 서버에 이름을 지정하십시오. Url 필드를 http://your_server_ip:9090
로 설정하고 서버 유형 필드를 Prometheus로 설정합니다.

마지막으로 서버 만들기를 클릭하여 구성을 완료합니다. 페이지에 서버가 성공적으로 생성되었다고 표시됩니다. 상단 메뉴에서 대시보드로 다시 클릭할 수 있습니다.
8단계 - 대시보드 만들기
Promdash 대시보드는 Promdash 디렉터리에 속해야 하므로 먼저 새 디렉터리를 클릭하여 새 디렉터리를 만듭니다. 표시되는 양식에서 내 대시보드와 같은 디렉터리 이름을 지정한 다음 디렉터리 만들기를 클릭합니다.
양식을 제출하면 홈페이지로 돌아갑니다. 지금 새 대시보드 버튼을 클릭하여 새 대시보드를 만듭니다. 표시된 양식에서 Simple Dashboard와 같이 대시보드에 이름을 지정하고 드롭다운 메뉴에서 방금 생성한 디렉터리를 선택합니다.
양식을 제출하면 새 대시보드를 볼 수 있습니다.

대시보드에는 이미 하나의 그래프가 있지만 구성해야 합니다. 그래프의 헤더(제목) 위로 마우스를 가져가면 그래프를 구성할 수 있는 다양한 아이콘이 표시됩니다. 제목을 변경하려면 그래프 및 축 설정 아이콘(왼쪽에서 네 번째)을 클릭하고 그래프 제목 필드에 새 제목을 입력합니다.
그래프에 하나 이상의 표현식을 추가하려면 왼쪽에서 두 번째에 있는 데이터 소스 아이콘을 클릭하십시오. 식 추가를 클릭하고 식 입력 필드에 node_procs_running을 입력합니다.

이제 그래프 헤더에서 새로 고침 아이콘(가장 왼쪽 아이콘)을 클릭하여 그래프를 업데이트합니다. 이제 대시보드에 완전히 구성된 하나의 그래프가 포함됩니다. 하단의 그래프 추가 버튼을 클릭하여 더 많은 그래프를 추가할 수 있습니다.
모든 변경을 완료한 후 오른쪽에 있는 변경 사항 저장 버튼을 클릭하여 변경 사항을 영구적으로 적용하십시오. 다음에 PromDash 홈페이지를 방문하면 대시보드에 대한 링크를 볼 수 있습니다.

결론
이제 완전한 기능을 갖춘 Prometheus 에코시스템이 Ubuntu 14.04 서버에서 실행되며 PromDash를 사용하여 요구 사항에 맞는 모니터링 대시보드를 생성할 수 있습니다.
단일 Ubuntu 시스템에 모든 구성 요소를 설치했지만 각각에 Node Exporter만 설치하고 새 Node Exporter의 URL을 targets
배열에 추가하면 더 많은 시스템을 쉽게 모니터링할 수 있습니다. prometheus.yml
.
해당 설명서를 참조하여 Prometheus에 대해 자세히 알아볼 수 있습니다.