docker에 local ELK 적용시키기

JinYoungMo·2024년 4월 3일

도커에서 로그스태쉬가 안되서 문제를 파악 보았더니 크게 두가지 오류가 있었다.

  1. drivers폴더에 postgresql드라이버 파일이 안읽힘
volumes:
      - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml
      - ./logstash/pipeline:/usr/share/logstash/pipeline
      - ./drivers:/usr/share/logstash/drivers

./drivers 파일을 컨테이너가 읽을 수 있게 바꾸어줌

config 파일도

jdbc {
    jdbc_driver_library => "/usr/share/logstash/drivers/postgresql-42.7.3.jar"
    jdbc_driver_class => "org.postgresql.Driver"
    jdbc_connection_string => "jdbc:postgresql://postgres:5432/postgres"
    jdbc_user => "postgres"
    jdbc_password => "postgres"
    schedule => "* * * * *"
    statement => "SELECT * FROM your_table"
  }

바꾸어 줬더니 경로를 못읽어서 일어나는 에러는 나오지 않았다.

  1. 드라이버의 읽기 권한이 없었던 경우
    wsl 에서 모든 읽기 권한 주려고 노력을 해봤으나 자꾸 파일을 못찾는 오류가 남..

그래서 Dockerfile을 생성 후

FROM logstash:latest

# PostgreSQL JDBC 드라이버 다운로드
ADD https://jdbc.postgresql.org/download/postgresql-42.7.3.jar /usr/share/logstash/drivers/postgresql-42.7.3.jar

# 파일 권한 설정
USER root
RUN chown logstash:logstash /usr/share/logstash/drivers/postgresql-42.7.3.jar
RUN chmod 644 /usr/share/logstash/drivers/postgresql-42.7.3.jar

# logstash 사용자로 전환
USER logstash

드라이버 파일을 읽을때 루트계정으로 읽고 실행된 후에 로그스태쉬 계정으로 전환되게 바꾸었다

0개의 댓글