Logstash를 이용해 Oracle 데이터를 Elastic search와 동기화 하기

작성: 2021.06.06

수정:

Data/Search Engine

ElasticSearch의 버전을 확인합니다. number 에 써있는 7.12.1이 버전입니다 !

https://www.elastic.co/downloads/

 

Elastic 제품을 다운로드 | Elastic

Elasticsearch, Logstash, Kibana 및 Beats를 무료로 다운로드하고 몇 분 내에 Elastic APM, Elastic App Search, Elastic Workplace Search 등을 시작하세요.

www.elastic.co

위의 다운로드 링크에서 Logstash를 찾아갑니다.

 

7.13.1 버전 까지 나왔나 보네요. 

아래에 보니 이전 버전을 확인 할 수 있습니다.

 

제가 서버로 쓰고 있는 컴퓨터에 맞게 7.12.1 WINDOWS 버전을 다운 받았습니다.

압축을 풀어줍니다.

 

이제 이 설정파일을 먼저 셋팅 해줘야 합니다. 샘플 파일이 있으니 카피 하고 이름을 바꿔줍니다.

 

ojdbc 커넥터를 지정 해 주어야 합니다.

 

실행 해 보았습니다.

갑자기 CPU 자원을 극한으로 사용합니다. 

금새 완료가 된 것 같습니다.

kibana에 들어가 확인하니 14개의 Docs 가 정확하게 들어 왔습니다.

 

 

Devtool을 이용해 검색을 해 보니 검색도 잘 됩니다.

 

기존에 인덱싱한 자료의 인덱스명이 너무 어려워서 새로 설정 파일을 만들고 

 

logstash -f "../config/gaia.conf"

다시 한번 해 보았습니다.

이제 POSTMAN을 통해 조회 해 보겠습니다.

localhost:9200/emp/_doc/_search

결과가 잘 나옵니다 !

테스트를 위해 Chrome에서 도 받아 봤습니다. indexing을 자동으로 해주니 검색 기능 추가할 떄 편하게 사용 할 수 있겠습니다 !

 

데이터베이스에서 여러개의 테이블을 받아 올때는 조금 번거롭더라도 아래와 같이 작성해주시면 됩니다.

input { 
        jdbc {
                jdbc_driver_library => "/home/shane/Documents/ojdbc6.jar"
                jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
                jdbc_connection_string => "jdbc:oracle:thin:@localhost:1521:xe"
                jdbc_user => "gaia"
                jdbc_password => "pass"
                statement => "SELECT * FROM MEMBER"
        }
        jdbc {
                jdbc_driver_library => "/home/shane/Documents/ojdbc6.jar"
                jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
                jdbc_connection_string => "jdbc:oracle:thin:@localhost:1521:xe"
                jdbc_user => "gaia"
                jdbc_password => "pass"
                statement => "SELECT * FROM issue"
        }
        jdbc {
                jdbc_driver_library => "/home/shane/Documents/ojdbc6.jar"
                jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
                jdbc_connection_string => "jdbc:oracle:thin:@localhost:1521:xe"
                jdbc_user => "gaia"
                jdbc_password => "pass"
                statement => "SELECT * FROM milestone"
        }
        jdbc {
                jdbc_driver_library => "/home/shane/Documents/ojdbc6.jar"
                jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
                jdbc_connection_string => "jdbc:oracle:thin:@localhost:1521:xe"
                jdbc_user => "gaia"
                jdbc_password => "pass"
                statement => "SELECT * FROM project"    
        }
        jdbc {
                jdbc_driver_library => "/home/shane/Documents/ojdbc6.jar"
                jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
                jdbc_connection_string => "jdbc:oracle:thin:@localhost:1521:xe"
                jdbc_user => "gaia"
                jdbc_password => "pass"
                statement => "SELECT * FROM issue"      
        }
        jdbc {
                jdbc_driver_library => "/home/shane/Documents/ojdbc6.jar"
                jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
                jdbc_connection_string => "jdbc:oracle:thin:@localhost:1521:xe"
                jdbc_user => "gaia"
                jdbc_password => "pass"
                statement => "SELECT * FROM kanban"     
        }
       jdbc { 
                jdbc_driver_library => "/home/shane/Documents/ojdbc6.jar" 
                jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver" 
                jdbc_connection_string => "jdbc:oracle:thin:@localhost:1521:xe" 
                jdbc_user => "gaia" 
                jdbc_password => "pass" 
                statement => "SELECT * FROM wiki"        
        } 
        jdbc { 
                jdbc_driver_library => "/home/shane/Documents/ojdbc6.jar" 
                jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver" 
                jdbc_connection_string => "jdbc:oracle:thin:@localhost:1521:xe" 
                jdbc_user => "gaia" 
                jdbc_password => "pass" 
                statement => "SELECT * FROM news"        
        } 
} 
 
## Add your filters / logstash plugins configuration here 
 
output { 
        elasticsearch { 
                hosts => "localhost:9200" 
                # user => "elastic" 
                # password => "changeme" 
                # ecs_compatibility => disabled 
                index => "gaia" 
        } 
}