logstash介绍

2019-08-28 10:06:43       xhs
也做数据分析

kibana可视化的分析平台,node.js

图标
dashboard 面板

beats  Golang


收集服务器信息
日志,监控指标,行为安全日志,网卡流量
match beats

多种beats 

packet beats

1.logstash
ETL服务端,支持数据源很多

四个产品合称Elastic Stack

2.x-pack
3.logstash 
千万下载量
The Dataflow Engine

开源的流式ETL引擎
自适应缓冲,水平伸缩性和弹性,有很大的并发了,峰值,消峰平
内置数据源,也可扩展数据源
插件丰富,三大部分,输入,处理,输出

支持的数据源,
日志文件,指标信息(服务器配置信息),数据库,redis, mongodb, mq, kafka,

4.分布式收集
logstash 集中数据,加工 -> elasticsearch
web应用,物联网,传感器,


5.管道结构,input
文件,告知路径,
不同格式,json,csv, 编码, Codes 设置解码器
TCP
UDP
HTTP

6.filter
Structure 结构化, nginx log ,访问时间,POST/GET, IP, agent;
字段独立,过滤,检索,比通过关键字检索更有效

Transform
tomcat和nginx时间格式可能不一样,需要存在一样,则标准化
Normalize
GeoIP Enrichment
IP解析为地理信息,做热点图,分析就很直观,用户分布图
External Lookup
CIDR & DNS Lookup
更结构化,表达性
7.Outputs
输出,不同源,
编码,json, csv

8.Resilient Data Transport
persistent queue
可靠性
持久化磁盘队列
At-least-once 交付保障和基于持久化队列的自适应缓冲
将错误事件发送到死信队列(dead letter queue)
用于离线处理和重放
9.动态管道
多条管道,数据流程
apache pipeline 
jdbc pipeline 
netflow pipeline 
互不影响

动态加管道,不需要重启

10.基本配置
input {
beats {
port => 5043
}
}

filter {
//转换单元, message字段转为小写
mutate { lowercase => {“message”} }  
}

output {
elasticsearch {}
}

11.事件
主要数据单元就是事件,文档类型,和JSON格式很像,支持任意层次结构和类型

{
“@timestamp” => ,
“message” => “bar”,
“some_” => {
“has_complex_values” => 123
}
}

12.执行模型
input -> queue(磁盘或内存) -> worker

13.管道可伸缩
支持多个input,多个worker,一个管道

14.多个管道
一个logstash进程,多个管道,处理不同的数据流
处理不同的业务逻辑
15.队列
memory queue
内存,快,
persistent queue
不丢失
16.至少一次交付
不是所有插件都支持,大部分支持,需要确认
非正常关闭的情况下,可能会运行worker不止一次,产生重复消息
幂等操作,唯一的标识,永远写相同的ID,
17.死信队列
第二次尝试还是失败
这些事件可被丢弃或者记录日志,或者发到死信队列
DLQ可以晚点再次重放
手动去做
18.DEMO
https://www.elastic.co/guide/en/logstash/current/index.html

cd logstash-7.1.1
bin/logstash -e 'input { stdin { } } output { stdout {} }'


https://github.com/elastic/examples/tree/master/Common%20Data%20Formats/nginx_logs


19.filter
上到下按顺序处理
grok 正则匹配

20. 
logstash
9600 可以监控

输出,stdout {  codec => dots {}}  输出 点点点
GET _cat/indices

_search

geoip IP算出坐标

模块的概念

https://www.elastic.co/guide/en/logstash/current/logstash-modules.html

Codecs 序列化


Line
Multiline 多行表示一个消息  Java调用栈
json_lines
json

解析/抽取

grok 
date


disset 
更高效的,不用正则,更快
kv {
	
}


mutate 数据类型转换,改名字,

split 

drop 丢弃消息

if/else
 =~ 

查找
geoip {
	fields => “my_geoip_field”
}
dns

useragent

translate {
	dictionary => [
	“100”, “Continue”,

]
elasticsearch
jdbc

jdbc_satic {}

}
21.监控和管理
Monitoring UI
pipeline viewer

心脏图标

https://www.elastic.co/guide/en/logstash/current/configuring-logstash.html

xpack.monitoring.elasticsearch.hosts: ["http://es-prod-node-1:9200", "http://es-prod-node-2:9200"] 
22.
  



data/registry/filebeat/data.json


发表评论