logstash 配置文件语法介绍
大家好,我是蓝胖子,之前在构建服务监控实践那个系列里,有提到用logstash来做日志的收集,但是对于logstash的配置文件语法没有做很详细的介绍,今天就来详细聊聊logstash配置文件的语法。
很多时候一门新框架的配置都会有自己独有的配置文件格式,是先简单了解配置文件语法结构,能够让自己更加系统的掌控新框架的各项配置。
文件结构
先来看看logstash的配置文件结构,配置文件分为3部分,input输入,filter过滤,output输出。配置文件是以{} 来定义区段的。如下,
input { }
filter { }
output { }
顾名思义,它们分别表示logstash的输入来源,输入来源可以是文件,filebeat等等。filter则是定义对输入源内容进行二次处理,过滤提取等等。outpout则是将处理后的内容重新输出到其他组件,比如elasticsearch或者通过http接口输出到自定义服务中。
插件
在每一个区段内,可以引入logstash的插件,插件的配置同样也是用{}包裹起来的。如下,我在input区域内部定义了stdin和syslog插件。
input { stdin {} syslog {} }
不过通常在filebeat和logstash搭配使用时,通常是将logstash的输入来源定义为filebeat的插件,如下
input {
beats {
port => 5044
}
}
而filebeat的配置文件中,则是将输出源设置为logstash,如下是filebeat的部分配置文件示例,
output.logstash:
hosts: 192.168.0.2:5054
不同的插件具体有哪些配置,有哪些插件可以使用,参考官方文档 https://www.elastic.co/guide/en/logstash/current/plugins-inputs-beats.html
语法规则
介绍了配置文件的结构后,我们来看看配置文件的语法规则。
声明赋值变量
在配置文件中,赋值一个变量使用的是=>符号,像前面提到把输入源定义为filebeat时,就将port变量赋值为5044了。
port => 5044
除了数值类型,logstash还会有字符串,布尔,数组,hash类型,它们写法如下,
字符串类型
host =>"hostname"
布尔类型
debug => true
数组类型
match => ["datetime", "UNIX", "ISO8601"]
hash类型
options => { key1 =>"value1", key2 =>"value2" }
引用变量
声明赋值完变量后,如何引用呢,在logstash中是通过[]对变量进行引用,如下,我声明了一个变量debug, 然后引用它。
filter {
debug => true
}
output {
if [debug]==true {
...
}
}
如果是那种结构体类型,比如json,或者hash结构,那么可以使用多重[]得到其值,如下,
output {
options => { key1 =>"value1", key2 =>"value2" }
if [options][key1]=="2" {
...
}
}
内插变量
logstash还支持内插变量,如下,我在使用elasticsearch插件时,需要定义输出的索引名称,这个名称是根据日志来源中不同的内容建立不同的索引名称。[fields][log_type]引用的则是出入来源中的变量名。
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
index => "easymonitor-%{[fields][log_type]}-%{+yyyy.MM.dd}"
}
}
条件判断
其实在介绍变量引用的时候,你应该已经看到if语句,除此以外if else语句也是支持的。如下所示,
if "_grokparsefailure" not in [tags] {
...
} else if [status] !~ /^2\d\d/ and [url] == "/noc.gif" {
...
} else {
...
}
logstash支持的判断表达式包括
比较大小: ==, !=, <, >, <=, >= ·
正则: =~, !~
包含关系: in, not in
布尔表达式: and, or, nand, xor
对表达式取反操作: !(表达式)
注意logstash是不支持&& 和 || 表示并且和或关系的,应该用and 和or代替。
条件表达式定义多个输出源
使用条件表达式,在条件表达式中定义不同的输出插件,达到根据不同内容输出到不同组件的目的,以下是配置案例,通过判断日志的等级,等级为error或者日志类型是es的日志时,则输出到报警服务中。
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
index => "easymonitor-%{[fields][log_type]}-%{+yyyy.MM.dd}"
}
if [loglevel] == "Error" or [fields][log_sub_type]=="es" {
http {
http_method => "post"
url => "http://192.168.0.2:36060/alert_log"
}
}
}
总结
logstash的配置文件语法还算是很简单的,灵活的使用条件表达式可以定义多个输出源,想要掌握logstash更多的配置还是要去官网掌握一些插件的用法,不过在看懂语法的基础上,学习插件的用法就是水到渠成的事情了。
logstash 配置文件语法介绍的更多相关文章
- logstash 配置文件语法
需要一个配置文件 管理输入.过滤器和输出相关的配置.配置文件内容格式如下: # 输入 input { ... } # 过滤器 filter { ... } # 输出 output { ... } 先来 ...
- Logstash配置文件介绍
Logstash配置文件介绍 Logstash配置文件有两种,分别是pipeline配置文件和setting配置文件. Pipeline配置文件主要定义logstash使用的插件以及每个插件的设置,定 ...
- logstash配置文件
1. 安装 logstash 安装过程很简单,直接参照官方文档: https://www.elastic.co/guide/en/logstash/current/installing-logsta ...
- Logstash配置文件详情
logstash 配置文件编写详解 说明 它一个有jruby语言编写的运行在java虚拟机上的具有收集分析转发数据流功能的工具能集中处理各种类型的数据能标准化不通模式和格式的数据能快速的扩展自定义日志 ...
- Swift翻译之-Swift语法入门 Swift语法介绍
目录[-] Hello world - Swift 简单赋值 控制流 函数与闭包 对象和类 枚举与结构 协议和扩展 泛型 2014.6.3日,苹果公布最新编程语言Swift,Swift是一种新的编程语 ...
- flex弹性布局语法介绍及使用
一.语法介绍 Flex布局(弹性布局) ,一种新的布局解决方案 可简单.快速的实现网页布局 目前市面浏览器已全部支持1.指定容器为flex布局 display: flex; Webkit内核的浏览器, ...
- freemarker语法介绍及其入门教程实例
# freemarker语法介绍及其入门教程实例 # ## FreeMarker标签使用 #####一.FreeMarker模板文件主要有4个部分组成</br>#### 1.文本,直接输 ...
- QSS类的用法及基本语法介绍
QSS类的用法及基本语法介绍 目录 1. 何为Qt样式表2. 样式表语法基础3. 方箱模型4. 前景与背景5. 创建可缩放样式6. 控制大小7. 处理伪状态8. 使用子部件定义微观样式8.1. 相对定 ...
- MD基本语法介绍
Markdown基本语法介绍 前言 文本编辑器一般用的有富文本编辑器(也就是Word)和md了,但是wold太过于花里胡哨很多功能都用不上,所以就选择md了,简单实用,一对于我来说一般就用标题和列表就 ...
- ELK 学习笔记之 Logstash基本语法
Logstash基本语法: 处理输入的input 处理过滤的filter 处理输出的output 区域 数据类型 条件判断 字段引用 区域: Logstash中,是用{}来定义区域 区域内,可以定义插 ...
随机推荐
- 利用IPV6随时访问家中影音Jellyfin
本文章主要记录通过ipv6实现家庭影音中心在互联网上的访问. 之前很多方案都是通过第三方进行内网穿透,实际体验不是很好.目前ipv6发展迅速,完全可以取代这种以ipv4为中心的内网资源外网访问的方式. ...
- Python 潮流周刊#15:如何分析 FastAPI 异步请求的性能?
你好,我是猫哥.这里每周分享优质的 Python.AI 及通用技术内容,大部分为英文.标题取自其中一则分享,不代表全部内容都是该主题,特此声明. 本周刊精心筛选国内外的 250+ 信息源,为你挑选最值 ...
- 淘宝详情api接口的使用说明
淘宝详情API接口是一种可以用来获取淘宝商品详细信息的服务,包括图片.标题.价格.销量.评论等数据.下面是淘宝详情API接口的使用说明: 1.关于申请API接口权限: 在使用淘宝详情API接口前,需要 ...
- LeetCode952三部曲之一:解题思路和初级解法(137ms,超39%)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 题目描述 难度:困难 编程语言:Java 给定一个由不 ...
- CodeForces 1332D Walk on Matrix
题意 \(Bob\)想解决一个问题:一个\(n\cdot m\)的矩阵,从\((1,1)\)出发,只能走右和下,问从\((1,1)\)到\((n,m)\)的最大\(\&\)和 他的算法如下(\ ...
- 【krpano】图文案例
KRPano图文案例可以展示图片和文字,并支持图片放大浏览,以及文本拖动等操作. 具体截图如下: 下载地址:http://pan.baidu.com/s/1qXQnPes 感谢群内小伙伴 快乐分享 本 ...
- 《微服务架构设计》——Eventuate Tram框架订阅/消费模式源码解析
Eventuate Tram框架官方文档: https://eventuate.io/docs/manual/eventuate-tram/latest/getting-started-eventua ...
- 618京东到家APP-门详页反爬实战
一.背景与系统安全需求分析 1. 系统的重要性 上图所示是接口所属位置.对电商平台或在线商店而言,分类查商品都是很重要的,通过为用户提供清晰的商品分类,帮助他们快速找到所需产品,节省浏览时间,提升购物 ...
- Harry Potter RPG_1
RPG--Harry Potter 博主最近迷上了<Harry Potter> So 我制作了一款RPG对话模拟游戏, 目前主线以进行到了分院以后: 有兴趣的小伙伴可以看看,能点个关注就更 ...
- nacos-mysql.sql
https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql # Nacos安装 /home/nacos ...