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 서버 구성
목차 중, Prometheus Exporter 구성에 관한 파트입니다.
그리고 그 중 오라클 제품인 WebLogic Server, Oracle DB를 Prometheus와 연동해봅니다.
(웹서버인 OHS는 지원되는 Exporter가 따로 없고, Apache와 구조가 비슷하기 때문에 Apache Exporter로 연동합니다.)
Product | Version | IP Address |
3-Tier 아키텍쳐 (오라클) |
OHS 12.2.1.4 | 192.168.56.114 |
WebLogic Server 12.2.1.4 | ||
Oracle DB 19.3 | ||
Exporter | Apache Exporter 0.11.0 | |
WebLogic Monitoring Exporter 0.3.0 | ||
Oracle DB Exporter 2.1.1 |
Ⅳ. Exporter 설치
4. DB - Oracle DB Exporter 구성 (192.168.56.114)
cmd> su - grafana
cmd> cd /monitoring/install
cmd> wget https://github.com/iamseth/oracledb_exporter/releases/download/0.3.0rc1/oracledb_exporter.0.3.0rc1-ora18.5.linux-amd64.tar.gz
cmd> tar -xvf oracledb_exporter.0.3.0rc1-ora18.5.linux-amd64.tar.gz -C /monitoring/prometheus
cmd> cd /monitoring/prometheus/test/oracledb_exporter.0.3.0rc1-ora18.5.linux-amd64
Oracle DB Exporter가 정상적으로 Oracle DB로부터 메트릭을 받아오려면
몇몇 환경변수들이 선언이 되어있어야 합니다.
그 환경변수의 목록은 아래와 같습니다.
- $DATA_SOURCE_NAME
- $LD_LIBRARY_PATH
- $ORACLE_HOME
- $CUSTOM_METRICS
ssh 콘솔 상에서 echo $<변수이름> 을 입력했을 때, 아무 값도 나오지 않거나 엉뚱한 경로를 잡고 있다면 제대로 지정을 해줘야 합니다.
# Oracle DB Exporter를 실행하기 위해 필요한 환경변수 설정
cmd> vi ~/.bash_profile
...
export ORACLE_BASE=<Oracle DB 베이스>
export ORACLE_HOME=$ORACLE_BASE/19.3
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib:.:
export DATA_SOURCE_NAME=<Oracle DB URL>
ex) oracle/oracle@192.168.56.114/orcl
export CUSTOM_METRICS=/monitoring/prometheus/oracledb_exporter-0.3.2/custom-metrics.toml
cmd> . ~/.bash_profile
cmd> vi startOracleDBExporter.sh
./oracledb_exporter \
--default.metrics "/monitoring/prometheus/oracledb_exporter-0.3.0rc1/default-metrics.toml" \
--log.level info --web.listen-address 192.168.56.114:9161
cmd> vi stopOracleDBExporter.sh
ps -ef | grep oracledb_exporter-0.3.0 | awk {'print "kill -9 " $2'} | sh -x
cmd> ./startOracleDBExporter.sh

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

4) [옵션] Oracle DB Exporter 시스템 데몬 등록
cmd> sudo vi /etc/systemd/system/oracledb_exporter.service
[Unit]
Description=Service for oracle telemetry client
After=network.target
[Service]
Type=simple
User=grafana
Group=grafana
Environment="DATA_SOURCE_NAME=oracle/oracle@192.168.56.114/orcl" # Datasource URL
Environment="LD_LIBRARY_PATH=/app/db/oracle/19.3/lib"
Environment="ORACLE_HOME=/app/db/oracle/19.3"
Environment="CUSTOM_METRICS=/monitoring/prometheus/oracledb_exporter.0.3.0rc1-ora18.5.linux-amd64/custom-metrics.toml"
ExecStart=/monitoring/prometheus/oracledb_exporter.0.3.0rc1-ora18.5.linux-amd64/oracledb_exporter \
--default.metrics "/monitoring/prometheus/oracledb_exporter.0.3.0rc1-ora18.5.linux-amd64/default-metrics.toml" \
--log.level error --web.listen-address 192.168.56.114:9161
[Install]
WantedBy=multi-user.target
cmd> sudo systemctl daemon-reload
cmd> sudo systemctl enable oracledb_exporter --now
cmd> ./stopOracleDBExporter.sh
cmd> sudo systemctl restart oracledb_exporter
cmd> curl -X GET http://192.168.56.114:9161
<html><head><title>Oracle DB Exporter 0.3.0rc1</title></head><body><h1>Oracle DB Exporter 0.3.0rc1</h1><p><a href='/metrics'>Metrics</a></p></body></html>
5) Prometheus & Oracle DB Exporter 연동 (192.168.56.112)
cmd> su - grafana
cmd> cd /monitoring/prometheus/prometheus-2.40.1.linux-amd64
cmd> vi conf/prometheus.yml
...
- job_name: "prometheus-OracleDB"
metrics_path: /metrics
static_configs:
- targets:
- 192.168.56.114:9161
relabel_configs:
- source_labels: ['__address__']
target_label: instance
regex: '(.*):\d+'
replacement: "${1}"
cmd> ./stopPrometheus.sh
cmd> ./startPrometheus.sh
# 데몬 형태로 띄웠다면
cmd> sudo systemctl restart prometheus
프로메테우스 실행 확인 후 로컬 브라우저를 통해 http://192.168.56.112:9090/targets 에 oracle db job이 up된 것을 확인합니다.

Oracle DB Exporter가 수집한 메트릭을 모니터링하는 대시보드(ID : 3333)를 생성해줄 것입니다.
대시보드 링크 - Oracledb | Grafana Labs
대시보드 생성을 위해 로컬 브라우저를 통해 http://192.168.56.111:3000 에 접속합니다.



해당 대시보드에서 Oracle DB 관련 메트릭을 상세 확인할 것입니다. ex) Oracle DB 상태, 세션, 테이블락, 임시오브젝트, 쿼리캐시 등


5. WAS - WebLogic Monitoring Exporter 구성 (192.168.56.114)
1) WebLogic Monitoring Exporter 다운로드
■ WebLogic Monitoring Exporter GitHub 링크
https://github.com/oracle/weblogic-monitoring-exporter ➩ 버전 v2.0.7로 설치할 것입니다. |
cmd> cd /monitoring/install
cmd> wget https://github.com/oracle/weblogic-monitoring-exporter/archive/refs/tags/v2.0.7.tar.gz
cmd> tar -xvf v2.0.7.tar.gz -C /monitoring/prometheus
cmd> cd /monitoring/prometheus/weblogic-monitoring-exporter-2.0.7
2) WebLogic Exporter 어플리케이션 생성 및 배치
cmd> cp samples/kubernetes/end2end/dashboard/exporter-config.yaml .
cmd> ./get2.0.sh exporter-config.yaml
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 2325k 100 2325k 0 0 745k 0 0:00:03 0:00:03 --:--:-- 1533k
created /tmp/ci-zj8CxUSPlE
/tmp/ci-zj8CxUSPlE /monitoring/prometheus/weblogic-monitoring-exporter-2.0.7
in temp dir
adding: config.yml (deflated 61%)
/monitoring/prometheus/weblogic-monitoring-exporter-2.0.7
cmd> ls -rlt /monitoring/weblogic-monitoring-exporter/wls-exporter.war
-rw-rw-r--1 grafana grafana 2276919 Jan27 15:35 /monitoring/prometheus/weblogic-monitoring-exporter-2.0.7/wls-exporter.war
war 형태로 어플리케이션을 생성했으니, 웹로직 관리콘솔에서 이를 배치해줍니다.
브라우저를 통해 http://192.168.56.114:9001/console 접속 후 배치 -> 설치

해당하는 경로의 wls-exporter.war 지정 및 다음

대상 지정 후 액세스 위치 설정까지 하면 완료

변경내용 활성화 및 콘트롤 -> 시작


3) WebLogic Exporter 어플리케이션 추가 설정
브라우저를 통해 어플리케이션 경로인 http://192.168.56.114:<WLS Port>/wls-exporter 접속하여 웹로직 계정을 입력합니다.
(관리 포트 -> 9001: AdminServer, 9002: M1)

서비스 접속 확인 후에
파일 선택 없이 제출 버튼을 클릭해봅니다.
이는 원래 yaml 형식의 파일을 제출함으로써, Prometheus로 수집하기 원하는 메트릭을 추가하는 과정입니다.
제출을 클릭하면 로그인을 하라는 창이 뜨는데, 웹로직 접속계정의 사용자 이름과 암호를 입력하여 넘깁니다.

이 결과로 해당 어플리케이션(wls-exporter)을 통해 metric의 목록을 확인할 수 있는 URL에 접속해봅니다.
http://192.168.56.114:<WLS Port>/wls-exporter/metrics
빈 파일을 제출했기 때문에, 정의된 설정이 없다고 나오게 됩니다.

따라서 metric을 채워줄 yaml 파일을 만들어줍니다.
파일 선택을 할 땐, 리눅스 서버가 아니라 로컬의 경로를 잡기 때문에 로컬에 yaml 파일을 만들어줍니다.
metrics.yaml 의 예시입니다.
cmd> vi WLS-metrics.yaml
---
metricsNameSnakeCase: true
domainQualifier: true
queries:
- prefix: wls_server_
key: name
keyName: location
applicationRuntimes:
key: name
keyName: app
componentRuntimes:
type: WebAppComponentRuntime
prefix: wls_webapp_config_
key: name
values: [deploymentState, contextRoot, sourceInfo, sessionsOpenedTotalCount, openSessionsCurrentCount, openSessionsHighCount]
servlets:
prefix: wls_servlet_
key: servletName
- JVMRuntime:
prefix: wls_jvm_
key: name
values: [heapFreeCurrent, heapFreePercent, heapSizeCurrent, heapSizeMax, uptime, processCpuLoad]
- executeQueueRuntimes:
prefix: wls_socketmuxer_
key: name
values: pendingRequestCurrentCount
- workManagerRuntimes:
prefix: wls_workmanager_
key: name
values: [stuckThreadCount, pendingRequests, completedRequests]
- threadPoolRuntime:
prefix: wls_threadpool_
key: name
values: [executeThreadTotalCount, queueLength, stuckThreadCount, hoggingThreadCount]
- JMSRuntime:
prefix: wls_jmsruntime_
key: name
keyName: jmsruntime
JMSServers:
prefix: wls_jms_
key: name
keyName: jmsserver
destinations:
prefix: wls_jms_dest_
key: name
keyName: destination
- persistentStoreRuntimes:
prefix: wls_persistentstore_
key: name
- JDBCServiceRuntime:
JDBCDataSourceRuntimeMBeans:
prefix: wls_datasource_
key: name
- JTARuntime:
prefix: wls_jta_
key: name
- key: name
keyName: server
jtaRuntime:
key: name
keyName: jta
healthState:
prefix: health_
- applicationRuntimes:
key: name
keyName: app
componentRuntimes:
type: WebAppComponentRuntime
prefix: webapp_config_
key: name
values: [openSessionsCurrentCount, openSessionsHighCount]
servlets:
prefix: weblogic_servlet_
key: servletName
- key: name
keyName: server
applicationRuntimes:
key: name
keyName: app
componentRuntimes:
type: WebAppComponentRuntime
prefix: webapp_config_
key: name
values: [deploymentState, servletReloadCheckSecs, openSessionsHighCount, openSessionsCurrentCount]
servlets:
prefix: weblogic_servlet_
key: servletName
- key: name
keyName: server
threadPoolRuntime:
key: name
keyName: app
values: throughput
- applicationRuntimes:
key: name
workManagerRuntimes:
prefix: workmanager_
key: applicationName
파일 작성이 완료되었다면, 아래처럼 로컬의 metrics.yaml 파일을 선택하여 제출합니다.

제출과 동시에, 아래처럼 메트릭의 목록이 업데이트됩니다.

실제로 업데이트되었는지 http://192.168.56.114:9002/wls-exporter/metrics 에 접속해서도 확인해봅니다.

Prometheus가 WLS Exporter를 통해 이 메트릭들을 수집할 것입니다.
어플리케이션 설정은 여기까지입니다.
4) Prometheus & WebLogic Monitoring Exporter 연동 (192.168.56.112)
cmd> su - grafana
cmd> cd /monitoring/prometheus/prometheus-2.40.1.linux-amd64
cmd> vi conf/prometheus.yml
...
- job_name: 'prometheus-WebLogicAdminServer'
scrape_interval: 10s
metrics_path: /wls-exporter/metrics
static_configs:
- targets: ['192.168.56.114:9001']
labels:
weblogic_domainName: 'base_domain'
weblogic_domainUID: 'base_domain'
weblogic_serverName: 'AdminServer'
weblogic_clusterName: 'None'
basic_auth:
username: <WebLogic 사용자이름>
password: <WebLogic 패스워드>
- job_name: 'prometheus-WebLogicM1'
scrape_interval: 10s
metrics_path: /wls-exporter/metrics
static_configs:
- targets: ['192.168.56.114:9002']
labels:
weblogic_domainName: 'base_domain'
weblogic_domainUID: 'base_domain'
weblogic_serverName: 'M1'
weblogic_clusterName: 'None'
basic_auth:
username: <WebLogic 사용자이름>
password: <WebLogic 패스워드>
cmd> ./stopPrometheus.sh
cmd> ./startPrometheus.sh
# 데몬 형태로 띄웠다면
cmd> sudo systemctl restart prometheus
프로메테우스 실행 확인 후 로컬 브라우저를 통해 http://192.168.56.112:9090/targets 에 weblogic job이 up된 것을 확인합니다.

WLS Exporter가 수집한 메트릭을 모니터링하는 대시보드를 생성해줄 것입니다.
해당 대시보드는 Grafana 사이트에서 직접 확인할 수 있는 대시보드가 아니기 때문에
json 파일을 직접 복사하여 import할 것입니다.
대시보드 생성을 위해 로컬 브라우저를 통해 http://192.168.56.111:3000 에 접속합니다.



해당 대시보드에서 WLS 관련 메트릭을 상세 확인할 것입니다.
메트릭 종류가 많다보니, 대시보드에 들어갈 패널도 많습니다.
① Servers 탭
- Running Servers, Deployed Applications, Server Name/Status, Heap Usage, JVM Heap, CPU Load, Thread Pool 등
② Web Applications 탭
- Total Sessions/Requests/Execution Time, Current Sessions, Session Rate, Request Rate 등
③ Data Sources 탭
- Datasource 목록, Active Connections, Connection Rate, Average Connection DelayTime 등
④ JMS Services 탭
- JMS Connections, JMS Connection Rate, Messages, Bytes 등


6. WEB - Apache Exporter 구성 (OHS) (192.168.56.114)
OHS에 최적화된 Exporter를 따로 찾기가 어려워서 Apache Exporter 및 대시보드를 사용했습니다.
Grafana 서버 구성 (3) - Prometheus Exporter 구성 (오픈소스 제품) (tistory.com)
Grafana 서버 구성 (3) - Prometheus Exporter 구성 (오픈소스 제품)
Ⅰ. 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
이전글을 참고하여
Ⅳ. Exporter 설치 파트의 3. WEB - Apache Exporter 구성 를 참고하여 똑같이 구성을 하면 됩니다.
그러나 세부적으로 메트릭의 종류가 살짝 다르기는 합니다.
이 때문에 대시보드에 메트릭 값이 뜨지 않는 패널들도 생깁니다.


대시보드를 비교해보면, OHS는 Uptime 및 Current total kbytes send, Current total apache accesses의 값을 읽어오지 못하는 것을 볼 수 있습니다.
다음 글은 Grafana의 로그를 긁어오는 Plugin 중 하나인 Grafana Loki 관련 내용을 다룹니다.
다음 글 참고
Grafana 서버 구성 (5) - Grafana Plugin 설치 (tistory.com)
Grafana 서버 구성 (5) - Grafana Plugin 설치
Ⅰ. 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] 서버 구성 (3) - Prometheus Exporter 구성 (오픈소스 제품) (0) | 2023.01.26 |
[Grafana] 서버 구성 (2) - Grafana 설치 (0) | 2023.01.25 |
[Grafana] 서버 구성 (1) - Prometheus 설치 (0) | 2022.12.26 |