数据类型

 bool:debug => true
string:host => "hostname"
int:port => 514
array:match => ["datetime", "UNIX", "ISO8601"]
hash:options => {
key1 => "value1",
key2 => "value2"
}

字段引用:

[field_name]

[geoip][location][0]

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

条件判断

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

命令行参数:

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 标准输入

 input {
stdin {
add_field => {"key" => "value"}
codec => "plain"
tags => ["add"]
type => "std"
}
}

type:标记事件类型

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

2 读取文件

 input
file {
path => ["/var/log/*.log", "/var/log/message"]
type => "system"
start_position => "beginning"
}
}

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

3 读取网络数据

4 生成测试数据

 input {
generator {
count => 10000000
message => '{"key1":"value1","key2":[1,2],"key3":{"subkey1":"subvalue1"}}'
codec => json
}
}

ELK的性能如何?

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

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

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

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

5 读取syslog数据

6 读取redis数据

作为单独一篇。

7读取collectd数据

3 编码插件

3.1 json编码

 input {
file {
path => "/var/log/nginx/access.log_json""
codec => "json"
}
}

3.2 合并多行数据

 input {
stdin {
codec => multiline {
pattern => "^\["
negate => true
what => "previous"
}
}
}

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

4 过滤器插件

4.1 grok

 input {stdin{}}
filter {
grok {
match => {
"message" => "\s+(?<request_time>\d+(?:\.\d+)?)\s+"
}
}
}
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"]
}
}

最新文章

  1. 在WebPart中获取Office 365中的未读邮件数
  2. 简明 Git 命令速查表
  3. Merge Into
  4. 关于JavaScript中apply与call的用法意义及区别
  5. Java-人民币转成大写
  6. 错误解决error while loading shared libraries: libXXX.so.X: cannot open shared object file: No such file
  7. 使用 JUnit 进行单元测试 - 教程
  8. 可获取公网IP的网址
  9. 如何让虚拟机识别插入的USB闪存驱动器
  10. [Python]获取子线程异常信息
  11. C# Process.Start()
  12. Python给照片换底色(蓝底换红底)
  13. English trip M1 - AC11 I Dreamed a Dream? 我做了一个梦 Teacher:Lamb
  14. Ubuntu下设置开机后自动运行命令
  15. C++ MFC Tab Control控件的详细使用
  16. php中如何解决显示数据库中的内容乱码
  17. String真的是不可变的吗?
  18. java执行Shell命令
  19. Linux下常用的ftp操作命令
  20. virtualbox+vagrant学习-2(command cli)-3-vagrant destroy命令

热门文章

  1. python的pip安装
  2. powerdesign相关
  3. hashCode()方法和equals方法的重要性。
  4. bzoj1266 [AHOI2006]上学路线route floyd+最小割
  5. Http错误大全
  6. WPF - 样式 (转)
  7. 51nod 1583 犯罪计划——矩阵乘法优化dp
  8. 结构型设计模式之适配器模式(Adapter)
  9. 行为型设计模式之备忘录模式(Memento)
  10. YYH的王国(NOIP模拟赛Round 6)