본문 바로가기

카테고리 없음

[ELK] postgreSql 데이터 기반 시각화 해보기2

# PostgreSQL을 우분투에 설치
sudo apt-get install postgresql postgresql-contrib

# PostgreSQL 설치확인
psql --version
psql (PostgreSQL) 12.9 (Ubuntu 12.9-0ubuntu0.20.04.1)

sudo -i -u postgres
psql   #접속
\q     #종료

# 슈퍼유저로 접속
sudo -u postgres psql
# 슈퍼유저 비번 변경
alter user postgres with password '1234';

# 유저생성
create user hyper;
# 유저 생성 및 역할부여
create role hyper superuser;

# 유저 로그인 부여
ALTER ROLE "hyper" WITH LOGIN;
# 유저 비번 변경
alter user hyper with password '1234';

# 유저확인
\du



# 샘플 데이터 넣기

-- Table: public.tn_test

-- DROP TABLE public.tn_test;

-- 테이블생성
CREATE TABLE public.tn_test
(
    test1 character varying(100) COLLATE pg_catalog."default",
    test2 character varying(100) COLLATE pg_catalog."default",
    test3 character varying(100) COLLATE pg_catalog."default"
)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;

-- 테이블 소유자 변경
ALTER TABLE public.tn_test
    OWNER to agens;

-- 테이블 생성 확인
select * from tn_test ;

-- 샘플 데이터 넣기

 INSERT INTO public.tn_test(
test1, test2, test3)
VALUES ('테스트1', '테스트2', '테스트3');
INSERT INTO public.tn_test(
test1, test2, test3)
VALUES ('테스트1-1', '테스트2-1', '테스트3-1');
INSERT INTO public.tn_test(
test1, test2, test3)
VALUES ('테스트1-2', '테스트2-2', '테스트3-2');
INSERT INTO public.tn_test(
test1, test2, test3)
VALUES ('테스트1-3', '테스트2-3', '테스트3-3');
INSERT INTO public.tn_test(
test1, test2, test3)
VALUES ('테스트1-4', '테스트2-4', '테스트3-4');

commit;



jdbc 연결
https://jdbc.postgresql.org/download.html
# 아래 경로에 .jar 다운로드
~/prod/elk/lib/postgresql-42.3.3.jar
chmod 775 postgresql-42.3.3.jar

경로에 .conf 파일 생성
~/prod/elk/logstash-7.15.0/config/logstash-pg.conf

vi logstash-pg.conf
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  jdbc {
    # jdbc_driver_library => "~/prod/elk/lib/ojdbc6.jar"  
    jdbc_driver_library => "~/prod/elk/lib/postgresql-42.3.3.jar"
    jdbc_driver_class => "org.postgresql.Driver"
    jdbc_connection_string => "jdbc:postgresql://127.0.0.1:5432/postgres"
    jdbc_user => "hyper"
    jdbc_password => "1234"
    statement => "select test1, test2, test3 from tn_test"
    # use_column_value => true
    # tracking_column => idx
    schedule => "* * * * *"
  }
}

output {
  elasticsearch { 
    hosts => ["localhost:9200"] 
    index => "test-%{+YYYY.DD.dd}"
  }
}


ELK 실행하기
Elastic Search 실행 및 확인
cd ~/prod/elk/elasticsearch-7.15.0/bin
./elasticsearch
 curl localhost:9200

Logstash 실행, 설정 및 확인
### pipeline 설정 수정
vi ~/prod/elk/logstash-7.15.0/config/pipelines.yml
- pipeline.id: test
# pipeline conf파일을 지정.
# 하기는 위에서 정의한 logstash-pg.conf파일로 지정했음.
# 여기서 root폴더는 logstash root임.
  path.config: "./config/logstash-pg.conf"

cd ~/prod/elk/logstash-7.15.0/bin
./logstash -f ../config/logstash-pg.conf

 

아래 에러 확인중!
Error: org.postgresql.Driver not loaded. :jdbc_driver_library is not set, are you sure you included the proper driver client libraries in your classpath?

 

Error: unable to load ~/prod/elk/lib/postgresql-42.3.3.jar from :jdbc_driver_library, file not readable (please check user and group permissions for the path)



Kibana 실행 및 확인
cd ~/prod/elk/kibana-7.15.0-linux-x86_64/bin
./kibana