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