본문 바로가기

SYSTEM/Monitoring

[Prometheus] Prometheus 구축하기

1. Prometheus 설치 파일 다운로드

 

아래 URL로 접속하면 다운 받을 수 있다.

https://prometheus.io/download/

 

Download | Prometheus

Download We provide precompiled binaries and Docker images for most officially maintained Prometheus components. If a component is not listed here, check the respective repository on Github for further instructions. There is also a constantly growing numbe

prometheus.io

다운 받은 후 압축 해제를 해준다.

# wget https://github.com/prometheus/prometheus/releases/download/v2.18.1/prometheus-2.18.1.linux-amd64.tar.gz
# tar xvfz prometheus-2.18.1.linux-amd64.tar.gz

 

압축 푼 후에 디렉토리에 들어가보면 위와 같이 구성이 되어 있다.

 

아무 곳에 놔두어도 되는데 그래도 관리측면에서 디렉토리를 지정하고 계정도 만들어서 사용하면 더 좋지 않을까 싶어서 계정 생성 및 전용 디렉토리를 생성했다.

groupadd -r prometheus
useradd -r -g prometheus -s /sbin/nologin -d /home/prometheus/ -c "prometheus Daemons" prometheus
chown -R prometheus:prometheus -R /home/prometheus/

 

prometheus.yml 파일이 설정 파일이고, 수집할 target에 대한 접속 정보들을 해당 yml파일에 추가하면 된다.

실행은 아래와 같이 하면 된다.

# ./prometheus --config.file=prometheus.yml

근데 이것보다는 systemctl에 등록해서 하는 편이 편하다.

cd /etc/systemd/system
vi prometheus.service
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target

[Service]
User=root
Restart=on-failure

#Change this line if you download ther
#Prometheus on different path user
ExecStart=/etc/prometheus-2.18.1.linux-amd64/prometheus \
  --config.file=/etc/prometheus-2.18.1.linux-amd64/prometheus.yml \
  --storage.tsdb.path=/data/prometheus \
  --web.console.templates=/etc/prometheus-2.18.1.linux-amd64/consoles \
  --web.console.libraries=/etc/prometheus-2.18.1.linux-amd64/console_libraries \
  --web.listen-address=0.0.0.0:8989 \
  --web.enable-admin-api

[Install]
WantedBy=multi-user.target

위와 같이 prometheus.service 파일을 /etc/systemd/system에 생성해준다.

"ExecStart" 안에 있는 경로들은 각각 맞게 설정을 해준다.

  • web.listen-address : 부분을 수정하면 포트 변경도 가능하다.
    (default port가 9090이므로 port 변경 시에는 prometheus.yml에 static_config에 tartget에 포트를 변경을 해줘야 한다.)
  • storage.tsdb.path : 데이터가 쌓이는 path에 대한 설정이다. 특정 diretory를 사용할려면 해당 부분에 path를 넣어주면 된다. 기본 경로는 /data이다.
  • storage.tsdb.retention.time : 쌓인 데이터의 삭제 주기에 대한 설정이다. default는 15일 이다.

이제는 prometheus.service를 실행시키면 된다.

# systemctl daemon-reload
# systemctl start prometheus
# systemctl status prometheus

 

방화벽이 있는 경우에는 설정한 포트에 대해서 방화벽을 열어줘야 한다.

http://<IP>:8989로 접속하면 prometheus dashboard를 볼 수 있다.

 

여기서도 저장된 데이터를 그래프 형태로 볼 수 있고, query도 가능하다. 하지만 뭔가 예쁘지 않고 다양한 형태의 그래프를 사용할 수는 없다.

그래서 grafana를 설치 & 연동하여 다양한 그래프들을 활용해서 monitoring dashboard를 만든다.

 

"Status" 메뉴에서는 각종 상태 확인 및 정보 확인이 가능하다.

 

현재는 localhost에 대한 endpoint만 잡혀있다.

exporter들을 추가해주고, prometheus.yml에 target의 exporter 정보를 추가해주면 해당 "Status"에서도 추가된 것을 확인 할 수 있다.

특정 target의 어떤 exporter가 죽었는지 확인이 가능하다.

 

 

'SYSTEM > Monitoring' 카테고리의 다른 글

[Prometheus] Grafana 설치  (0) 2020.05.12