1、logstash介绍

logstash 是ES 下的一款开源软件、用于数据采集,就是从Mysql等数据源采集数据、更新数据、然后将数据发送到ES中创建、更新索引

2、安装

演示环境是windows

(1)下载logstash, 注意版本要和ES一致

地址:https://www.elastic.co/downloads/past-releases/logstash-6-2-1

下载zip包后解压

(2)安装ruby

由于logstash-input-jdbc是ruby开发的,所以先下载ruby并安装

地址:https://rubyinstaller.org/downloads/    下载2.5版本即可,安装完成通过ruby -v 查看是否安装成功,注意添加环境变量、使用管理员打开cmd

(3)安装logstash-input-jdbc

logstash5.x是自带logstash-input-jdbc的,6.x版本不带了,需要手动安装

在logstash-6.2.1\bin 目录下执行: .\logstash-plugin.bat install logstash-input-jdbc

安装完成可以在logstash根目录查看对应版本

3、创建模版文件

logstash从Mysql采取数据、向ES中索引,因此需要准备ES索引库的mapping模版。这里模版的filed对应数据库业务模型,通常如果相关业务字段分布在不同表,我们会将其整合到一张表,方便logstash做数据采集。

在logstash的config目录course_template.json

{
"mappings" : {
"doc" : {
"properties" : {
"charge" : {
"type" : "keyword"
},
"description" : {
"analyzer" : "ik_max_word",
"search_analyzer" : "ik_smart",
"type" : "text"
},
"end_time" : {
"format" : "yyyy-MM-dd HH:mm:ss",
"type" : "date"
},
"expires" : {
"format" : "yyyy-MM-dd HH:mm:ss",
"type" : "date"
},
"grade" : {
"type" : "keyword"
},
"id" : {
"type" : "keyword"
},
"mt" : {
"type" : "keyword"
},
"name" : {
"analyzer" : "ik_max_word",
"search_analyzer" : "ik_smart",
"type" : "text"
},
"pic" : {
"index" : false,
"type" : "keyword"
},
"price" : {
"type" : "float"
},
"price_old" : {
"type" : "float"
},
"pub_time" : {
"format" : "yyyy-MM-dd HH:mm:ss",
"type" : "date"
},
"qq" : {
"index" : false,
"type" : "keyword"
},
"st" : {
"type" : "keyword"
},
"start_time" : {
"format" : "yyyy-MM-dd HH:mm:ss",
"type" : "date"
},
"status" : {
"type" : "keyword"
},
"studymodel" : {
"type" : "keyword"
},
"teachmode" : {
"type" : "keyword"
},
"teachplan" : {
"analyzer" : "ik_max_word",
"search_analyzer" : "ik_smart",
"type" : "text"
},
"users" : {
"index" : false,
"type" : "text"
},
"valid" : {
"type" : "keyword"
}
}
}
},
"template": "course"
}

4、配置mysql.conf

logstash会根据mysql.conf文件的配置连接数据库和ES服务器,配置详细解释,见注释

logstash/config/mysql.conf

input {
stdin {
}
jdbc {
#数据源配置
jdbc_connection_string => "jdbc:mysql://localhost:3306/course?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC"
jdbc_user => "root"
jdbc_password => mysql
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
#指定jdbc驱动包位置
jdbc_driver_library => "F:/develop/maven/repository3/mysql/mysql-connector-java/5.1.41/mysql-connector-java-5.1.41.jar" #可以通过指定sql文件的方式工作,但是这里选用statement方式直接指定sql语句
#statement_filepath => "/conf/course.sql"
#由于ES采用UTS时区、比北京时间早8小时、所以读取最后更新时间加8小时
statement => "select * from course_pub where timestamp > date_add(:sql_last_value,INTERVAL 8 HOUR)"
#定时配置,默认一分钟执行一次
schedule => "* * * * *"
record_last_run => "true"
#配置最后更新时间保存位置,默认保存在config/logstash_metadata文件中,注意修改目录
last_run_metadata_path => "D:/ElasticSearch3940/logstash-6.2.1/config/logstash_metadata"
}
} output {
elasticsearch {
#ES的ip地址和端口
hosts => "localhost:9200"
#hosts => ["localhost:9200","localhost:9202","localhost:9203"]
#ES索引库名称
index => "xc_course"
#指定数据库模型中那个字段作为document的id
document_id => "%{courseid}"
document_type => "doc"
template =>"D:/ElasticSearch3940/logstash-6.2.1/config/course_template.json"
template_name =>"course"
template_overwrite =>"true"
}
stdout {
#日志输出
codec => json_lines
}
}

5、测试

执行启动logstash

.\logstash.bat -f ..\config\mysql.conf

业务代码中跟新数据模型数据,注意更新timestamptime,使用head登录查看索引库数据,是否更新

elasticsearch-logstash的更多相关文章

  1. 【转】ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

    [转自]https://my.oschina.net/itblog/blog/547250 摘要: 前段时间研究的Log4j+Kafka中,有人建议把Kafka收集到的日志存放于ES(ElasticS ...

  2. 使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践--转载

    原文地址:https://wsgzao.github.io/post/elk/ 另外可以参考:https://www.digitalocean.com/community/tutorials/how- ...

  3. Manage Spring Boot Logs with Elasticsearch, Logstash and Kibana

    下载地址:https://www.elastic.co/downloads When time comes to deploy a new project, one often overlooked ...

  4. (转)开源分布式搜索平台ELK(Elasticsearch+Logstash+Kibana)入门学习资源索引

    Github, Soundcloud, FogCreek, Stackoverflow, Foursquare,等公司通过elasticsearch提供搜索或大规模日志分析可视化等服务.博主近4个月搜 ...

  5. 基于ELK5.1(ElasticSearch, Logstash, Kibana)的一次整合测试

    前言开源实时日志分析ELK平台(ElasticSearch, Logstash, Kibana组成),能很方便的帮我们收集日志,进行集中化的管理,并且能很方便的进行日志的统计和检索,下面基于ELK的最 ...

  6. ELK日志系统:Elasticsearch+Logstash+Kibana+Filebeat搭建教程

    ELK日志系统:Elasticsearch + Logstash + Kibana 搭建教程 系统架构 安装配置JDK环境 JDK安装(不能安装JRE) JDK下载地址:http://www.orac ...

  7. ELk(Elasticsearch, Logstash, Kibana)的安装配置

    目录 ELk(Elasticsearch, Logstash, Kibana)的安装配置 1. Elasticsearch的安装-官网 2. Kibana的安装配置-官网 3. Logstash的安装 ...

  8. 基于ELK5.1(ElasticSearch, Logstash, Kibana)的一次整合

    前言开源实时日志分析ELK平台(ElasticSearch, Logstash, Kibana组成),能很方便的帮我们收集日志,进行集中化的管理,并且能很方便的进行日志的统计和检索,下面基于ELK的最 ...

  9. ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台

    一.简介 ELK 由三部分组成elasticsearch.logstash.kibana,elasticsearch是一个近似实时的搜索平台,它让你以前所未有的速度处理大数据成为可能. Elastic ...

  10. ELK6.0部署:Elasticsearch+Logstash+Kibana搭建分布式日志平台

    一.前言 1.ELK简介 ELK是Elasticsearch+Logstash+Kibana的简称 ElasticSearch是一个基于Lucene的分布式全文搜索引擎,提供 RESTful API进 ...

随机推荐

  1. P1051复数乘法

    P1051复数乘法 转跳点:

  2. 网卡工作原理和wireshark混杂模式

    通过设置网卡为混杂模式就能捕获局域网内所有发包内容,包括非广播包和非发给自己主机的数据包 这是为什么呢? 即主机A发送一个数据包给主机B,我作为主机C怎么也能截获这个数据包呢,原理是什么? 我的网卡为 ...

  3. 一百零一、SAP中ALV事件之十四,让ALV表格自动排序

    如果我们需要对下图的凭证日期和物料进行排序,需要怎么做呢 一.我们来到ALV的定义 二.我们查看IT_SORT的定义,双击点进去 三.查看SLIS_T_SORTINFO_ALV定义 四.代码如下,定义 ...

  4. Delphi 10.4 最新消息

    官方发布了关于10.4的消息,译文如下: 做为我们的Delphi,C ++ Builder和RAD Studio的订阅客户,除了获得更新,升级和技术支持等主要好处外,我们还邀请订阅客户参加Beta计划 ...

  5. jQuery中:first,:first-child,first()的使用区别

    ul li:first  先获取页面中所有li节点对象数组,然后返回数组中的第一个li节点对象 . :first-child  选择器选取属于其父元素的第一个子元素的所有元素. first() 返回被 ...

  6. 使用TestNG-xslt美化测试报告

    用TestNG测试后,自动会生成html的测试报告,不过相信大家都有感觉,自动生成的测试报告太难看了,所以我们又用了ReportNG来美化它.在 这里给大家再介绍一下比reportNG还要稍稍美观一点 ...

  7. JAXB工具

    在JDK6之后,都自带了JAXB工具,所以在jdk类库与tomcat WEBAPP类库之间,会造成冲突 https://blog.csdn.net/iteye_13776/article/detail ...

  8. java floor,ceil和round方法

    Math.floor():返回值是double类型的,返回的是不大于它的最大整数 举例: double x = Math.floor(5.8); System.out.println(x); //输出 ...

  9. POJ 2632:Crashing Robots

    Crashing Robots Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8424   Accepted: 3648 D ...

  10. LARGE_INTEGER 64位的输出格式

    %016I64x 第一个016是指当最左边无数据时用00填充:后面的I64x是__int64的前缀要求格式十六进制输出.