콘텐츠로 이동

1. 소개#

이 장은 Monitoring API가 무엇인지 소개하고 특징을 설명한다.

Monitoring API란?#

Monitoring API는 애플리케이션에서 Altibase를 모니터링할 수 있도록 제공되는 애플리케이션 프로그래밍 인터페이스이다.

용도#

Monitoring API는 외부 모니터링 툴 개발자를 위해 제공되는 인터페이스이다. 애플리케이션에서 Altibase의 성능 뷰를 직접 조회하여 모니터링 정보를 수집할 수도 있으나, Monitoring API를 사용하면 개발자들이 모니터링 툴을 좀 더 쉽게 개발할 수 있다.

일반적인 데이터베이스 접근 인터페이스(ODBC, JDBC 등)를 사용하는 사용자에게 기본으로 제공되지 않는다.

특징#

Monitoring API를 사용하면 애플리케이션에서 다음의 데이터를 조회할 수 있다.

  • Altibase 운영 중의 여러 통계 정보

  • 현재 접속중인 세션의 수

  • Altibase 서버에 접속할 수 있는 최대 클라이언트의 수

  • 세션들의 락 정보

  • 대기중인 이벤트 정보

지원되는 Altibase 버전#

Monitoring API는 Altibase 5.5.1 이상 버전에서 지원된다.

주의사항#

Monitoring API로 애플리케이션을 작성하고 실행할 때의 주의사항이다.

  • Monitoring API 애플리케이션은 Unix Domain Socket을 통해서 Altibase 서버에 접속하므로 애플리케이션과 Altibase가 같은 장비에서 실행되어야 한다.

  • Monitoring API 함수 내부(라이브러리)에서 할당하는 메모리는 Monitoring API 함수들이 공유하기 때문에 thread-safe하지 않다. 따라서 멀티 쓰레드 프로그램을 작성할 때에는 공유 자원에 여러 개의 쓰레드가 동시에 접근하지 못하도록 뮤텍스를 사용한 동기화가 필요하다. 4장에서 예제 프로그램 sample_7.c를 참고하라.


애플리케이션 빌드하기#

이 절은 Monitoring API 애플리케이션을 빌드하는데 필요한 헤더 파일과 라이브러리 파일을 알려주고 컴파일 방법에 대해 기술한다.


헤더 파일#

Monitoring API 애플리케이션을 작성할 때 포함되어야 하며 컴파일시에 참조되는 헤더 파일은 altibaseMonitor.h이다. 이 파일은 $ALTIBASE_HDB_HOME/include 디렉토리에 존재한다.

컴파일시에는 컴파일 명령어에 다음의 옵션을 사용하라.

-I$ALTIBASE_HDB_HOME/include

라이브러리 파일#

Monitoring API 애플리케이션을 빌드하려면, 컴파일된 오브젝트 파일을 Altibase가 제공하는 Monitoring API 라이브러리와 ODBC 라이브러리, 그리고 몇몇 시스템 라이브러리와 함께 링크해야 한다.

  • Monitoring API 라이브러리: libaltibaseMonitor.a, libaltibaseMonitor_sl.so

  • ODBC 라이브러리: libodbccli.a

  • 시스템 라이브러리: libpthread.a, libdl.a

Monitoring API 라이브러리와 ODBC 라이브러리는 $ALTIBASE_HDB_HOME/lib 디렉토리에 존재한다.

컴파일#

아래는 Altibase 패키지를 설치할 때 생기는 $(ALTIBASE_HOME)/install/altibase_env.mk 파일을 이용하여 sample.c 소스 파일을 컴파일하는 Makefile 예제이다.

include $(ALTIBASE_HOME)/install/altibase_env.mk
sample: sample.o
    $(LD) $(LDOUT)sample sample.o $(LFLAGS) -laltibaseMonitor -lodbccli $(LIBS)

아래는 콘솔창에서 gcc 컴파일러를 사용해서 sample.c 소스 파일을 컴파일하는 예제이다.

% gcc -c -I$ALTIBASE_HOME/include -o sample.o sample.c
% g++ -o sample sample.o -L$ALTIBASE_HOME/lib -laltibaseMonitor -lodbccli -ldl -lpthread -lcrypt -lrt