본문 바로가기
IT_tech/ElasticSearch

ELK) 로그스태쉬 sql DB연동하기

by 신드로 2019. 9. 18.

로그스태시에 dB연동하여 여러 쿼리를 쓸때 쓰는방법입니다.

 

1. sqljdbc6-6.4.0.jre8.jar 파일을 로그스태시 폴더에 위치

2. jdbc연결정보 ,쿼리, 스케줄(크론탭) 입력.(비밀번호는 평문은 ELK마다 암호화 하는법-키생성 이 있습니다. 필요하신분은 체크하셔서 암호화변수로 사용가능 합니다.)

3. 쿼리 index 구분은 type으로 실행 (7버전 이후는 type이 없어졌다고 들었는데 적용이되네요??)

4. 중복값 방지를 위해 elastic 부분에 document_id를 추가(혹은 마지막값을 쿼리설정에 추적하는방법)

  - 로그 데이터가 기간을 두고 변동될확률이 있다면 변동값 반영을 위해 그기간만큼 select where절을

    잡고 document_id로 pk를 관리하는 방법이 좋습니다.

5. elk및 기타 외국솔루션은 utc+9 해주지 않으면 날짜 인덱스 생성시에 그시간만큼 중복값이 발생합니다.

   쿼리에 +9시간 을 해주세요..

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------

 

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
jdbc {

   jdbc_driver_library => "C:/Users/shind/Downloads/logstash-7.2.1/logstash-7.2.1/bin/sqljdbc6-6.4.0.jre8.jar
   jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
   jdbc_connection_string=>"jdbc:sqlserver://localhost:1433;databaseName=rpa;" 
   jdbc_user => "sa"         
   jdbc_password => "pass"  
   statement => "select top 100 * from job" 
     type => "job"
       schedule => "* * * * *"
  }
  
   jdbc {

   jdbc_driver_library => "C:/Users/shind/Downloads/logstash-7.2.1/logstash-7.2.1/bin/sqljdbc6-6.4.0.jre8.jar
   jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
   jdbc_connection_string=>"jdbc:sqlserver://localhost:1433;databaseName=rpa;" 
   jdbc_user => "sa"         
   jdbc_password => "pass"  
   statement => "select top 100 * from queue" 
     type => "queue"
       schedule => "* * * * *"
  }
  

}

output {

    if [type] == "job" {
 elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "logstashjob-%{+YYYY.MM.dd}" 
  }
  }
  
      if [type] == "queue" {
 elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "logstashqueue-%{+YYYY.MM.dd}"
  }
  }

}