数据采集
Worker JVM信息通过Jmx的方式获取:GC、线程、老年代内存等
storm.yaml添加JMX的配置如下:
nimbus.childopts: "-Xmx1024m -Djava.rmi.server.hostname=192.168.1.1 -Dcom.sun.management.jmxremote.port=9801 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false" supervisor.childopts: "-Xmx2048m -Djava.rmi.server.hostname=192.168.1.1 -Dcom.sun.management.jmxremote.port=9802 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
Worker 进程使用资源通过脚本获取:cpu、fd、日志等
%ID%取的时每个work的进程号,因为一个节点上可以有多个work,所以防止端口号重复导致启动失败,所以用动态代替
worker.childopts: "-Xmx2048m -Xms2048m -Xmn500m -XX:PermSize=256M -XX:MaxPermSize=256M -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSParallelRemarkEnabled -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSConcurrentMTEnabled -Djava.net.preferIPv4Stack=true -Xloggc:/home/master/platform/apache-storm-0.9.4/logs/gc_%ID%.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1%ID%"
任务相关信息通过NimbusClient来获取,并做二次加工
定时脚本抓取Jstack
触发开关触发Jmap,生成堆文件