이전 포스트에 Prometheus + Grafana 를 활용한 시스템 모니터링을 구성했었다.
이번에는 Oracle 모니터링이다.
이번 건은 좀 빡셌다.
Oracle을 Prometheus로 모니터링하기 위해 기존에 진행되는 github 프로젝트를 가져와본다.
참고 프로젝트는 다음과 같다.
iamseth/oracledb_exporter: Prometheus Oracle database exporter. (github.com)
이것 외에 다른것도 있던데 이게 더 낫다.
처음에 진행할 때는 node exporter, windows exporter 처럼 편하게 하겠지 생각했는데 완전 오판이었다.
절차도 일부 달랐다.
0. oracle 계정이 먼저다 계정 만들고 다음 권한부터 부여한다.
Default-metrics requirement
Make sure to grant SYS privilege on SELECT statement for the monitoring user, on the following tables.
dba_tablespaces
v$system_wait_class
v$asm_diskgroup_stat
v$datafile
v$sysstat
v$process
v$waitclassmetric
v$session
v$resource_limit
1. oracledb_exporter binary download 로 시도
- github에서 아래로 쭉 내리면 Binary Release 라는 부분에 release 에 들어가면 binary 버전을 다운로드 받을 수 있다.
- 해당 버전에는 oracledb_export 파일과 default-metrics.toml 파일이 있다. 각각을 다음 경로에 저장한다.
/usr/local/bin/oracledb_export ### 권한 700 이상
/etc/oracledb_exporter/default-metrics.toml
- oracledb_exporter라는 계정을 만들라는데 귀찮다. 나는 그냥 root:root로 간다.
- /etc/systemd/system/oracledb_exporter.service 파일 생성 후 다음 내용 추가
주의할 것은 dbsnmp 는 계정이고 Bercut01 이 패스워드다(sample이다.) 뒤에 @ 꼭 붙이자.
CUSTOM_METRICS는 할 사람만 해라. 그리고 9161 포트 누가 사용중이면 바꿔도 된다.
###############################################################################
[Unit]
Description=Service for oracle telemetry client
After=network.target
[Service]
Type=oneshot
#!!! Set your values and uncomment
#User=oracledb_exporter
#Group=oracledb_exporter
#Environment="DATA_SOURCE_NAME=dbsnmp/Bercut01@//primaryhost:1521,standbyhost:1521/myservice?transport_connect_timeout=5&retry_count=3"
#Environment="LD_LIBRARY_PATH=/u01/app/oracle/product/19.0.0/dbhome_1/lib"
#Environment="ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1"
#Environment="CUSTOM_METRICS=/etc/oracledb_exporter/custom-metrics.toml"
ExecStart=/usr/local/bin/oracledb_exporter \
--default.metrics "/etc/oracledb_exporter/default-metrics.toml" \
--log.level error --web.listen-address 0.0.0.0:9161
[Install]
WantedBy=multi-user.target
###############################################################################
- 시스템 데몬 리로드
systemctl daemon-reload
systemctl start oracledb_exporter
systemctl enable oracledb_exporter
- 이렇게 하면 될 줄 알았겠지만....안된다!!!
이유는...
1) 내가 binary를 가져왔기 때문에 생성한 사람의 환경과 다르면 당연히 실행이 안된다....
소스코드 Makefile을 참고하면 Oracle Major:Minor 버전을 21:8 로 설정해놨다.
서버에 설치된 Oracle은 19.0.0.0..0 버전이라 당연히 안된다....
github Binary Release 보면 http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
해당 경로에서 적절한 버전의 클라이언트 받으면 된다고 한다.
다운로드 받아서 압축풀고 해당 경로를 /etc/systemd/system/oracledb_exporter.service 에
Environment="LD_LIBRARY_PATH= 에 설정해준다.
2) 이러면 될 줄 알았지? 안된다...
이건 작성자도 생각 못한거 같은데 GLIBC 2.32, GLIBC 2.34 버전을 요구한다.
소스코드 Makefile을 참고하면 GLIBC 버전은 2.35가 필요하다.
내가 사용하는 Redhat Linux 8.4의 GLIBC 버전은 2.28이 최대...어림도 없지!
그렇다...저건 오픈소스 GLIBC 버전이다. Redhat 포럼에서는 설치해도 된다는데 경고...를 한다. 권고하지 않는다고
그럼 포기해야 하나....?!
3) 기존 binary가 안되면 내가 컴파일 하면 되지
일단 컴파일 할 OS를 신규로 생성(centos7.9) 당연히 gcc, makefile은 설치해야 하고 소스 옮긴 다음 컴파일
컴파일 하려고 Master 소스코드 다운 받고 github Linux binaries 에 표시된 것처럼 make download-rpms 를 해본다.
안된다!!!!! 으앜!!!!! ㅅㅂ....
(참고로 make download-rpms 한 뒤에 make linux 하라는데 linux라는 선택지는 없다. make local-build 아니면 make go-build 해야한다. 오픈소스라 그런지 참 사람들이 성의가 없다.)
Makefile 자체가 apt get... ubuntu 베이스...
아냐...될거야...orz
Makefile을 잘 뒤져서 하나씩 해본다.
download-rpms야 oracle instant client 다운로드 부분이라 수동으로 wget 하면 된다. 사실 이건 버전이 높아도
1)에서 처럼 별도 받아도 되니까 크게 문제는 없다.
wget 했으면 당연히 yum localinstall로 설치해주면 된다.
문제는 GLIBC 버전인데...
컴파일하면...에러!!!
컴파일 할 때 golang을 쓴다...
# wget -c https://golang.org/dl/go1.15.2.linux-amd64.tar.gz
요런식으로 가져와서
# tar -C /usr/local -xvzf go1.15.2.linux-amd64.tar.gz
요렇게 풀어주고
# mkdir -p ~/projects/{bin,src,pkg}
디렉토리 생성
사용할 계정(나는 root) 의 .bash_profile 에 환경변수 설정
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/projects
설치 했으면 go test는 나중에 하고 다시 컴파일하면 된다.
4) 이제 된다...
두근거리는 마음으로 생성된 oracledb_exporter 파일을 옮기고 가동해보니 된다.
프로메테우스 서버 /etc/prometheus/prometheus.yml 에 대상추가
- job_name: "ORACLE"
static_configs:
- targets: ['hostname:9161']
프로메테우스 재기동
systemctl restart prometheus
5) 추천하는 grafana dashboard 는 다음과 같다. 중국어가 많은데 json 열고 중국어는 영어로 변경해주자.
(Oracledb_Dashboard_202210 | Grafana Labs)
제작자가 추천하는 default metric은 다음 링크에서 가져오자
(https://github.com/saitiger008/oracledb_exporter_metrics)
마지막으로 주의할 점은 oracledb_exporter 로 모니터링 할 경우 oracle의 audit 파일이 많이 떨어지기 때문에 가급적 정기적으로 지워주는 스크립트를 걸도록 하자.
'Oracle' 카테고리의 다른 글
Linux 설치 후 Oracle RAC 환경 구성 절차 (0) | 2023.04.07 |
---|---|
Oracle DB DBMS를 가상화(vmware) 환경에 구성할 경우 라이센스(license) 문제 (0) | 2023.04.06 |
Oracle 용도로 NAS를 마운트 할 때 옵션 (0) | 2023.03.10 |
pid 로 수행중인 sql 찾기 (0) | 2022.11.19 |
oracleasm 구성 (0) | 2022.06.24 |
댓글