以下我们在Centos7操作系统上以logstash-7.12.0为例来进行一下安装

环境准备

Jdk1.8(已阐述,7版本后自带)

logstash-7.12.0

开始安装

  1. 下载安装包并解压到目录/opt/app

  2. 进入到解压目录修改服务配置文件logstash.yml

#使用分层表单来设置管道的批处理大小和批处理延迟
pipeline.batch.size: 125
pipeline.batch.delay: 5
#节点名称,在集群中具备唯一性,默认为logstash主机的主机名
node.name: logstash-node1
#logstash及其插件所使用的数据路径,默认路径为logstash家目录下的data目录
path.data: /opt/app/logstash-7.12.0/data
#管道的ID,默认为main
pipeline.id: main
#输入、输出及过滤器的总工作数量,也就是logstash的工作进程,此工作进程默认为主机的cpu核心数量
pipeline.workers: 4
#在输入阶段,单个工作线程将从输入中收集的最大事件数,此事件数堆内存开销较大,内存开销可在jvm.options中设置堆内存大小来优化此选项
pipeline.batch.size: 125
#在将一个较小的批发送到filters+output之前,轮询下一个事件时等待的时间(以毫秒为单位)
pipeline.batch.delay: 50
#设置为true时,在强制关闭logstash期间,即使内存中还有事件,那么为true将会强制关闭,导致数据丢失;默认为false,false在强制关闭logstash期间,将拒绝退出,直到所有在管道中的事件被安全输出,再关闭。
pipeline.unsafe_shutdown: false
#指定管道配置的目录,在此目录下的所有管道配置文件都将被logstash读取,除管道配置外,不要放任何文件
path.config: /opt/app/logstash-7.12.0/conf.d
#在启动时,测试配置是否有效并退出,检测配置文件是否正确,包括检测管道配置文件,默认为false
config.test_and_exit: true
#定期检查配置是否更改并重新加载管道,默认为false
config.reload.automatic: true
#logstash间隔多久检查一次配置中的更改,默认为3秒
config.reload.interval: 600s
#设置为true时,将完全编译的配置显示为调试日志消息
config.debug: false
#用于事件缓冲的内部排队模型;可以指定内存memory或者磁盘persisted,内存处理速度相对磁盘来说效率要高,默认为内存
queue.type: memory
#启用持久队列时将存储数据文件的目录路径,默认为logstash路径下的queue
path.queue: /opt/app/logstash-7.12.0/queue
#启用持久队列时使用的页面数据文件的大小(queue.type: persisted)队列数据由分成页面的仅附加数据文件组成
queue.page_capacity: 64mb
#启用持久队列时队列中未读事件的最大数量(queue.type: persisted),默认为0,0为无限制
queue.max_events: 0
#队列的总容量,以字节数表示,默认为1G,根据业务需求而定
queue.max_bytes: 1024mb
#启用持久队列时强制检查点之前最大的ACK事件数量(queue.type: persisted),设置为0,表示无限制,默认为1024
queue.checkpoint.acks: 1024
#启用持久队列时强制检查点之前写入事件的最大数量(queue,type: persisted),设置为0,表示无限制,默认为1024
queue.checkpoint.writes: 1024
#启用持久队列(queue,type: persisted),强制在头部页面上设置检查点的间隔(以毫秒为单位),有周期性检查点的默认值是1000毫秒
queue.checkpoint.interval: 1000
#用于指示logstast启用插件支持DLQ功能的标志,默认为false
dead_letter_queue.enable: false
#每个死信队列的最大大小,如果条目超过此设置会增加死信队列的大小,则会删除条目,默认为1024mb
dead_letter_queue.max_bytes: 1024mb
#为死信队列存储数据文件的目录路径
path.dead_letter_queue: /opt/app/logstash-7.12.0/letter-queue
#度量标准REST端点的绑定地址,默认为127.0.0.1
http.host: "127.0.0.1"
#度量标准REST端点的绑定端口,默认为9600
http.port: 9600
#日志级别,可以设置为以下几种级别(fatal,error,warn,info,debug,trace),默认为info
log.level: info
#logstash日志目录位置,默认为logstash路径下的logs
path.logs: /opt/app/logstash-7.12.0/logs
  1. 创建上述服务配置文件中没有的目录

  2. 截至到此处关于logstash的服务配置算是完成,下面以某个场景实际使用一下

以读取MySQL数据库数据到elasticsearch为场景进行演示

  1. 在config.d目录下编写执行配置文件(参考:Logstash插件.md)
input {
  jdbc {
    # mysql相关jdbc配置
    jdbc_connection_string => "jdbc:mysql://数据库地址:数据库端口/数据库名?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
    jdbc_user => "数据库用户名"
    jdbc_password => "数据库密码"

    # jdbc连接mysql驱动的文件目录
    jdbc_driver_library => "/opt/app/logstash-7.12.0/conf.d/mysql-connector-java-5.1.34-bin.jar"
    jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
    jdbc_paging_enabled => true
    jdbc_page_size => "50000"
    jdbc_default_timezone =>"Asia/Shanghai"

    # mysqlSQL语句
    statement => "select * FROM core_log"
    # 也可以使用文件
    # statement_filepath => "./config/jdbc.sql"

    # 这里类似crontab,可以定制定时操作,比如每分钟执行一次同步(分 时 天 月 年)
    schedule => "* * * * *"

    # 是否记录上次执行结果, 如果为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到 last_run_metadata_path 指定的文件中
    #record_last_run => true

    # 是否需要记录某个column 的值,如果record_last_run为真,可以自定义我们需要 track 的 column 名称,此时该参数就要为 true. 否则默认 track 的是 timestamp 的值.
    use_column_value => true

    # 如果 use_column_value 为真,需配置此参数. track 的数据库 column 名,该 column 必须是递增的. 一般是mysql主键
    tracking_column => "CRLOG_UNID"
    # 必须是numeric 或 timestamp
    tracking_column_type => "numeric"

    last_run_metadata_path => "./logstash_capital_bill_last_id"

    # 是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录
    clean_run => false

    #是否将 字段(column) 名称转小写
    lowercase_column_names => false
  }
}
output {
  elasticsearch {
    hosts => "192.168.5.135:13500"
    index => "netdisk_core_log"
    document_id => "%{CRLOG_UUID}"
    template_overwrite => true
  }

  # 这里输出调试,正式运行时可以注释掉
  stdout {
      codec => json_lines
  }
}
  1. 执行命令bin/logstash --config.reload.automatic -f ./conf.d/mysql2es.conf ,config.reload.automatic:重新重载配置 运行结果

  2. 查看es结果 查看结果