Storm平台监控方案[ 上 ]

监控的初衷

       社区版的storm除去storm UI可以提供一点信息外,实际上任务完全运行在一个黑盒子里,不仅不知道任务的运行情况,即使任务有问题时也无法及时通知用户来处理,事后排查问题又非常困难。为了解决这些问题,需要把任务运行的情况掌握起来。

 

监控的维度

任务维度监控 

  • 组件处理耗时,单位:毫秒 
  • 任务组件tps 
  • worker处理耗时,单位:毫秒 
  • worker tps 
  • worker.capacity【(number executed * average execute latency) / measurement time】

worker维度监控

  • 1分钟内parnew gc 平均耗时,单位:毫秒 
  • 1分钟内concurrentmarksweep gc 平均耗时单位:毫秒 
  • 1分钟内parnew gc次数 
  • 1分钟内concurrentmarksweep gc次数 
  • 老年代内存使用比率 
  • gc吞吐,计算公式:(runTime - totalGCTime) / runTime 
  • worker线程活跃数 
  • worker日志文件个数 
  • worker线程峰值 
  • worker文件大小 
  • worker运行时长,单位:天 
  • worker进程使用的文件句柄数 
  • worker进程使用的cpu
  • worker进程使用的swap
  • worker进程user使用的cpu
  • worker进程system使用的cpu 
  • worker内组件TPS监控

自助定问题

  • jstack定时生成并提供下载
  • 手动jmap堆信息并提供下载

管理员维度

  •  集群tps
  •  集群emit量   
  • 主机tps   
  • 主机emit量

灵活告警

  • 针对用户的告警
  • 邮件+短信

常见问题汇总

  • 内存泄漏
  • 线程泄漏
  • 连接泄漏
  • 任务并发设置不合理,worker不均衡
  • 不合理的日志输出
  • spout阻塞导致ticktuple停止
  • 不合理的slot数导致cpu都用来gc
  • 内核问题导致进程夯住
  • 网络连接随机端口导致worker端口被占
  • woker进程死锁
  • 下游系统慢导致反压队列爆满而OOM

 监控数据效果图

 

猜你喜欢

转载自woodding2008.iteye.com/blog/2326358
今日推荐