logstash的output配置中指定elasticsearch的template
转自:https://blog.csdn.net/felix_yujing/article/details/78930389
之前采用的是通过filebeat收集nginx的日志,直接到elasticsearch。filebeat带有nginx的module模块,通过这个nginx模块实现filebeat对nginx日志中字段的处理。最近由于一些实际的使用场景和需求,对nginx日志的收集和处理方式做了一下调整:
filebeat收集nginx原始日志信息到kafka,然后logstash再从kafka读取日志,并进行字段处理后送到elasticsearch集群。即相比原来的方式,添加了kafka层。
logstash从kafka读取过来的日志为json格式,字段的解析可以借助Grok Debugger工具来调,具体的解析方式这里就不细说了。这里主要说一下在logstash使用elasticsearch的template进行字段类型mapping的时候,需要注意的一点问题。
logstash将日志里的字段解析出来并发送到elasticsearch后,发现es上字段的默认的类型都是text的。如果对一些关键字需要做统计报表的时候,就会出现提示报错。如,我用grafana将elasticsearch做为数据源进行数据展示时遇到如下报错:
有报错提示可以看出,将nginx.access.remote_ip的字段换成keyword类型可以解决。
于是,参考原先filebeat中使用的template,写了一个供logstash用的template,起名为nginx_req_log_wireless.json,部分片段如下:
"template": "nginx_req_log_wireless",
"settings": {
"index.refresh_interval": "5s"
},
"mappings": {
...略
"nginx": {
"properties": {
"access": {
"properties": {
"referrer": {
"ignore_above": 1024,
"type": "keyword"
},
"agent": {
"norms": false,
"type": "text"
},
"response_code": {
"type": "long"
},
"geoip": {
"properties": {
"continent_name": {
"ignore_above": 1024,
"type": "keyword"
},
"city_name": {
"ignore_above": 1024,
"type": "keyword"
},
"country_name": {
"ignore_above": 1024,
"type": "keyword"
},
"region_name": {
"ignore_above": 1024,
"type": "keyword"
},
"location": {
"type": "geo_point"
}
}
},
"remote_ip": {
"ignore_above": 1024,
"type": "keyword"
},
"method": {
"ignore_above": 1024,
"type": "keyword"
},
"user_name": {
"ignore_above": 1024,
"type": "keyword"
},
"http_version": {
"ignore_above": 1024,
"type": "keyword"
},
"body_sent": {
"properties": {
"bytes": {
"type": "long"
}
}
},
"url": {
"ignore_above": 1024,
"type": "keyword"
}
...略
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
之后,在logstash的output里的elasticsearch配置部分对template模板进行指定:
index => "nginx_req_log_wireless-%{+YYYY.MM.dd}"
manage_template => true
template_name => "nginx_req_log_wireless"
template_overwrite => true
template => "/usr/local/logstash-5.4.3/template/nginx_req_log_wireless.json"
- 1
- 2
- 3
- 4
- 5
调试后发现,elasticsearch上创建的索引中字段的类型,并没有按照指定的template去mapping。后来才注意到,是应为创建的索引后面带了日期部分:
index => "nginx_req_log_wireless-%{+YYYY.MM.dd}"
- 1
这导致跟nginx_req_log_wireless.json模板文件中指定的template名并不匹配造成的:
"template": "nginx_req_log_wireless"
- 1
解决办法,就是将template名末尾加一个*号通配符即可:
"template": "nginx_req_log_wireless*"
- 1
总结一下:
index的名字必须要和指定的json文件中的templete名相匹配,定义的mapping才会生效。logstash的output配置的template_name名可以随便。
logstash的output配置中指定elasticsearch的template的更多相关文章
- ELK 学习笔记之 Logstash之output配置
Logstash之output配置: 输出到file 配置conf: input{ file{ path => "/usr/local/logstash-5.6.1/bin/spark ...
- spring mvc: 可参数化的视图控制器(在配置中指定jsp文件)MultiActionController/SimpleUrlHandlerMapping/ParameterizableViewController
spring mvc: 可参数化的视图控制器(在配置中指定jsp文件)MultiActionController/SimpleUrlHandlerMapping/ParameterizableView ...
- ELK(ElasticSearch+Logstash+Kibana)配置中的一些坑基于7.6版本
三个组件都是采用Docker镜像安装,过程简单不做赘述,直接使用Docker官方镜像运行容器即可,注意三个组件版本必须一致. 运行容器时最好将三个组件的核心配置文件与主机做映射,方便直接在主机修改不用 ...
- 使用Logstash同步数据至Elasticsearch,Spring Boot中集成Elasticsearch实现搜索
安装logstash.同步数据至ElasticSearch 为什么使用logstash来同步,CSDN上有一篇文章简要的分析了以下几种同步工具的优缺点:https://blog.csdn.net/la ...
- logstash收集的日志输出到elasticsearch中
logstash收集的日志输出到elasticsearch中 一.需求 二.实现步骤 1.编写pipeline文件 1.`elasticsearch`配置参数解析: 2.可能会报的一个异常 2.准备测 ...
- elasticsearch安装与使用(6)-- Logstash安装与配置
由于elasticsearch的search guard 不支持 elasticsearch的jdbc,所以如果安装了search guard认证插件之后,基本上jdbc就废了,所以我们需要用到log ...
- WPF:指定的命名连接在配置中找不到、非计划用于 EntityClient 提供程序或者无效的解决方法
文/嶽永鹏 WPF 数据绑定中绑定到ENTITY,如果把数据文件做成一个类库,在UI文件中去应用它,可能遇到下面这种情况. 指定的命名连接在配置中找不到.非计划用于 EntityClient 提供程序 ...
- 指定的命名连接在配置中找不到、非计划用于 EntityClient 提供程序或者无效
以下内容来自互联网 (1)web: 需要在客户端配置文件的中增加connectionString节点,此节点描述了EntityClient的连接信息. 例如: 在web.config的中增加conne ...
- elasticsearch mysql logstash 同步 简单配置【环境centos7 elasticsearch 6.0 mysql 5.7 logstash 6.0】
插件:logstash-input-jdbc 安装插件logstash-input-jdbc 1.安装 gem yum install gem 2.替换国内的镜像 gem sources -- ...
随机推荐
- Head First设计模式读书笔记
阅读指南: 精读一章内容,手工输入一章代码(注1),与书中描述的思想进行印证,实在搞不懂就放过吧.设计模式绝对不会一次就看懂的. 这本书对于理解设计模式很有帮助,就是例子不太符合中国人的思维模式,但是 ...
- 移动端video不全屏播放
<div class="m-video"> <video x5-playsinline="" playsinline="" ...
- es6之三个点(...)扩展运算符
我们看一个语法,你就知道es6对我们码农多友好,毕竟世界在进步 let arr=[1,2,3,4,54,56] console.log(...arr) 结果是????? 没错 ...这个运算符就是把这 ...
- offsetLeft 解析
前言:先看下w3c与之相关的介绍: element.offsetHeight 返回元素的高度. element.offsetWidth 返回元素的宽度. element.offsetLeft 返回元素 ...
- 转int啥啥啥的
1.String转int类型的话.需要用Double.valueof("这写String类型的数据").intValue(); 2.保留小数点: float scale = (fl ...
- 设计模式系列之装饰模式(Decorator Pattern)
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装.这种模式创建了一个装饰类,用来包装原 ...
- @Resource 与 @Service注解的区别
pring中什么时候用@Resource,什么时候用@service当你需要定义某个类为一个bean,则在这个类的类名前一行使用@Service("XXX"),就相当于讲这个类定义 ...
- mysql的使用相关问题
MySQL的使用和密码忘记解决 解决步骤: 1.查看:我的电脑--管理--服务--查看mysql路径---一直到mysql下的bin文件夹 或需转回别的磁盘: G: (C:\Users\Adm ...
- SQLServer之锁简介
锁定义(Definition) 锁定是 DBMS 将访问限制为多用户环境中的行的过程. 以独占方式锁定行或列,不允许其他用户访问锁定的数据,直到锁被释放. 这可确保两个用户不能同时更新行中的同一列. ...
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案
ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不大,但从内部运行方式上来说,差别还是很大的.上一篇详细介绍了原版路由方案的运行机制, ...