Logstashでの動作確認を簡単に行うための環境をDockerで作成します。
作ったものは以下にあります。
https://github.com/matsudamper/logstash_lab
docker-compose.yml
jdbcドライバをダウンロードしてファイル配置するのをDockerfileで行います。
パスワードやらユーザーやらを環境変数にセットします。ローカルのポートにアクセスするための設定も入れます。
version: '2'
services:
logstash:
build:
context: .
dockerfile: Dockerfile
environment:
- DB_USER=
- DB_PASSWORD=
- JDBC_CONNECTION_STRING=jdbc:mysql://host.docker.internal:3306/schema?useUnicode=true&characterEncoding=utf8&connectionTimezone=SERVER&useCursorFetch=true
- JDBC_DRIVER_CLASS=com.mysql.cj.jdbc.Driver
- XPACK_MONITORING_ENABLED=false
volumes:
- ./pipeline/:/usr/share/logstash/pipeline/
extra_hosts:
- host.docker.internal:host-gateway
Dockerfile
logstashとjdbcのバージョンを指定して、jdbcはmavenからダウンロードしてきて配置します。
FROM docker.elastic.co/logstash/logstash:7.17.11
ARG jdbc_version="8.0.33"
ARG jdbc_jar_dir="/usr/share/logstash/logstash-core/lib/jars/"
ENV JDBC_DRIVER_JAR="${jdbc_jar_dir}connector-j.jar"
RUN curl -fsSL -o connector-j.jar https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/${jdbc_version}/mysql-connector-j-${jdbc_version}.jar
RUN mv connector-j.jar "${jdbc_jar_dir}connector-j.jar"
jdbc_test.conf
後はlogstashのファイルです。環境変数にセットしたものを設定しています。ざっと確認するために出力はstdoutに設定しています。あとはSQLをいじって動作確認をします。
input {
jdbc {
jdbc_connection_string => "${JDBC_CONNECTION_STRING}"
jdbc_user => "${DB_USER}"
jdbc_password => "${DB_PASSWORD}"
jdbc_driver_library => "${JDBC_DRIVER_JAR}"
jdbc_driver_class => "${JDBC_DRIVER_CLASS}"
statement => "
SELECT * from user
"
jdbc_fetch_size => 5000
use_column_value => true
tracking_column => user_id
last_run_metadata_path => "/tmp/jdbc_test_last_run_metadata_path"
}
}
filter {
mutate {
remove_field => [
"hoge"
]
}
}
output {
stdout {
codec => json
}
}
起動
後は起動して動作を確認します。オプションは適宜調整します。
docker compose up --build --force-recreate