환경 및 버전
OS / Window10, 11
Elasticsearch / 7.10.1
Kibana / 7.10.1
logstash / 7.10.1
maria db / 10.6.1 , 커넥터는 1.8.0
(JDBC 8.x)
순서
1. jdbc 설치 - mysql 커넥터
2. logstash 설치
3. elasticsearch 엔트 포인트 및 rds 엔드 포인트 연결해서 로컬에서 테스트
4. endpoint와 연결하기 위해 필요한 amazon_es 설치
5. config 작성 후 실행
1. jdbc 설치
mysql 사이트가서 링크 주소 복사 한다음
wget으로 다운 받고 dpkg로 설치하면 '/usr/shere/java/'위치에 설치되어있는 jar파일 확인할 수 있음
wget으로 다운 받고 dpkg로 설치하면 '/usr/shere/java/'위치에 설치되어있는 jar파일 확인할 수 있음
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java_8.0.29-1ubuntu20.04_all.deb
sudo dpkg -i mysql-connector-java_8.0.29-1ubuntu20.04_all.deb
* path
- usr/share/java/mysql-connector-java-8.0.29.jar
2. logstash 설치 & lostash config 파일 작성
그리고 필요한 툴도 함께 설치 + 테스트 할 DB도 마련
실행을 위한 설정파일을 작성할 차례
실행파일에 들어가는 내용
- mysql을 작동시키기위해 필요한 jdbc(java 라이브러리)경로
- input 1: mysql connect 정보
- input 1: mysql 쿼리
- output2 : elasticsearch connect 정보
- output2 : elasticsearch에 생성될 index 및 document 이름
실행파일 예시 - (수정됨) input { jdbc { jdbc_driver_library=>"C:\Users\econo\logstash-7.10.1\lib\jar_files\mysql-connector-java-8.0.19.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql이건 maria건 쓰는 라이브러리에 맞추어 작성://주소:포트번호/db이름" jdbc_user => "아이디" jdbc_password => "비밀번호" #jdbc_paging_enabled => true #tracking_column => "id" #use_column_value => true #tracking_column_type => "numeric" statement => "SELECT * FROM es_table" } } output { elasticsearch { hosts => ["localhost:9200"] manage_template => false index => "filebeat-%{+YYYY.MM.dd}" } } |
|
항목 | 설명 |
input | 말 그대로 입력 데이터, logstash 알아본 결과 input으로 들어갈 수 있는 것 : mysql 뿐만아니라 트위터 api, 서버 로그. nginx 로그 등 logstash에서 지원하는 플러그인 범주에 속한다면 input데이터로 활용 가능 |
output | 출력 데이터 elasticsearch는 output 형태 중의 하나 일 뿐 elasticsearch 종류가 아님 원래는 json형 파일 로그로 출력하는것이 기본 바탕이었다고 함 이 형태가 el과 잘 맞아 elasticsearch에서 효율적으로 사용해 elasticsearch에서 logstash를 효율적으로 사용하게 된것 같다는것이 내 피셜 아무튼 amazon_es, s3, json 기본 파일 형 부터 elasticsearch -> 가공된 자료형까지 다양한 형태의 아웃풋까지 여러 플러그인을 통해 요즘 제공한다고 함. |
jdbc_driver_library =>"C:\logstash-7.10.1\jdk\lib\jrt-fs.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" |
el로 옮기기 위해 연결할 때 어떤 드라이브 사용할건지 (input에 사용할 드라이브) |
jdbc_connection_string => "jdbc:mysql://localhost:3306/metadata?serverTimezone=Asia/Seoul" jdbc_pool_timeout => 120 jdbc_paging_enabled => true jdbc_page_size => 10000 jdbc_user => "root" jdbc_password => "root" |
연결할 mysql 주소 및 connect 정보 |
statement => "select * from data" |
쿼리 |
output { elasticsearch { hosts => ["localhost:9200"] index => "meta_jumin" document_type => "doc_" } |
elasticsearch에 넣을때 어떤index 및 document로 넣을건지 |
stdout { codec => rubydebug } |
어떤 코덱 연동 및 사용할건지(자동으로 포맷 맞춰주는 라이브러리같은건데 기본으로 ruby를 사용하는듯, 추가 라이브러리 은전한닢등도 포맷가능하다고 들음) |
3. (로컬) 엔드포인트 연결 및 실행 - 1차 테스트
logstash 실행파일 있는 위치로 가 conf파일을 실행
C:\Users\econo\logstash-7.10.1\bin\logstash -f ./log.conf
실행 결과 - 전체 index 조회 및 해당 index 조회
GET _cat/indices
GET filebeat-2022.08.10/_search
(여기부턴 이론만 적어놨었는데 실습 완료)
4. elasticsearch 연동을 위한 갖가지 모듈 설치
bin/logstash-plugin install --version 6.4.0 logstash-output-amazon_es
라는 명령어를 통해 아마존과 연결하는 플러그인을 설치할 수 있음
사실 logstash 설치한 폴더 들어가 위 명령어 치면 바로 설치되야되는게 정석
이렇게
근데 안되는 경우가 간혹 있음
예를들면
1. 사양이 너무 낮다(migro, 프리티어로 진행했다)
2. window다 -> window에는 amazon_esㅍㄹ러그인 설치 바로 안된다
이걸 사용하려면 gem과 ruby가 있어야하는데 그거부터 난제
선행 조건이 필요
- jdk 설치 후 java_home(환경변수) 설정 필요
- jruby 설치 후 환경변수 설정 필요 (별도로 설치 해야함)
- gem 설치 필요 (위해 ruby 설치 필요) (별도로 설치 해야함)
..
.
.
등등
그냥 다 필요없고 ec2 지우고 다시 설치 하였음
....
5. aws에 맞는 logstash config 문서 작성 후 실행
내가 생각하는 그림은 docker부분 빼고 위와 같은 그림이므로
amazon_es를 사용해서 output을 출력할 수 있도록
다시 logstash config를 작성했다
input {
jdbc {
jdbc_driver_library=>"/usr/share/java/mysql-connector-java-8.0.26.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://dbdb:3306/db"
jdbc_user => "root1"
jdbc_password => "root2"
statement => "SELECT * FROM 테이블"
}
}
output {
amazon_es {
hosts => ["엔드포인트,포트따윈 필요없어"]
index => "es-test1"
region => "ap-northeast-2"
aws_access_key_id => '키'
aws_secret_access_key => '시크륏'
}
}
결과는 성공
'개발일기 > DB-Elasticsearch' 카테고리의 다른 글
(수정) elasticsearch + mysql(RDS) + logstash 4탄, 나는 단지 geo_point type을 사용해 검색을 하고 싶었을 뿐이다 (0) | 2022.08.19 |
---|