<Table of Contents>Ⅰ. OVERVIEW
1. Prometheus2. Prometheus 설치 3. Node Exporter 설치 4. Prometheus 및 Node Exporter 연동 Ⅲ. Grafana 설치1. Grafana2. 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 Loki2. 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)
# 방화벽 해제 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 $_ |
■ 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란, 서버의 성능정보(퍼포먼스) 메트릭을 수집하는 에이전트입니다..
따라서 모든 노드에 설치하려고 합니다.
# 방화벽 해제 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 $_ |
■ 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 |
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' 카테고리의 다른 글
[Grafana] 서버 구성 (5) - Grafana Plugin 설치 (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 |