Logstash에 Oracle Autonomous Database 연동

코코블루·2024년 6월 2일

ElasticSearch와 기존 Database와 연동하기 위해서 대부분 Logstash를 사용합니다. 많은 예시도 Logstash를 이용하나 MySQL 또는 PostgreSQL이었는데요. 그런데 저 같은 경우에는 Oracle DB와 연동하고자 하여 정보를 찾았습니다.
정보를 찾은 결과, 일반 Oracle DB와의 정보는 있었으나 Oracle Cloud에 있는 'Oracle Autonomous Database'와의 연동에 대해서는 국내에 정보가 많이 없어서 제가 성공한 설정을 공유해드리고자 합니다.

Error Message

"Caused by: java.security.KeyStoreException: SSO not found"
"Java::JavaSql::SQLRecoverableException: IO Error: The Network Adapter could not establish the connection"

Environment

  • Oracle Autonomous Database 19c
  • Logstash 7.17.21
  • Docker

Solution

Oracle JDBC Driver 뿐만 아닌 oraclepki, osdt_core, osdt_cert의 JAR 파일도 설정에 추가해주어야합니다.

그래서 저는 Logstash용 Dockerfile을 하나 만들어주기로 하였습니다. 제가 작성한 파일을 공유드립니다.

# https://www.docker.elastic.co/
FROM docker.elastic.co/logstash/logstash:7.17.21

# Add the oracle jdbc driver for oracle cloud
RUN mkdir -p /usr/share/logstash/jdbc_drivers
ENV TARGET_DIR=/usr/share/logstash/jdbc_drivers

RUN curl -o ${TARGET_DIR}/ojdbc10_driver.jar https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc10/19.23.0.0/ojdbc10-19.23.0.0.jar && \
    curl -o ${TARGET_DIR}/oraclepki.jar https://repo1.maven.org/maven2/com/oracle/database/security/oraclepki/23.4.0.24.05/oraclepki-23.4.0.24.05.jar && \
    curl -o ${TARGET_DIR}/osdt_core.jar https://repo1.maven.org/maven2/com/oracle/database/security/osdt_core/21.14.0.0/osdt_core-21.14.0.0.jar && \
    curl -o ${TARGET_DIR}/osdt_cert.jar https://repo1.maven.org/maven2/com/oracle/database/security/osdt_cert/21.14.0.0/osdt_cert-21.14.0.0.jar

상기처럼 Docker Image의 /usr/share/logstash/jdbc_drivers 위치에 라이브러리들을 추가해두었습니다.

그리고 logstash.conf를 작성할 때 아래와 같이 지정했습니다.

jdbc_driver_library => "/usr/share/logstash/jdbc_drivers/ojdbc10_driver.jar,/usr/share/logstash/jdbc_drivers/oraclepki.jar,/usr/share/logstash/jdbc_drivers/osdt_core.jar,/usr/share/logstash/jdbc_drivers/osdt_cert.jar"

상기와 같이 4개의 라이브러리를 모두 선언해주어야합니다.

Solution의 핵심

여러 환경에서 사용하시는 분들이 계시기에 해결 방법의 핵심을 설명해드리자면, 핵심은 4개의 라이브러리를 모두 선언해주어야하는 것입니다.

만일, Oracle DB 버전이 다른 등의 문제가 있는 경우 본인에게 맞는 라이브러리의 버전을 다운로드하여 4개를 임의의 위치에 배치하고 위치를 logstash.conf에 알려주는 것이 핵심입니다.

이 글을 보고 해결되셨으면 좋겠습니다!

profile
Have A Happy Coding Time!

0개의 댓글