曾勇-实时运维数据分析


实时运维 数据分析 ELK介绍及Elascsearch调优 Medcl,2014-10-17 关于我 •  曾勇/Medcl •  m@medcl.net •  hp://log.medcl.net •  hp://github.com/medcl •  hp://t.sina.com/medcl 出错了 App又崩了 网站打不开了 客户找上门 客户: 昨天11点12分报错了,什么情况? 我: 不会吧?不能吧。 你再试试,我看看报错没有。。。 客户: 擦! 之前的做法 •  登陆服务器: –  ssh ops@10.10.1.101 •  怎么看日志: –  head、tail、grep、wc、awk、count、cut等 •  日志在哪里: –  Nginx –  Tomcat –  MySQL –  Redis –  PHP –  等等 手忙脚乱~ 搞不定了 单个日志文件上百GB! 先别死啊,还100 台服务器没查呢!! 实时查看和分析 清晰直观可视化 简单,小白也能使用 统计结果 最好不用等到明天 那接下来就要问了,开源的 日志分析处理哪家强? The ELK-Stack Elascsearch Logstash Kibana 大纲 •  ELK Introducon •  ELK@医树网 •  Elascsearch使用经验点滴 •  FAQ 基于Hadoop? •  比较适合结构化数据 •  架构复杂,运维成本高 •  非实时,适合离线任务 •  分析处理需专业人士 The ELK-Stack Elascsearch –  帮你搞定海量日志数据 •  海量存储 •  实时检索 •  实时 分析 Logstash Kibana Elascsearch介绍 •  Full Text Search & Analysis Engine •  Lucene Based,Wrien in Java •  “Distributed, (Near) Real Time, Search Engine” •  RESTful,JSON,HTTP,Easy To Debug •  Free Schema(Dynamic Mapping) •  MulTenant(Share One Instance) •  Scalable,From One Node To One Thousand Node •  High Availability •  Rich Search Features •  Good Extensibility(via Plugin) •  Open Source(Apache 2.0) •  Created by Shay Bannon(Kimchy) 我与elascsearch •  2010年接触elascsearch •  elascsearch第一个.net客户端:ElascSearch.Net •  elascsearch中文社区发起人 •  写过一堆elascsearch插件 –  elascsearch-analysis-ik –  elascsearch-analysis-mmseg –  elascsearch-analysis-string2int –  elascsearch-analysis-stconvert –  elascsearch-river-email –  elascsearch-analysis-pinyin –  elascsearch-paralupdate –  elascsearch-filter-redis –  elascsearch-carrot2 –  elascsearch-analysis-paoding The ELK-Stack Elascsearch Logstash – 帮你搞定多样 化日志 Kibana Logstash Logstash •  什么是logstash? – 收集 – 处理 – 转发 – 解析 •  Logstash帮您解决 – 结构化日志内容 – 标准化日志时间 Logstash基本概念 •  Inputs –  处理日志源,产生日志event –  一条event日志,包含多个field •  Codecs –  识别不同的日志格式:json,csv等等 •  Filters –  处理日志 –  抽取、添加、转换、移除field •  Outputs –  输出日志 Event Pipeline 插件丰富 •  hp://logstash.net/docs/1.4.2/ 配置文件 input { ... } filter { ... } output { ... } [root@medtree logstash-1.4.2]# ls bin lib LICENSE locales logstash.conf paerns README.md spec vendor [root@medtree logstash-1.4.2]# vi logstash.conf The ELK-Stack Elascsearch Logstash Kibana 搞定前端展现 •  酷炫图表 •  分析统计 Kibana •  静态文件,Html5 + JS + CSS •  部署简单 •  无需编写代码 •  展现丰富 •  定制灵活 •  流式数据实时分析 •  开源免费 Kibana ELK@医树 网 Nginx MySQL Play! Redis RPC Service Elascsearch ElascsearchConsumer /Indexer Other Services Neo4J MedTree Stack 截图 Tips •  Logstash处 理速度慢 – 日志直接组装JSON或CSV – 自写程序多线程处理Kaa队列 •  WriteConsistencyLevel.ONE •  Async Replica •  Bulk Size •  Redis内存撑爆 – 换用Kaa,速度快,内存占用少 •  定时 关闭 /删 除旧索引:Curator 提前定义mapping •  Mapping –  压缩_source •  compress:true –  禁用all •  include_in_all:false –  自定义分词 •  Standard -> ik –  内容去重 •  field.raw –  优先数字 •  “bytes”=>bytes 减少索引体积 提高查询速度 安全 需求: 1.云服务器 2.公司内需要访问 3.安全 Nginx allow ip 经验分享 诡异的HeapSize OOM啦! 没多少数据 内存配置理论足够 不变的文件打开数 •  报文件数太多异常 •  ES显示最大文件打开数是4096 •  可是: –  /etc/security/limits.conf 已修改配置 –  /etc/rc.local也添加ulimited设置命令 •  通过saltstack运行ES服务 –  文件打开数依然4096 •  FIX: –  取消服务自启动方式 –  在rc.local末尾启动saltstack和elascsearch FieldCache •  FieldCache – 排序 – Facet – Aggregaons •  重建Cache代价! – indices.fielddata.type: so – indices.fielddata.cache.size: 50% – indices.fielddata.cache.expire: 12h 几十秒 -> 几十毫秒 瞎调副本 •  恩,副本越多越好,加机器自动分配 •  一台机器,副本调整为2,结果插入失败! •  副本为2 = 3份数据 •  acon.write_consistency:quorum •  必须半数以上写入成功! •  (1 < 1.5 )! 错误的日期格式 •  Mappiing –  yyyy-MM-dd hh:mm:ss •  数据: –  2014-10-22 10:11:11 –  2014-10-22 22:11:11 •  大量报错插入异常 •  索引速度急剧下降 24小时制:yyyy-MM-dd HH:mm:ss Sort出错 同一Index下不同Type 字段名称一样 字段数据类型不一样 排序报错! 避免不同type相同字段 无法避免,则确保字段数据类型一致 节点丢了 •  节点丢失 •  数据未分配 •  节点GC –  节点频繁失联 –  数据频繁reallocaon –  不完整shard,造成数据无法allocaon •  MasterGC –  频繁选举,连接失败,meout 调大参数: discovery.zen.fd.* discovery.zen.publish_meout discovery.zen.ping_meout discovery.zen.join_meout 一分为二 •  多个集群 -> 脑裂 -> 数据不一致 ->重建 •  不自动选举,使用独立Master – discovery.zen.ping.mulcast.enabled: false – discovery.zen.ping.unicast.hosts: ["master1", "master2”,”master3”] – discovery.zen.minimum_master_nodes: 2 分区问题 •  冷热分区 –  16ssd + 4sata •  1.关系均等,随机分配到任意分区 –  "index.roung.allocaon.include.tag" : ”hot” –  "index.roung.allocaon.exclude.tag" : ”cold” •  2.副本 –  如果要在ssd上产生2份,sata也需要产生2份 •  3.sata所在节点上部署Indexer服务,连接本机ES –  只有一份数据,都在ssd分区上面 –  访问奇慢 –  Indexer部署到ssd节点就好了 集群重启恢复慢 •  10TB数据恢复需要1天!! •  ES默认参数限制! •  cluster.routing.allocation.node_concurrent_recoveries:4 •  cluster.routing.allocation.node_initial_primaries_recoveries:30 •  indices.recovery.concurrent_streams: 30 •  indices.recovery.max_bytes_per_sec:50gb –  默认才40mb •  gateway.recover_after_nodes:20 多实例 •  服务器误启动多个节点! •  集群重新平衡 •  硬盘 空间 告急! •  单个服务器压力巨大。。。 node.max_local_storage_nodes: 1 其它常见问题 •  找不到分词器 – elascsearch.yml格式 •  查询失败,匹配不到结果 – Term vs match •  词库自定义不生效 – 词典UTF8编码格式 Memory ps •  ulimit -l unlimited •  bootstrap.mlockall: true •  ES_HEAP_SIZE –  MIN=MAX –  不超过50% •  FilterCache –  indices.cache.filter.terms.size •  FieldCache –  index.fielddata.cache: soft –  index.cache.field.type: soft –  index.cache.field.max_size: 50000 –  index.cache.field.expire: 10m 分片merge Tips •  正常merge – 调大 •  index.merge.policy.max_merged_segment: 50gb •  index.merge.policy.floor_segment:100mb •  index.merge.policy.max_merge_at_once:20 •  index.merge.policy.segments_per_er:20 •  显式merge – 注意:避免分片太大,无法移动 Refresh index.engine.robin.refresh_interval vs index.refresh_interval SSD ps •  参数调整 –  index.store.throttle.type: none –  indices.store.throttle.type:none –  indices.memory.index_buffer_size: 30% –  index.translog.flush_threshold_size:5gb –  index.translog.flush_threshold_ops: 500000 –  index.gateway.local.sync:30s –  index.merge.scheduler.max_thread_count: 3 –  index.merge.scheduler.max_merge_count: 6 •  RAID0 •  mmap索引文件格式 –  index.store.type: mmapfs (共享系统分页缓存) •  关闭文件系统ATIME GC ps •  使用最新OracleJDK,1.7+ •  ES_HEAP_SIZE •  ES_HEAP_NEWSIZE •  禁用jdk7默认Garbage-First(G1) •  CMS garbage collector – 增大:CMSInitiatingOccupancyFraction – 降小:cache expire me – 调小:index.merge.policy.segments_per_er 够用就行! 优化Tips •  监控所有指标 •  单节点 -> 集群 •  单节点性能最优 – OS、JVM、ES •  单shard容量最优 – 结合具体业务数据 + 查询场景 – 测试Index、Search •  每次只调整一个参数 欢迎加入医树网 欢 迎加入elasticsearch中文社区,一起学习 交流。 Wiki: http://wiki.elasticsearch.cn 论坛 : http://bbs.elasticsearch.cn QQ群1:190605846 QQ群2:211682609 QQ群3:258143901 THANK YOU!
还剩59页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享pdf获得金币 ] 2 人已下载

下载pdf

pdf贡献者

dy72

贡献于2015-08-25

下载需要 5 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf