2017.8.1 logstash基础语法学习

数据类型

1 bool:debug => true
2 string:host => "hostname"
3 int:port => 514
4 array:match => ["datetime", "UNIX", "ISO8601"]
5 hash:options => {
6     key1 => "value1",
7     key2 => "value2"
8 }

字段引用:

[field_name]

[geoip][location][0]

"the longitude is %{[geoip][location][0]}"

条件判断

1 判等:==, !=, <, >, <=, >=
2 正则:=~, !~
3 包含:in, not in
4 布尔:and, or, nand, xor
5 一元:!()

命令行参数:

1 执行标准输入输出 bin/logstash -e ‘‘
2 执行指定配置内容 bin/logstash -e ‘配置内容‘
3 执行配置文件 bin/logstash -f bin/logstash.conf
4 读取confs下所有配置文件,拼接成大的配置文件再执行 bin/logstash -f /bin/confs/
5 测试配置文件 bin/logstash -f bin/logstash.conf --configtest
6 输出错误到日志 bin/logstash -l bin/logstash/logs/logstash.log
7 其他略。

输入插件

1 标准输入

1 input {
2     stdin {
3         add_field => {"key" => "value"}
4         codec => "plain"
5         tags => ["add"]
6         type => "std"
7     }
8 }

type:标记事件类型

tags:在数据处理过程中,由具体的插件来添加和删除的。 ???

2 读取文件

1 input
2     file {
3         path => ["/var/log/*.log", "/var/log/message"]
4         type => "system"
5         start_position => "beginning"
6     }
7 }

start_position : logstash 从什么位置开始读取文件数据,默认是结束位置,也就是说 logstash 进程会以类似 tail -F 的形式运行。如果你是要导入原有数据,把这个设定改成 "beginning",logstash 进程就从头开始读取,有点类似 cat,但是读到最后一行不会终止,而是继续变成 tail -F

3 读取网络数据

4 生成测试数据

1 input {
2     generator {
3         count => 10000000
4         message => ‘{"key1":"value1","key2":[1,2],"key3":{"subkey1":"subvalue1"}}‘
5         codec => json
6     }
7 }

ELK的性能如何?

ELK并不是一个软件,而是一个并不耦合的套件,所以需要分开讨论性能。

Logstash:logstash本身并不维护队列,所以要熟悉测试方法。另外,logstash给自己的线程都设置了单独的名称,可以top -H查看每个线程的负载情况。

es:es是一个分布式系统,所以需要关注在确定的单机处理能力前提下,性能能否做到线性拓展。另外,有效的利用mapping API很重要。

kibana:只是一个单页web应用,加载慢基本是由于es的请求响应不够快造成。

5 读取syslog数据

6 读取redis数据

作为单独一篇。

7读取collectd数据

3 编码插件

3.1 json编码

1 input {
2     file {
3         path => "/var/log/nginx/access.log_json""
4         codec => "json"
5     }
6 }

3.2 合并多行数据

1 input {
2     stdin {
3         codec => multiline {
4             pattern => "^\["
5             negate => true
6             what => "previous"
7         }
8     }
9 }

这个正则还可以用 grok 表达式,稍后你就会学习这方面的内容。

4 过滤器插件

4.1 grok

1 input {stdin{}}
2 filter {
3     grok {
4         match => {
5             "message" => "\s+(?<request_time>\d+(?:\.\d+)?)\s+"
6         }
7     }
8 }
9 output {stdout{}}

官方提供的预定义 grok 表达式见:https://github.com/logstash/logstash/tree/v1.4.2/patterns

filter {
    grok {
        patterns_dir => "/path/to/your/own/patterns"
        match => {
            "message" => "%{SYSLOGBASE} %{DATA:message}"
        }
        overwrite => ["message"]
    }
}
时间: 2024-10-26 17:15:09

2017.8.1 logstash基础语法学习的相关文章

【JavaScript】02.基础语法学习

[JavaScript]02.基础语法学习 引言: 老农认为(老农是我对自己的昵称),学习任何一门计算机程序语言都要先从它的语法知识开始.计算机程序语言由一堆预定义的字符和书写这些字符的规则组成.这些预定义的字符在语言里面叫做关键字或者保留字,书写这些字符的规则叫做语法. 计算机语言(Computer Lnguage),是指用于人与计算机之间通讯的语言.语言分为自然语言与人工语言两大类.自然语言是人类在自身发展的过程中形成的语言,是人与人之间传递信息的媒介.人工语言指的是人们为了某种目的而自行设

Swift基础语法学习总结(转)

Swift基础语法学习总结 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. 1.3) swift在语句后面加分号与否都是正确的,但是swift偏好的风格是不在结尾处加分号的.如果有多个语句,必须用分号隔开. 1.4) 在一个数字中庸下划线(_)会被忽视,方便认出大数值的的数字,也可以在前面补零. 1.5) swift不允许在不同种类型间做加减乘

Swift基础语法学习总结(一)

1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. 1.3) swift在语句后面加分号与否都是正确的,但是swift偏好的风格是不在结尾处加分号的.如果有多个语句,必须用分号隔开. 1.4) 在一个数字中庸下划线(_)会被忽视,方便认出大数值的的数字,也可以在前面补零. 1.5) swift不允许在不同种类型间做加减乘除,要先做类型转换或运算符重载

Swift基础语法学习总结一

1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. 1.3) swift在语句后面加分号与否都是正确的,但是swift偏好的风格是不在结尾处加分号的.如果有多个语句,必须用分号隔开. 1.4) 在一个数字中庸下划线(_)会被忽视,方便认出大数值的的数字,也可以在前面补零. 1.5) swift不允许在不同种类型间做加减乘除,要先做类型转换或运算符重载

Swift基础语法学习总结

1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. 1.3) swift在语句后面加分号与否都是正确的,但是swift偏好的风格是不在结尾处加分号的.如果有多个语句,必须用分号隔开. 1.4) 在一个数字中庸下划线(_)会被忽视,方便认出大数值的的数字,也可以在前面补零. 1.5) swift不允许在不同种类型间做加减乘除,要先做类型转换或运算符重

关于Html基础语法学习

晚上做完初赛,好像有点颓,就来学了学html,毕竟博客里面会用到嘛. 首先贴出我所学习的教程 http://www.w3school.com.cn/html/index.asp 我觉得吧,可能以我的记忆也就只能记下这一小部分东西了,不过也算够了吧 ***下面切入正题 首先html是用来搭建站点的语言(这是我的理解qaq) 然后是一些简单的语法1 <html> <body> <p>Hello world!</p> </body> </html

python基础语法学习常见小问题

说明:我是最近觉得python在完成很多工作中方便使用而且功能强大,想突击学习一下.用的是廖雪峰老师的教程,学习python3.X.这里是廖雪峰老师的网站链接: http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 本人用的windows学习python: 一.常见小的细节: 1.python中 elif 是else if的缩写: 2.python初始使用有交互式的,就是有>>>

Swift基础语法学习总结二

1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参数需要指明类型,而如果没有返回值可以不写->(),返回值只需要写返回类型,如果写了返回名称,可以在函数调用后的值用点语法访问 1.3 在参数名称前可以加上外部参数名,调用的时候就可以带上它了,如果外部参数名和内部参数名相同则可以直接在内部参数名前加#即可 1.4 如果跟参数设置一个默认值,则swift会自动加上外部参数名,如果不想

Java基础语法学习(1)switch...case

今天有幸被召回母校给即将毕业的学弟学妹们讲我这两年的工作史,看了下母校没啥特别的变化,就是寝室都安了空调,学妹们都非常漂亮而已..好了不扯蛋了,说下今天的主题吧.这些天我在深度定制语法高亮功能的同时发现了博客园提供的一些有意思的函数,甚至有几个博客园都没用到,我也不知道怎么才能触发那些功能..打开这个js就可以看到很多好用的东西了,虽然写的不怎么样,但是至少有这些功能. ps: 推荐安装一个代码格式化的插件,否则一坨看着蛋疼.比如第一个就是 log,方便调试. www.qidian.com/Bo