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 Loki 구성
- 1. Grafana Loki
- 2. Grafana Loki 설치
- 3. Promtail 설치
- 4. Grafana 서버 구성
목차 중, Overview와 Prometheus 설치에 관한 파트입니다.
Ⅰ. Overview
이 문서는 Grafana 및 Prometheus의 설치 및 3-티어 아키텍쳐(WEB, WAS, DB) 서버 모니터링을 위한 간략한 연동 가이드를 제공합니다.
테스트 제품 | 제품 기능 | 버전 | IP 주소 | 비고 |
OS | Red Hat의 엔터프라이즈 리눅스 배포판 | 8.4 | 192.168.56.11x (모든 노드) |
|
Node Exporter | Prometheus에 시스템 리소스(CPU, 메모리, 디스크 등) 및 상태를 수집해서 전달해주는 도구 | 1.5.0 | 192.168.56.11x (모든 노드) |
Metrics |
Grafana | 데이터 시각화 및 통합 대시보드 제품 | OSS 9.3.2 | 192.168.56.111 | |
Grafana Loki | 로그 수집, 저장 및 실시간 분석을 위한 오픈소스 | 2.7.2 | 192.168.56.111 | Logs |
Promtail | 로그 데이터를 수집하여 Loki에 전송하는 역할을 수행 | 2.7.2 | 192.168.56.113 / 192.168.56.114 |
Logs |
Prometheus | 메트릭 데이터를 수집/저장하며, Grafana와 함께 사용 | 2.40.1 | 192.168.56.112 | Metrics |
3-Tier Architecture (OSS) |
가볍게 설치 및 구성할 수 있는 클래식한 오픈소스 | HTTPD 2.4.43 / Tomcat 9.0.71 / MySQL 8.0.31 |
192.168.56.113 | |
3-Tier Architecture (Oracle) |
엔터프라이즈 환경에서 고성능 및 고가용성을 제공 | OHS 12.2.1.4 / WLS 12.2.1.4 / Oracle DB 19.3 |
192.168.56.114 |
간략하게 구성 정보를 설명하자면 총 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)
# 방화벽 해제
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 $_
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란, 서버의 성능정보(퍼포먼스) 메트릭을 수집하는 에이전트입니다..
따라서 모든 노드에 설치하려고 합니다.
# 방화벽 해제
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 $_
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
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. Prometheus 및 Node 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
'Grafana' 카테고리의 다른 글
[Grafana] 서버 구성 (5) - Grafana Loki 구성 (0) | 2023.01.29 |
---|---|
[Grafana] 서버 구성 (4) - Prometheus Exporter 구성 (오라클 제품) (0) | 2023.01.27 |
[Grafana] 서버 구성 (3) - Prometheus Exporter 구성 (오픈소스 제품) (0) | 2023.01.26 |
[Grafana] 서버 구성 (2) - Grafana 설치 (0) | 2023.01.25 |