IT-notes     О блоге     Архив записей

Jdbc input

Для чтения данных из БД в Logstash необходимо настроить pipeline с jdbc-input.

input {    
  jdbc {    
    jdbc_driver_library => "/usr/share/logstash/ojdbc6-11.2.0.4.jar"    
    jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"    
    jdbc_connection_string => "jdbc:oracle:thin:@192.168.0.101:1521:test02"   
    jdbc_user => "user"    
    jdbc_password => "password"    
    schedule => "*/5 * * * *"   
    statement_filepath => "/usr/share/logstash/queue-atm.sql"    
    type => "monitoring-queue-atm"    
    jdbc_paging_enabled => "true"    
    jdbc_page_size => "6"    
  }  
}    
output {    
  if [type] == "monitoring-queue-atm" {    
    elasticsearch {  
      hosts => [ "192.168.0.101:9200" ]    
      index => "monitoring-queue-atm-%{+YYYY.MM.dd}"    
    }    
  }    
}

Где,

  • jdbc_driver_library - путь к библиотеке ojdbc. “/usr/share/logstash/ojdbc6-11.2.0.4.jar”.
  • jdbc_driver_class - класс-драйвер. Пример, “Java::oracle.jdbc.driver.OracleDriver”.
  • jdbc_connection_string – строка подключения. Пример, “jdbc:oracle:thin:@192.168.0.101:test02”.
  • jdbc_user – имя пользователя.
  • jdbc_password – пароль пользователя.
  • schedule – расписание, по которому получается запрос.
  • statement_filepath - путь к файлу, в котором указан запрос.
  • type – для фильтра получаемой информации.
  • jdbc_paging_enabled - маркер, что запрос, возвращает более одной записи.
  • jdbc_page_size - количество записей, возвращаемое запросом.

Получаемые по запросу данные передаются в Elasticsearch, и сохраняются там под индексом с шаблоном “monitoring-queue-atm-%{+YYYY.MM.dd}”.

Далее с этим индексом работаем в графическом интерфейсе Kibana. Более подробная информация здесь.

FROM docker.elastic.co/logstash/logstash:5.6.9
RUN rm -f /usr/share/logstash/pipeline/logstash.conf
ADD config/logstash.yml /usr/share/logstash/config/logstash.yml
ADD ojdbc6-11.2.0.4.jar /usr/share/logstash/

Старт docker-контейнера:

docker run –rm -d –net=host -v /u01/docker/logstash/pipeline:/usr/share/logstash/pipeline -v /u01/docker/logstash/queue-atm.sql:/usr/share/logstash/queue-atm.sql -v /u01/docker/logstash/data:/usr/share/logstash/data -v /u01/docker/logstash/logs:/usr/share/logstash/logs -v /u01/docker/logs:/home/logs –name=logstash logstash:5.6.9

Монтируемые каталоги:

  • файл с sql-запросом:
    -v /u01/docker/logstash/queue-atm.sql:/usr/share/logstash/queue-atm.sql
  • Каталог с файлами, в которых настроены pipeline:
    -v /u01/docker/logstash/pipeline:/usr/share/logstash/pipeline
    По умолчанию Logstash в каталоге /usr/share/logstash/pipeline все файлы воспринимает, как pipeline.