《实时数据驱动的应用运维》由会员分享,可在线阅读,更多相关《实时数据驱动的应用运维(41页珍藏版)》请在金锄头文库上搜索。
1、实时数据驱动的应用运维饶琛琳我是?给 CloudEx, C, RenRen, Sina 重启服务器;精通 echo/say/puts/console.log(“Hello World”);写过网站运维技术与实践;翻过Puppet 实战手册。运维是?开发是?“When I see . developers all I see is risk” Chuck Rossi, Facebook才不是为什么做不好运维数据不一致为什么做不好运维数据不一致数据不及时为什么做不好运维数据不一致数据不及时数据不清晰怎么做好运维数据不一致=Configuration Management数据不及时=Metric M
2、onitor/Dashboard数据不清晰=Log Process/Analysis/Search“Monitoring is the aggregation of health and performance data, events, and relationships delivered via an interface that provides an holistic view of a systems state to better understand and address failure scenarios.” Ryan Frantz Etsy数据怎么来不记你不打算用的日志;
3、次数是最感兴趣的;在第一条的前提下尽可能收集所有日志;没有7*24值班人员的话,IDS也就用不着实时。Laws of Marcus J. Ranum大数据怎么来不记你不打算用的日志;次数是最感兴趣的;在第一条的前提下尽可能收集所有日志;没有7*24值班人员的话,IDS也就用不着实时。Laws of Marcus J. Ranum大数据是?Volume(越来越大)Velocity(越来越快)Variety(越来越复杂)Laney 2001.02有多快?有多复杂?应该啥样?应该啥样?最后是这样最后是这样!zabbix 的 screen 字段截图最后是这样这背后Rsyslog * 50Logstas
4、h * 10ES masternode * 3ES datanode * 28=单日 70 亿条,4TB 索引Zabbix * 3=500k 监控项,60s 间隔以及在 400+ Nginx/PHP 机器上通过 Rsyslog 直接调用的 process2zbx 脚本这背后Elasticsearch 简介基于 Lucene 构建的,提供 RESTful 接口的,分布式,实时全文搜索引擎。http:/www.elastic.co架构层面:cluster node indices shard (primary/replica) segment 数据层面:index type document fi
5、eld (_source/_all/analyzer) Master 只是维护 cluster state,数据交互可以直接发给任意节点Kibana 简介基于 Angular.JS 框架写的 Elasticsearch 数据展示前端。开发者是重构狂:V1- PHPV2- RubyV3- Angular.js/jQuery.flot.jsV4beta- Angular.js/D3.js + JRubyV4- Angular.js/D3.js + Node.JS重复一次:count 是最重要的。推荐阅读24Elasticsearch 聚合示例curl 127.0.0.1:9200/_all/_se
6、arch?pretty=1 -d query : match_all : , aggs : range1 : range : field : resp_ms, ranges : to : 100 , from : 101, to : 500 , from : 500 ES 自定义脚本config/scripts/regex.groovy 如下:matcher = ( docfieldname.value = /$pattern/ )if (matcher.matches() matcher01需要下发到每台 datanode 上,ES 自动探测新脚本并加载。ES 自定义脚本运用curl 127
7、.0.0.1:9200/logstash-2014.11.27/_search?pretty&size=0 -d aggs : ip_class : terms : script : regex, params : fieldname: client_ip.raw, pattern: (?:d1,3.?)3).d1,3$ ES 动态脚本示例 aggs: 2: terms: script: v=dochost.value;if(v!=null)v.split(/./)2, lang: groovy, size: 5, order: _count: desc , valueType: string
8、 ES 动态脚本示例ES 嵌套聚合示例aggs: “1: terms: field: slow.1“ , aggs: “2: terms: field: slow.2 , aggs: “3: terms: field: slow.3, aggs: “4: terms: field: slow.4“ 场景示例(crash func)场景示例(error trend)场景示例(SLA)场景示例(user track)还可能(distribution testing)ES 与 Zabbixrm -f /tmp/es2zbx.restime=date +%Y.%m.%dfor url in cat /
9、path/to/url.list;do key=echo $url | sed s!/!-!g curl -o /tmp/$key.res -s -XGET http:/esdomain:9200/logstash-mweibo-nginx-$time/_search?size=0 -d query: filtered: filter: bool: must: range: timestamp: from: now-5m, to: now , term: urlpath: $url , aggs: req_avg: avg: field: request_time“ count=cat /tm
10、p/$key.res | grep -oP hits:total:d+ | awk -F: print $NF avg=cat /tmp/$key.res | grep -oP value:d+.d+ | awk -F: print $NF -z $avg & avg=0 echo “zabbixserver hits$key $count /tmp/es2zbx.res echo “zabbixserver mean$key $avg /tmp/es2zbx.resdonezabbix_sender -i /tmp/es2zbx.res -z zabbixserverES 与 ZabbixE
11、S 常见误用场景长期可靠的数据存储 (vs Hadoop/Cassandra) 是分布式系统,P2P 线性扩展,但索引分词是有容量膨胀的流式计算(vs Storm/Spark streaming)是近实时索引,ms 级响应,但索引分词是有额外计算消耗的时序数值存储(vs Graphite/OpenTSDB)是提供聚合统计,但是好浪费啊ES 适于 locate documents by keyword and perform quickly faceted drilldown。推荐阅读Elasticsearch 服务区开发(第2版)Zabbix 监控系统深度实践日志管理与分析权威指南数据之魅:基于开源工具的数据分析网站运维:保持数据实时的秘笈Web 容量规划的艺术大规模 Web 服务开发技术https:/