Logstash 基础知识整理

相关名词:
Pipeline:

input-filter-output的三阶段处理流程
队列管理
插件生命周期管理
Logstash Event:

内部流转的数据表现形式
原始数据在input被转换为Event,在output event被转换为目标格式数据
在配置文件中可以对Event中的属性进行增删改查
Logstash架构图:


Batcher负责批量的从queue中取数据

Queue分类:

  • In Memory : 无法处理进程Crash、机器宕机等情况,会导致数据丢失
  • Persistent Queue In Disk:可处理进程Crash等情况,保证数据不丢失,保证数据至少消费一次,充当缓冲区,可以替代kafka等消息队列的作用

性能分析:


持久队列的基本配置:

queue.type:persisted #默认是memory
queue.max_bytes:4gb #队列存储最大数据量

  

线程:

相关配置:

pipeline.worksers | -w
# pipeline线程数,即filter_output的处理线程数,默认是cpu核数

pipeline.batch.size | -b
#Batcher一次批量获取的待处理文档数,默认是125,可以根据输出进行调整,越大会占用越多的heap空间,可以通过jvm.options调整

pipeline.batch.delay | -u
#Batcher等待的时长,单位为ms

  

Logstash配置文件:
logstash设置相关的配置文件(在conf文件夹中,setting files)

  • logstash.yml:logstash相关配置,比如node.name、path.data、pipeline.workers、queue.type等,这其中的配置可以被命令行参数中的相关参数覆盖
  • jvm.options:修改jvm的相关参数,比如修改heap size等

pipeline配置文件:定义数据处理流程的文件,以.conf结尾

logstash.yml配置项:

node.name: 节点名称,便于识别
path.data: 持久化存储数据的文件夹,默认是logstash home目录下的data
path.config: 设定pipeline配置文件的目录(如果指定文件夹,会默认把文件夹下的所有.conf文件按照字母顺序拼接为一个文件)
path.log: 设定pipeline日志文件的目录
pipeline.workers: 设定pipeline的线程数(filter+output),优化的常用项
pipeline.batch.size/delay: 设定批量处理数据的数据和延迟
queue.type: 设定队列类型,默认是memory
queue.max_bytes: 队列总容量,默认是1g

logstash命令行配置项:

--node.name
-f --path.config #pipeline路径,可以是文件或者文件夹
--path.settings #logstash配置文件夹路径,其中要包含logstash.yml
-e --config.string #指明pipeline内容,多用于测试使用
-w --pipeline.workers
-b --pipeline.batch.size
--path.data
--debug
-t --config.test_and_exit
建议:线上环境推荐采用配置文件的方式来设定logstash的相关配置,这样可以减少犯错的机会,而且文件便于进行版本化管理;命令行形式多用来进行快速的配置测试、验证、检查等

logstash多实例运行方式:

bin/logstash --path.settings instance1
bin/logstash --path.settings instance2
不同instance中修改logstash.yml,自定义path.data,确保其不相同即可

pipeline配置简介:

Pipeline用于配置input、filter和output插件,框架如下所示:

input {
...
}
filter {
...
}
output {
...
}

 

Pipeline配置语法:

主要有如下的数值类型:
布尔类型Boolean:

IDFailed => true

数值类型Number:

port => 33

字符创类型String:

name => "Hello world"

数组Array/List:

users => [{id => 1,name => bod},{id => 2,name => jane}]
path => ["/var/log/messages","/var/log/*.log"]

哈希类型Hash:

match => {
"field1" => "value1"
"field2" => "value2"
}


在配置中可以引用Logstash Event的属性(字段),主要有如下两种方式:

  • 直接引用字段值
使用[]即可,嵌套字段写多层[]即可
if [path] =~ "access"
if [ua][os] =~ "windows"
  • 在字符串中以sprintf方式引用
使用%{}来实现
req => "request is %{request}"
us => "ua is %{[ua][os]}"

支持条件判断语法,从而扩展了配置的多样性,主要格式如下:

if EXPRESSION{
...
}else if EXPRESSION{
...
}else{
...
}


表达式主要包含如下操作符:

-操作符
比较 ==、!=、<、>、<=、>=
正则是否匹配 =~、!~
包含(字符串或者数组) in、not in
布尔操作符 and、or、nand、xor、!
分组操作符 ()

 


logstash监控运维:

API
x-pack
API:Logstash提供了丰富的api来查看Logstash的当前状态

http://192.168.20.101:9600
http://192.168.20.101:9600/_node
http://192.168.20.101:9600/_node/stats
http://192.168.20.101:9600/_node/hot_threads

# curl http://192.168.20.101:9600/_node/stats?pretty


原文:https://blog.csdn.net/wfs1994/article/details/80862225

posted on 2019-04-08 14:18  person1  阅读(1212)  评论(0编辑  收藏  举报

导航