也做数据分析
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