문제 상황

Logstash와 Elasticsearch를 연동하는 과정에서 다음과 같은 에러가 발생하였습니다.

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

이는 Elasticstack 8.0 버전부터 default로 보안 설정이 적용되어 생기는 문제로 보안 관련 처리를 해주어야 제대로 동작합니다.

해결 방법

두 가지 방법이 있습니다.

  1. SSL 자격 확인을 하지 않도록 설정하는 방법
  2. SSL 자격 인증서를 등록하는 방법

1번 방법에 대한 해결법은 이 게시글을 참고해주세요.

2번 방법에 대한 해결법을 설명해드리겠습니다.

Elasticsearch 인증서 생성

다음 명령어를 입력하여 .cer 인증서를 생성해줍니다.

echo -n | openssl s_client -connect localhost:9200 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ./ca_logstash.cer

생성된 파일을 ${LS_HOME}/config/certs폴더로 이동시킵니다.

conf 파일 수정

config 파일을 다음과 같이 cacertssl을 추가하여 변경합니다.

...

output {
    elasticsearch {
        index => "output"
        hosts => ["https://192.168.0.6:9200", "https://192.168.0.14:9200", "https://192.168.0.15:9200"]
        user => "elastic"
        password => "yourpassword"
        ssl => true
        cacert => "/home/c1-elastic/elastic/logstash-8.1.0/config/certs/ca_logstash.cer"
    }
    stdout {}
}
Elasticsearch가 다중 노드로 구성되어 있다면 hosts에 해당 노드를 모두 추가하여야 합니다.

수정 후 다시 실행하여 봅시다.

./bin/logstash -f config/test.conf

사진과 같이 정상적으로 실행되었음을 확인할 수 있습니다.