首页 > 数据库 >Linux(CentOS) Docker 部署Logstash (sqlserver 同步到Elasticsearch)

Linux(CentOS) Docker 部署Logstash (sqlserver 同步到Elasticsearch)

时间:2022-11-29 10:24:12浏览次数:68  
标签:pipeline jdbc run CentOS sqlserver Elasticsearch last docker logstash

网上搜了一下基本都是mysql 同步到elasticsearch的案例,虽然没有Sqlserver得案例,但是想一下步骤也大致相同。

1.拉取镜像

使用以下命令拉去与elasticsearch 版本一致logstash的镜像

docker pull logstash:xxxx
下载完成之后,使用以下命令查询是否成功

docker images
如图

2.创建挂载目录

mkdir -p dockerdata/logstash/{config,pipeline}


启动容器并把配置文件复制到挂载目录

 docker run -it -p 5044:5044 -p 9600:9600 -d --name logstash -e LS_JAVA_OPTS="-Xms512m -Xmx512m" --privileged=true logstash:xxx
 docker cp logstash:/usr/share/logstash/config/ /dockerdata/logstash/config/
 docker cp logstash:/usr/share/logstash/pipeline/ /dockerdata/logstash/pipeline/

停止容器并删除

  docker stop 容器名称/id
  docker rm  容器名称/id

3. 启动容器并挂载

docker run -it -p 5044:5044 -p 9600:9600 -d --name logstash -e LS_JAVA_OPTS="-Xms512m -Xmx512m" -v /dockerdata/logstash/config/:/usr/share/logstash/config/ -v /dockerdata/logstash/pipeline/:/usr/share/logstash/pipeline/ --privileged=true logstash:xxx

4.安装插件

bin/logstash-plugin install logstash-input-jdbc
bin/logstash-plugin install logstash-output-elasticsearch

这块可能会有两个报错提示
1.如提示Installation aborted, verification failed for logstash-input-jdbc
需要在install 后面加上--no-verify
2.如提示Installation aborted, plugin 'logstash-input-jdbc' is already provided by...
说明不需要安装了,logstash 已经支持logstash-input-jdb插件

5. 修改config和pipeline 目录的配置文件

如果你的Es与logstash 部署在同一台服务器的docker里面,那么就需要了解容器之间的访问了,可以参考容器互访的三种模式

5.1 config (dockerdata/logstash/config)

pipeline.yml 修改后的内容

 # This file is where you define your pipelines. You can define multiple.
# For more information on multiple pipelines, see the documentation:
#   https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html

- pipeline.id: main
  path.config: "/usr/share/logstash/pipeline/logstash.conf"

logstash.yml 修改后的内容

http.host: "0.0.0.0"
# xxx.xx.xx  es地址
xpack.monitoring.elasticsearch.hosts: ["http://xxx.xx.xx:9200"]
xpack.monitoring.enabled: true

5.2 pipeline (dockerdata/logstash/pipeline/)

pipeline目录下需要有三个文件(sqlserver的连接配置驱动,logstash.conf,logstash_jdbc_last_run)

mssql-jdbc-9.2.1.jre8.jar
本地下载之后用(FileZilla)上传至服务器 ,其他配置文件我也是在本地编辑之后上传的,linux 编辑感觉不是特别方便,当然你也可以使用vi命令编辑。

logstash.conf

input {
stdin {
    }
  jdbc {
     #数据库驱动所在位置,可以是绝对路径或者相对路径
    jdbc_driver_library => "/usr/share/logstash/pipeline/mssql-jdbc-9.2.1.jre8.jar"
    #驱动类名
    jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
     #数据库连接
    jdbc_connection_string => "jdbc:sqlserver://xxx.xxx.xx;DatabaseName=DbName;"
     #用户
    jdbc_user => "sa"
     #密码
    jdbc_password => "sa123456"
    #设置定时任务间隔  含义:分、时、天、月、年,全部为*默认含义为每分钟跑一次任务
   #schedule => "* * * * *"
  #每小时的第10分钟执行
    schedule => "10 /1 * * *"
   #索引设置时区
   jdbc_default_timezone => "Asia/Shanghai"
    #sql语句
    statement => "SELECT *
  FROM  table  where  Isdeleted=0 and updatedtime>:sql_last_value"
    #或者sql可执行文件
    #statement_filepath => "路径"
    #是否开启记录上次追踪的结果,也就是上次更新的时间,这个会记录到 last_run_metadata_path 的文件
    use_column_value => true
   #tracking_column 对应字段的类型
    tracking_column_type => "timestamp"
   #如果 use_column_value 为true, 配置本参数,追踪的 column 名,可以是自增id或者时间
    tracking_column => "updatedtime"
    #是否记录上次执行结果, 如果为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到 last_run_metadata_path 指定的文件中
    record_last_run => true
  # 记录上一次追踪的结果值
   last_run_metadata_path => "/usr/share/logstash/pipeline/logstash_jdbc_last_run"
    # 
    #type => ""
    # 数据库字段名称大写转小写
      lowercase_column_names => false
#是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录
     #clean_run : 
  }
}
 
 
output {
    elasticsearch {
        # ES的IP地址及端口
        hosts => ["http://xxx.xx.xx:9200"]
        # 索引名称 可自定义(只可以小写)
        index => "customer"
        document_type => "customer"
        # 需要关联的数据库中有有一个id字段,对应类型中的id
        document_id => "%{id}"
    
    }
 stdout {
       # codec => json_lines
#设置输出的格式
codec => line {
format => "updatedtime: %{[updatedtime]}"
}
    }

}

logstash_jdbc_last_run
使用echo命令创建文件并写入内容
echo '--- !ruby/object:DateTime '2022-11-28 02:40:00.317455000 Z'' > logstash_jdbc_last_run
使用cat 查看是否成功
cat logstash_jdbc_last_run

重启 logstash容器
docker restart 容器名称/id
查看日志
docker logs -f logstash

标签:pipeline,jdbc,run,CentOS,sqlserver,Elasticsearch,last,docker,logstash
From: https://www.cnblogs.com/wxxf/p/16933491.html

相关文章

  • 在CentOS上使用Jexus托管运行 ZKEACMS
    ZKEACMSCore是基于.netcore开发的,可以在windows,linux,mac上跨平台运行,接下来我们来看看如何在CentOS上使用Jexus托管运行ZKEACMS,通常我们在......
  • Centos 7.0 安装Mono 3.4 和 Jexus 5.6
    2013-07-26写过一篇《​​CentOS6.3下安装Mono3.2和Jexus5.4​​》,CentOS7在CentOS6的基础上有很大的调整,本文是这篇文章的更新,主要介绍CentOS7下安装Mono3.4和......
  • CentOS 7 NTP服务端和客户端详细配置
    1.安装NTP1.1yum安装yum-yinstallntp1.2开机自启#设置开机启动chkconfigntpdonsystemctlenablentpdsystemctlstartntpdsystemctlstatusntpdsystemctldaemon-r......
  • centos7 升级 openssh (用来避坑)
    是的,踩坑了,导致服务器远程登录不上去,最后只能想其他办法了。所以有必要记下来具体的操作。环境centos7.9,自带的openssh为7.4,准备升级到7.9p1.编译openssh先编......
  • centos8 安装svn(yum)
    1、安装yuminstallsubversion  2、查看版本svnserve--version 3、创建库mkdir/var/svnsvnadmincreate/var/svn/test4、......
  • Centos、Ubuntu 安装中文字体
    正文一.Centos系列1.安装字体库yum-yinstallfontconfig2.添加中文字体,建立存储中文字体的文件夹mkdir/usr/share/fonts/chinese3.在windows上打开c盘下的Windows......
  • 4 在Linux Centos客户端连接SMB群辉NAS的共享
    1.1    在NAS中开启SMB1的支持:1.2    最主要的是用命令行: [root@localhost~]#sudomount-tcifs​​//192.168.1.20/XXXXX/研发中心/AI算法部/AI算法共享......
  • centos7 docker离线安装教程
    离线安装包下载docker离线安装时需要两个安装包:selinux包、docker包,下载地址:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/selinux包下载https:/......
  • CentOS7一键脚本安装docker并创建ES集群(docker版本)
    ​CentOS7一键脚本安装docker并创建ES集群(docker版本)原创 yuanfan2012 WalkingCloud 2022-11-2819:59 发表于浙江收录于合集#Linux学习笔记288个#CentOS......
  • Centos7 搭建Jupyter NoteBook教程
    (目录)以下操作基于root用户1.Anaconda31.1下载wgethttps://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh1.2安装bashAnaconda3-5.0.1-Linux-......