Tokomon - Digimon
티쿠스 IT 블로그

Grafana

[Grafana] 서버 구성 (1) - Prometheus 설치

티쿠스 2022. 12. 26. 12:53

<Table of Contents>

Ⅰ. OVERVIEW

Ⅱ. Prometheus 설치 

1. Prometheus
2. Prometheus 설치 
3. Node Exporter 설치
4. Prometheus 및 Node Exporter 연동

Ⅲ. Grafana 설치

1. Grafana
2. Grafana 설치

3. Grafana 서버 구성

Ⅳ. Exporter 설치

1. DB - MySQL Exporter 구성
2. WAS - Tomcat JMX Exporter 구성
3. WEB - Apache Exporter 구성
4. DB - Oracle DB Exporter 구성
5. WAS - WebLogic Monitoring Exporter 구성
6. WEB - Apache Exporter 구성 (OHS)

Ⅴ. Grafana Plugin 설치

1. Grafana Loki
2. Grafana Loki 설치
3. Promtail 설치
4. Grafana 서버 구성

 

목차 중, Overview와 Prometheus 설치에 관한 파트입니다.

 

 

Ⅰ. Overview

이 문서는 Grafana 및 Prometheus의 설치 및 3-티어 아키텍쳐(WEB, WAS, DB) 서버 모니터링을 위한 간략한 연동 가이드를 제공합니다.

 

Product Version IP
OS Red Hat Enterprise Linux 8 192.168.56.11x (모든 노드)
Node Exporter Node Exporter 1.5.0 192.168.56.11x (모든 노드)
그라파나 Grafana OSS 9.3.2 192.168.56.111
그라파나 로키 Grafana Loki 2.7.1
프로메테우스 Prometheus 2.40.1 192.168.56.112
3-Tier 아키텍쳐
(오픈소스)
Apache HTTP Server 2.4.43 192.168.56.113
Tomcat 9.0.71
MySQL 8.0.31
3-Tier 아키텍쳐
(오라클)
Oracle HTTP Server 12.2.1.4 192.168.56.114
WebLogic Server 12.2.1.4
Oracle DB 19.3

 

간략하게 구성 정보를 설명하자면 총 4 대의 장비로 구성되며, 설치되는 시스템은 아래와 같습니다.

 

전반적인 아키텍쳐 도식화

192.168.56.111 - Grafana 및 Loki 서버

192.168.56.112 - Prometheus 서버

192.168.56.113 - 오픈소스 3티어 아키텍쳐 구성서버 (Apache HTTP Server & Tomcat & MySQL)

192.168.56.114 - 오라클 3티어 아키텍쳐 구성서버 (OHS & WebLogic Server & Oracle DB)

 

 

Ⅱ. Prometheus 설치 

1. Prometheus

프로메테우스는 오픈소스 모니터링 솔루션으로서, 메트릭이라 불리는 모니터링 지표들을 수집하는 역할을 합니다.

 

메트릭 타입은 아래와 같이 4종류로 나뉩니다.

  - 카운터 (Counter) - 카운트를 세기 위한 메트릭  ex) 현재 총 노드 수

  - 게이지 (Gauge) - 현재 측정되는 값을 알기 위한 메트릭  ex) CPU 사용률

  - 히스토그램 (Histogram) - 특정 기간동안의 측정되는 값의 변화를 표시하기 위한 메트릭  ex) TPS 그래프

  - 요약 (Summary) - 분위수(Quantiles)를 표현하기 위한 메트릭  ex) 백분위

 

기본적으로 프로메테우스와 호환되는 Exporter를 각 노드에 구성하여 메트릭을 수집합니다.

다양한 종류의 서드파티 Exporter가 있으며, 목록은 아래에서 확인할 수 있습니다.

 

Exporters and integrations | Prometheus

 

 

2. Prometheus 설치 (192.168.56.112)

1) 기본환경 구성

# 방화벽 해제
cmd>
sudo systemctl disable firewalld --now

# SELINUX 해제
cmd> sudo setenforce 0
cmd> sudo vi /etc/selinux/config
SELINUX=disabled

cmd>
mkdir /monitoring

# 사용자 설정

cmd>
groupadd grafana
cmd> useradd -g grafana grafana
cmd> su - grafana
cmd> exit

cmd> chown grafana:grafana /monitoring
cmd> su - grafana

cmd> cd /monitoring
cmd> mkdir prometheus
cmd> mkdir install && cd $_

 

2) Prometheus 설치

 Prometheus 다운로드 링크

https://prometheus.io/download/
  2.41.0로 설치할 것임.

cmd> wget https://github.com/prometheus/prometheus/releases/download/v2.41.0/prometheus-2.41.0.linux-amd64.tar.gz
cmd> tar -xvf prometheus-2.41.0.linux-amd64.tar.gz -C /monitoring/prometheus

cmd> cd /monitoring/prometheus/prometheus-2.41.0.linux-amd64
cmd> mkdir bin conf data

cmd> mv prometheus promtool bin/
cmd> mv prometheus.yml conf/

 

3) Prometheus 설정

cmd> vi conf/prometheus.yml
---
global:
  scrape_interval: 15s 
  evaluation_interval: 15s 

alerting:
  alertmanagers:
    - static_configs:
        - targets:

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["192.168.56.112:9090"]

cmd> vi startPrometheus.sh
./bin/prometheus \
  --config.file=/monitoring/prometheus/prometheus-2.41.0.linux-amd64/conf/prometheus.yml \
  --storage.tsdb.path=/monitoring/prometheus/prometheus-2.41.0.linux-amd64/data &


cmd>
vi stopPrometheus.sh
ps -ef | grep prometheus | grep 2.41.0 | awk {'print "kill -9 " $2'} | sh -x

cmd>
chmod 750 *.sh

 

4) Prometheus 실행

cmd> ./startPrometheus.sh

프로메테우스 기동 쉘스크립트 실행

 

실행 확인 후 로컬 브라우저를 통해 http://192.168.56.111:9090 에 접속 성공 확인

 

프로메테우스 서비스 접속 확인

 

5) [옵션] Prometheus 시스템 데몬 등록 

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

[Service]
User=grafana
Restart=on-failure
ExecStart=/monitoring/prometheus/prometheus-2.41.0.linux-amd64/bin/prometheus \
  --config.file=/monitoring/prometheus/prometheus-2.41.0.linux-amd64/conf/prometheus.yml \
  --storage.tsdb.path=/monitoring/prometheus/prometheus-2.41.0.linux-amd64/data

[Install]
WantedBy=multi-user.target

cmd> sudo systemctl daemon-reload
cmd> sudo systemctl enable prometheus --now

cmd> ./stopPrometheus.sh
cmd> sudo systemctl restart prometheus

cmd> curl -X GET http://192.168.56.112:9090
<a href="/graph">Found</a>.

 

 

3. Node Exporter 설치 (192.168.56.11x - 모든 노드)

Node Exporter란, 서버의 성능정보(퍼포먼스) 메트릭을 수집하는 에이전트입니다..

따라서 모든 노드에 설치하려고 합니다.

 

1) 기본환경 구성

# 방화벽 해제
cmd>
sudo systemctl disable firewalld --now

# SELINUX 해제
cmd>
sudo setenforce 0
cmd> sudo vi /etc/selinux/config
SELINUX=disabled

cmd>
mkdir /monitoring

# 사용자 설정
cmd>
 groupadd grafana
cmd> useradd -g grafana grafana
cmd> su - grafana
cmd> exit

cmd> chown grafana:grafana /monitoring
cmd> su - grafana

cmd> cd /monitoring
cmd> cd prometheus
cmd> mkdir install && cd $_

 

2) Node Exporter 설치

Node Exporter 다운로드 링크

https://github.com/prometheus/node_exporter/releases
  1.5.0로 설치할 것임.

cmd> wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
cmd> tar -xvf node_exporter-1.5.0.linux-amd64.tar.gz -C /monitoring/prometheus

 

3) Node Exporter 실행

cmd> cd /monitoring/prometheus/node_exporter-1.5.0.linux-amd64
cmd>
vi startNodeExporter.sh
./node_exporter &

cmd> vi stopNodeExporter.sh
ps -ef | grep node_exporter | awk {'print "kill -9 " $2'} | sh -x

cmd> chmod 750 *.sh

cmd> ./startNodeExporter.sh

노드 익스포터 기동 쉘스크립트 실행

 

실행 확인 후 로컬 브라우저를 통해 http://192.168.56.11x:9100 (모든 노드)에 접속 성공한 것도 확인합니다.

 

노드 익스포터 서비스 접속 확인

 

4) [옵션] Node Exporter 시스템 데몬 등록 

cmd> sudo vi /etc/systemd/system/node_exporter.service
[Unit]
Description=Prometheus Node Exporter
Documentation=https://prometheus.io/docs/guides/node-exporter/
Wants=network-online.target
After=network-online.target

[Service]
User=grafana
Restart=on-failure
ExecStart=/monitoring/prometheus/node_exporter-1.5.0.linux-amd64

[Install]
WantedBy=multi-user.target


cmd> sudo systemctl daemon-reload
cmd> sudo systemctl enable node_exporter --now

cmd> ./stopNodeExporter.sh
cmd> sudo systemctl restart node_exporter

cmd> curl -X GET http://192.168.56.11x:9100
<html>
  <head><title>Node Exporter</title></head>
  <body>
    <h1>Node Exporter</h1>
    <p><a href="/metrics">Metrics</a></p>
  </body>
</html>

 

 

4. PrometheusNode Exporter 연동 (192.168.56.112)

1) Prometheus 설정 추가

cmd> /monitoring/prometheus/prometheus-2.41.0.linux-amd64
cmd> vi conf/
prometheus.yml
...
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["192.168.56.112:9090"]

# Node Exporter에 대한 설정 추가
  - job_name: "server-info"
    static_configs:
      - targets: ["192.168.56.111:9100", "192.168.56.112:9100", "192.168.56.113:9100", "192.168.56.114:9100"]

 

2) Prometheus 재실행

# 설정 적용을 위해 재실행 필요

cmd>
./stopPrometheus.sh
cmd> ./startPrometheus.sh

 

실행 확인 후 로컬 브라우저를 통해 http://192.168.56.112:9090/targets 에 접속 성공 확인

 

프로메테우스 타겟 확인

 

# 만약 프로메테우스 메인화면 상단에 아래와 같은 메세지가 떠있다면, VM 시간 변경 필요 (프로메테우스 서버)

Warning: Error fetching server time: Detected ~ seconds time difference between your browser and the server. Prometheus relies on accurate time and time drift might cause unexpected query results.


# 또한 연동시킨 각 노드마다 시간대가 현저히 차이 난다면, 나중에 Grafana 대시보드 상에 노드의 데이터가 안 뜰 수 있습니다.
# 따라서 아래와 같이 시간대 통일 필요 (ntp 서버를 이용해도 됨)

cmd> sudo date -s "Dec 28 10:05:40"

 

 

다음 글 참고

Grafana 서버 구성 (2) - Grafana 설치 (tistory.com)

 

Grafana 서버 구성 (2) - Grafana 설치

Ⅰ. OVERVIEW Ⅱ. Prometheus 설치 1. Prometheus 2. Prometheus 설치 3. Node Exporter 설치 4. Prometheus 및 Node Exporter 연동 Ⅲ. Grafana 설치 1. Grafana 2. Grafana 설치 3. Grafana 서버 구성 Ⅳ. Exporter 설치 1. DB - MySQL Exporter 구

tikus.tistory.com