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

작성: 2021.06.06

수정: 2021.06.06

읽는시간: 00 분

Data/Search Engine

반응형
1

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

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

1

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

img

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

img

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

img

img

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

img

압축을 풀어줍니다.

img

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

img

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

img

실행 해 보았습니다.

img

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

img

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

img

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

img

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

img

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

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

img

다시 한번 해 보았습니다.

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

localhost:9200/emp/_doc/_searchCopy

img

결과가 잘 나옵니다 !

img

테스트를 위해 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" 
        } 
}
반응형