Tokomon - Digimon
티쿠스 IT 블로그

Grafana

[Grafana] 서버 구성 (4) - Prometheus Exporter 구성 (오라클 제품)

티쿠스 2023. 1. 27. 09:18

 

<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 서버 구성

 

목차 중, 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)

1) Oracle DB Exporter 설치

cmd> su - grafana
cmd> cd /monitoring/install

 

Oracle DB Exporter GitHub 링크

https://github.com/iamseth/oracledb_exporter
 버전 0.3.0rc1로 설치할 것입니다.

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

 

2) 기본환경 구성 

 

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

 

3) Oracle DB Exporter 실행

cmd> ./startOracleDBExporter.sh

Oracle DB Exporter 기동 쉘스크립트 실행

 

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

 

Oracle DB Exporter 서비스 접속 확인

 

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된 것을 확인합니다.

 

Targets 확인

 

6) Oracle DB 대시보드 구성

 

Oracle DB Exporter가 수집한 메트릭을 모니터링하는 대시보드(ID : 3333)를 생성해줄 것입니다.

대시보드 링크 - Oracledb | Grafana Labs

 

대시보드 생성을 위해 로컬 브라우저를 통해 http://192.168.56.111:3000 에 접속합니다.

 

새로운 대시보드 Import

 

대시보드 ID 입력

 

 

대시보드에 연결할 데이터소스를 프로메테우스로 선택

 

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

 

생성한 대시보드 확인

 

 

 

192.168.56.114 노드의 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)

 

WLS Exporter 서비스 접속 확인

 

서비스 접속 확인 후에

파일 선택 없이 제출 버튼을 클릭해봅니다.

 

이는 원래 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 파일을 선택하여 제출합니다.

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된 것을 확인합니다.

 

Targets 확인

 

5) WebLogic 대시보드 구성

 

WLS Exporter가 수집한 메트릭을 모니터링하는 대시보드를 생성해줄 것입니다.

대시보드 링크 - https://github.com/oracle/weblogic-monitoring-exporter/blob/master/samples/kubernetes/end2end/dashboard/weblogic_dashboard.json

 

해당 대시보드는 Grafana 사이트에서 직접 확인할 수 있는 대시보드가 아니기 때문에

json 파일을 직접 복사하여 import할 것입니다.

 

대시보드 생성을 위해 로컬 브라우저를 통해 http://192.168.56.111:3000 에 접속합니다.

 

새로운 대시보드 Import

 

JSON 파일 내용을 붙여넣기

 

Name 및 UID 확인 후 Import

 

해당 대시보드에서 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 등

 

 

생성한 대시보드 확인

 

192.168.56.114 노드의 WLS 관련 메트릭 확인

 

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 구성 를 참고하여 똑같이 구성을 하면 됩니다.

 

그러나 세부적으로 메트릭의 종류가 살짝 다르기는 합니다.

이 때문에 대시보드에 메트릭 값이 뜨지 않는 패널들도 생깁니다. 

 

192.168.56.113 노드의 Apache 관련 메트릭 확인
192.168.56.114 노드의 OHS 관련 메트릭 확인

대시보드를 비교해보면, 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