제목만 썼는데 어제의 삽질이 올라오는 기분.... 곧장 시작해보겠다. elasticsearch 설치에 관련된 내용은 이전 포스팅 참고.
1. Logstash를 사용하려는 이유?
- logstash를 사용해서 elastic search와 rdbms 사이에 pipline을 생성할 수 있다.
- 입력 → 필터(가공) → 출력
- 검색해보니 elasticsearch와 rdbms를 연결할 때 가장 많이 쓰는 방식인 것 같아서 시도해보기로 했다. elastic에서 만든 서비스이기도 하고...
- rdbms를 감시해서 데이터를 logstash를 통해 elastic 으로 보내서 적재 → 검색에 사용하는 방식
- logstash의 입력 플러그인으로 JDBC(Java Database Connectivity)를 사용해서 RDBMS와 연결한다.
2. Logstash 설치
설치는 elasticsearch나 kibana처럼 위 링크에서 운영체제에 맞는 녀석을 골라 압축해제하면 된다.
3. Logstash 예제 실행해보기
아~주 간단한 예제를 만들어서, standard input으로 받은 값을 그대로 standard output과 elastic search로 연결해보도록 하겠다. 먼저 config/ 폴더 아래에 logstash-simple.conf 파일을 생성하고 아래처럼 작성한다.
input {
stdin {}
}
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
Logstash는 기본적으로 config 파일을 통해서 명령을 전달하고 수행하는 방식으로 작동한다. input - filter - output 과정을 거쳐서 파이프라인이 생성되는데, 지금은 filter는 사용하지 않고(사실 아직 모른다^^;) input과 output을 효과적으로 연결해보는 정도만 해보도록 하겠다.
.\bin\logstash.bat -f .\config\logstash-simple.conf
이렇게 명령어를 쳐주면!
- logstash
[WARN ][logstash.outputs.elasticsearch][main]
Attempted to resurrect connection to dead ES instance, but got an error {
:url=>"http://elastic:xxxxxx@localhost:9200/",
:exception=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError,
:message=>"Elasticsearch Unreachable:
[http://localhost:9200/][Manticore::ClientProtocolException] localhost:9200 failed to respond"}
하아... 저 망할 Attempted to resurrect connection to dead ES instance, but got an error를 어제 몇 번이나 봤는지 모르겠다. Elasticsearch Unreachable, 그러니까 접근 권한이 없다는 뜻인 것 같다.
- elasticsearch
[WARN ][o.e.h.n.Netty4HttpServerTransport]
received plaintext http traffic on an https channel,
closing connection Netty4HttpChannel{localAddress=/127.0.0.1:9200, remoteAddress=/127.0.0.1:53206}
received plaintext http traffic on an https channel, closing connection Netty4HttpChannel 을 보면 뭔가 traffic을 받기는 했는데 연결이 끊어진 것 같다.
원인은 보안인증 부분에 있다. elasticsearch.yml을 보면 xpack security 관련 항목들이 있는데 이걸 false로 바꿔주면 동작은 한다.
그러나 따라하지 말 것... 다음 포스팅에서 해결방법을 언급할 것이다. 이렇게 하고 kibana를 실행하면 실행 안된다. 지금 당장 kibana없이 결과를 보고 싶다면 하고 나중에 다시 true로 바꿔놔도 된다.
아무튼 이렇게 해서 결과를 보면 codec ruby debug를 통해서 콘솔에 입력한 값을 출력해줬다.
다음 포스팅에서는 JDBC input plugin을 활용해서 logstash - postgres - elastic을 연결해보도록 하겠다... 삽질로그가 될 것 같다.
'🐥 Web > ❔ Back-end | etc.' 카테고리의 다른 글
[Elasticsearch] Index Template 구성하기 with Kibana & Logstash (1) - Setting (0) | 2023.07.06 |
---|---|
[Elasticsearch] Logstash를 통해 PostgreSQL과 Elastic Stack 연동하기 (0) | 2023.06.29 |
[Elasticsearch] Elasticsearch 기본 개념 및 설치, kibana 연동하기 (1) | 2023.06.29 |
[SQL] SQL 중급 (0) | 2021.08.22 |
[SQL] SQL 기초 (0) | 2021.07.24 |