Logstash使用介绍
Logstash介绍
Logstash是一个数据收集处理转发系统,是 Java开源项目。 它只做三件事:
- 数据输入
- 数据加工(不是必须的):如过滤,改写等
- 数据输出

下载安装
logstash是基于Java的服务,各操作系统安装Java环境均可使用。
Java
https://www.java.com/zh_CN/
安装后配置好java环境变量。
logstash
最新版 https://www.elastic.co/downloads/logstash
2.3.4版 https://www.elastic.co/downloads/past-releases/logstash-2-3-4
配置结构
#输入
Input{
Jdbc{}
}
#加工过滤
Filter{
Json{}
}
#输出
Output{
elasticsearch{}
}
支持的插件
Input: elasticsearch,file,http_poller,jdbc,log4j,rss,rabbitmq,redis,syslog,tcp,udp…等
Filter: grok,json,mutate,split …等
Output: email,elasticsearch,file,http,mongodb,rabbitmq,redis,stdout,tcp,udp …等
配置说明地址: https://www.elastic.co/guide/en/logstash/current/input-plugins.html
应用示例
#jdbc_demo
input {
jdbc {
#数据库链接设置
jdbc_driver_library => "k:\k\k\sqljdbc_6.0\chs\sqljdbc42.jar"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://192.168.0.1;user=sa;password=sa;DatabaseName=EStatistic;"
jdbc_user => "sa"
jdbc_password => "sa" statement_filepath => "../config-demo/sqlscript/jdbc_demo.sql" #sql脚本
schedule => "* * * * *" #执行计划 record_last_run => true #记录最后运行值
use_column_value => true #
tracking_column => id #要记录的字段
last_run_metadata_path => "../config-demo/log/jdbc_demo" #记录的位置 lowercase_column_names => true #将字段名全部改为小写
clean_run => false jdbc_fetch_size => 1000 #分页设置
jdbc_page_size => 1000
jdbc_paging_enabled => true
}
}
filter {
mutate {
#重命名,可以将字段名改掉
rename => {
"id" => "Id"
"bid" => "BId"
"saleconsultantid" => "SaleConsultantId"
"avgreplyduration" => "AvgReplyDuration"
"avgreplyratio" => "AvgReplyRatio"
"avgonlineduration" => "AvgOnlineDuration"
"stattime" => "StatTime"
}
}
}
output {
elasticsearch {
hosts => ["192.168.0.1:9200"] #es 服务地址
index => "jdbc_demo" #索引的名字
document_type => "demoinfo" #类型的名字
workers => 1 #输出时进程数
document_id=>"%{Id}" #文档的唯一ID
template => "../config-demo/templates/jdbc_demo.json" #模板的路径
template_name => "jdbc_demo" #模板的名字
template_overwrite => false ##是否覆盖已存在的模板
}
# stdout{
# codec => rubydebug
# }
}
索引模板
{
"order": 1,
"template": "jdbc_demo", //模板匹配规则,已经索引名匹配(eg:jdbc_demo-*,可以匹配到,jdbc_demo-1,jdbc_demo-14...)
"settings": {
"index.number_of_shards": 4, //分片数
"number_of_replicas": 1 //每个分配备份数
},
"mappings": {
"_default_": {
"_source": {
"enabled": true
}
},
"demoinfo": { //动态模板 如果映射后,有新的字段添加进来,并且在字段区域没有映射会按该动态模板匹配映射
"dynamic_templates": [
{
"string_field": {
"match": "*",
"match_mapping_type": "string", //匹配到所有字符串 设置为不分词
"mapping": {
"index": "not_analyzed",
"type": "string"
}
}
}
], //类型名
"_source": {
"enabled": true
},
"_all": {
"enabled": false
},
"properties": { //字段区域
"Id": {
"type": "long"
},
"BId": {
"type": "integer"
},
"SaleConsultantId": {
"type": "integer"
},
"AvgReplyDuration": {
"type": "integer"
},
"AvgReplyRatio": {
"type": "double"
},
"AvgOnlineDuration": {
"type": "integer"
},
"StatTime": {
"format": "strict_date_optional_time||epoch_millis",
"type": "date"
}
}
}
},
"aliases": {
"logstashdemo": {} //别名,匹配到该模板的会设置一个别名
}
}
Sqlserver 查询语句
SELECT [Id]
,[BId]
,[SaleConsultantId]
,[AvgReplyDuration]
,[AvgReplyRatio]
,[AvgOnlineDuration]
,[StatTime]
FROM [EStatistic].[dbo].[StatSessionBy7Day]
WHERE Id>:sql_last_value
--:sql_last_value是记录的最后的一个值
5.x模板String字段
{"properties": { //字段区域
"NewField": {
"type": "keyword", // keyword 不分词
"index": false //不建立索引
},
"NewFieldText": {
"type": "text", // text分词
"index": true // 建立索引
}
}
}
注意事项
- Jdbc(input)拉取数据使用分页功能时无法查询text、ntext 和 image字段。
- jdbc(input)使用分页时会将字段全部转换为大写。
- elasticsearch(output)的模板中匹配符,一定要能够匹配到索引名称才能生效,并且要避免让其他索引匹配到,以免影响其它新索引。
- elasticsearch(output)定义索引名称必须全小写(es限制)。
- 以时间字段进行跟踪时sql查询语句不能使用Top x限制每次查询条数,这会导致最后的记录值并非是最大的值,所拉取的数据可能会出现数据重复拉取(但是在es中不会体现为多条重复数据,只是version字段会>1)或数据丢失。
- 跟踪主键ID时需显示设置 order by id asc
- 无检索文本内容需设置“index”: “not_analyzed”
资料
es字段对应类型 https://www.elastic.co/guide/en/elasticsearch/reference/2.3/mapping-types.html
logstash官网地址 https://www.elastic.co/guide/en/logstash/2.3/configuration.html
sqlservice jdbc jar包http://www.microsoft.com/zh-cn/download/details.aspx?id=11774&a03ffa40-ca8b-4f73-0358-c191d75a7468=True
Logstash使用介绍的更多相关文章
- LogStash filter介绍(九)
LogStash plugins-filters-grok介绍 官方文档:https://www.elastic.co/guide/en/logstash/current/plugins-filter ...
- Logstash配置文件介绍
Logstash配置文件介绍 Logstash配置文件有两种,分别是pipeline配置文件和setting配置文件. Pipeline配置文件主要定义logstash使用的插件以及每个插件的设置,定 ...
- Logstash安装介绍
前言 logstash是ELK日志系统中的一部分,主要承担将收集完成日志进行过滤,并且输出到es的职责. logstash本身也可以作为客户端部署到应用系统的服务器上进行日志收集,但是由于资源开销占用 ...
- LogStash plugins-inputs-file介绍(三)
官方文档 https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html 重要参数: path # 文件路径 sin ...
- Docker部署ELK 7.0.1集群之Logstash安装介绍
1.下载镜像 [root@vanje-dev01 ~]# docker pull logstash: 2.安装部署 2.1 创建宿主映射目录 [root@vanje-dev01 ~]# mkdir ...
- Elastic 技术栈之 Logstash 基础
title: Elastic 技术栈之 Logstash 基础 date: 2017-12-26 categories: javatool tags: java javatool log elasti ...
- Elastic Stack初篇-Logstash
一.Logstash简介 Logstash是一个开源数据收集引擎,具有实时管道功能.Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地. 二.Log ...
- ElasticStack之Logstash安装
服务器环境 操作系统 Host:port node 1 CentOS 7.2.1511 11.1.11.127:9200 node1 2 CentOS 7.2.1511 11.1.11.128:920 ...
- elastic search&logstash&kibana 学习历程(三)Logstash使用场景和安装部署
Logstash基本介绍和使用场景 自我认为:logstash就是日志的采集收集,日志的搬运工,实时去采集日志.读取不同的数据源,并进行过滤,开发者自定义规范输出到目的地.日志的来源很多,如系统日志, ...
随机推荐
- BUAA-OO-第一单元表达式求导作业总结
figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-wid ...
- 推荐一个Monokai风格的EditPlus配色方案
如何配置 找到EditPlus的配置文件editplus_u.ini,该文件默认在:系统盘:\Users\用户名\AppData\Roaming\EditPlus目录中.将其中的内容替换为如下即可: ...
- 《图解HTTP》读书笔记(四:HTTP方法)
1.作用 告知服务器我的意图是什么使用以下方法下达命令. 2.方法 GET 方法用来请求访问已被 URI 识别的资源. 指定的资源经服务器端解析后返回响应内容. ---URI可以定位互联网上的资源 P ...
- jenkin如何实现web版本控制&回退
jenkins本身作为一款运维利器,具备 1. 持续集成 (Continuous integration) 2. 持续交付(Continuous delivery) 3. 持续部署(continuou ...
- 001-JUnit之断言assert
一.简介以及pom JUnit4.4引入了Hamcrest框架,Hamcest提供了一套匹配符Matcher,这些匹配符更接近自然语言,可读性高,更加灵活: 使用全新的断言语法:assertThat, ...
- nginx隐藏tp路由index.php
---------------------------------------------- 也可以找到vhosts.conf文件修改, 重启nginx,service nginx restart
- (转) jmeter 获取cookie
转自 https://blog.csdn.net/five3/article/details/53842283 jmeter是测试过程中会被用到的一个测试工具,我们即可用来进行压力的压测,也可以用 ...
- eclipse中tomcat的add and Remove找不到项目
在我们运行项目前,都需要将项目部署到tomcat上,但是有时我们会遇到这种情况:项目明明存在,但是eclipse中tomcat的add and remove找不到项目,无法部署,那么这个问题该如何解决 ...
- 蓝桥杯近3年决赛题之3(17年b组)
做的时候对了2个小题,一个大题可能会拿点分数. 1. 标题:36进制 对于16进制,我们使用字母A-F来表示10及以上的数字.如法炮制,一直用到字母Z,就可以表示36进制. 36进制中,A表示10,Z ...
- spring boot入门小案例
spring boot 入门小案例搭建 (1) 在Eclipse中新建一个maven project项目,目录结构如下所示: cn.com.rxyb中存放spring boot的启动类,applica ...