设为首页 收藏本站
查看: 1511|回复: 0

[经验分享] 结合Ansible技术监控Storm集群

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-26 10:14:39 | 显示全部楼层 |阅读模式
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://sofar.blog.iyunv.com/353572/15798971、我的hosts配置
# vim /etc/hosts
123456789101112192.168.1.100  storm_zk1192.168.1.101  storm_zk2192.168.1.102  storm_zk3  192.168.1.103  storm_nimbus  192.168.1.104  storm_supervisor1192.168.1.105  storm_supervisor2192.168.1.106  storm_supervisor3192.168.1.107  storm_supervisor4192.168.1.108  storm_supervisor5192.168.1.109  storm_supervisor62、我的storm配置
# vim /usr/local/storm/conf/storm.yaml
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970drpc.servers:  - "storm_supervisor1"  - "storm_supervisor2"  - "storm_supervisor3"   storm.zookeeper.servers:  - "storm_zk1"  - "storm_zk2"  - "storm_zk3"   storm.local.dir: "/data/storm/workdir"  nimbus.host: "storm_nimbus"nimbus.thrift.port: 6627nimbus.thrift.max_buffer_size: 1048576nimbus.childopts: "-Xmx1024m"nimbus.task.timeout.secs: 30nimbus.supervisor.timeout.secs: 60nimbus.monitor.freq.secs: 10nimbus.cleanup.inbox.freq.secs: 600nimbus.inbox.jar.expiration.secs: 3600nimbus.task.launch.secs: 240nimbus.reassign: truenimbus.file.copy.expiration.secs: 600nimbus.topology.validator: "backtype.storm.nimbus.DefaultTopologyValidator"  storm.zookeeper.port: 2181storm.zookeeper.root: "/data/storm/zkinfo"storm.cluster.mode: "distributed"storm.local.mode.zmq: false  ui.port: 8080ui.childopts: "-Xmx768m"  supervisor.slots.ports:  - 6700  - 6701  - 6702  - 6703  - 6704  - 6705  - 6706  - 6707  - 6708  - 6709   supervisor.childopts: "-Xmx2048m"supervisor.worker.start.timeout.secs: 240supervisor.worker.timeout.secs: 30supervisor.monitor.frequency.secs: 3supervisor.heartbeat.frequency.secs: 5supervisor.enable: true  worker.childopts: "-Xmx4096m"topology.max.spout.pending: 5000  storm.zookeeper.session.timeout: 5000storm.zookeeper.connection.timeout: 3000storm.zookeeper.retry.times: 6storm.zookeeper.retry.interval: 2000storm.zookeeper.retry.intervalceiling.millis: 30000  storm.thrift.transport: "backtype.storm.security.auth.SimpleTransportPlugin"storm.messaging.transport: "backtype.storm.messaging.netty.Context"storm.messaging.netty.server_worker_threads: 50storm.messaging.netty.client_worker_threads: 50storm.messaging.netty.buffer_size: 20971520storm.messaging.netty.max_retries: 100storm.messaging.netty.max_wait_ms: 1000storm.messaging.netty.min_wait_ms: 1003、nimbus节点部署
# vim /data/scripts/monitor_status_for_storm.sh
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#!/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin  . /etc/profile  ## 监控页面地址参数MON_SRV_IPADDR=&quot;192.168.1.103&quot;MON_SRV_PORT=&quot;8080&quot;  ## 是否已正确扫描SCAN_FLAG=0  ## 工作基路径BASE_PATH=&quot;/data/scripts&quot;  ## 异常 storm Supervisor 主机地址列表FAIL_SUPERVISOR_LIST=&quot;${BASE_PATH}/fail_supervisor.txt&quot;  #---------------------------------------------------------------------------------------------------## 重启storm的nimbus服务function restart_storm_nimbus_server() {    [[ -n `ps aux | grep java | grep storm` ]] && kill -9 `ps aux | grep java | grep storm | awk '{print $2}'`    nohup /usr/local/storm/bin/storm nimbus >/dev/null 2>&1 &    nohup /usr/local/storm/bin/storm ui >/dev/null 2>&1 &          sleep 30}  #---------------------------------------------------------------------------------------------------## 1、检查监控页面是否正常【8080端口不通的情况】for ((i=0; i<3; i&#43;&#43;)); do    RETVAL=`/usr/bin/nmap -n -sS -p ${MON_SRV_PORT} ${MON_SRV_IPADDR} | grep open`    [[ -n &quot;${RETVAL}&quot; ]] && SCAN_FLAG=1;break || sleep 10done  [[ ${SCAN_FLAG} -ne 1 ]] && restart_storm_nimbus_server  #---------------------------------------------------------------------------------------------------## 2、将监控页面抓取内容与本地hosts内容进行差异比较,以确定是否存在异常的 storm supervisor 服务curl -s http://${MON_SRV_IPADDR}:${MON_SRV_PORT}/ | sed 's/<td>/<td>\n/g' | awk -F '<' '/^storm_/{print $1}' | awk '!/nimbus/{print}' | sort > ${BASE_PATH}/supervisor_list_from_page.txt  ## 如果获取的storm nimbus监控页面数据为空,代表storm nimbus服务存在异常[[ -z `sed '/^$/d' ${BASE_PATH}/supervisor_list_from_page.txt` ]] && restart_storm_nimbus_server  sort -nr ${BASE_PATH}/supervisor_list_from_page.txt ${BASE_PATH}/supervisor_list.txt | uniq -u > ${BASE_PATH}/supervisor_list_for_failed.txt[[ -z `sed '/^$/d' ${BASE_PATH}/supervisor_list_for_failed.txt` ]] && rm -f ${BASE_PATH}/supervisor_list_for_failed.txt && exit 0  #---------------------------------------------------------------------------------------------------## 3、获得异常的 storm supervisor 服务的IP地址列表echo &quot;[fail_supervisor]&quot; >> ${FAIL_SUPERVISOR_LIST}  for SUPERVISOR_NAMEADDR in `cat ${BASE_PATH}/supervisor_list_for_failed.txt`do    TEMP_IPADDR=`grep -w ${SUPERVISOR_NAMEADDR} /etc/hosts | grep -v '#' | awk '{print $1}' | tail -1`    echo &quot;${TEMP_IPADDR}&quot; >> ${FAIL_SUPERVISOR_LIST}    IPLIST=&quot;${IPLIST} ${TEMP_IPADDR}&quot;done  #---------------------------------------------------------------------------------------------------## 4、远程重启 storm supervisor 服务/usr/local/bin/ansible -i ${FAIL_SUPERVISOR_LIST} fail_supervisor -m shell -a &quot;/data/scripts/restart_storm_service.sh&quot;rm -f ${FAIL_SUPERVISOR_LIST}# vim /data/scripts/supervisor_list.txt
123456storm_supervisor1storm_supervisor2storm_supervisor3storm_supervisor4storm_supervisor5storm_supervisor6# touch /var/run/check_storm.lock
# crontab -e
*/2 * * * * (flock --timeout=0 /var/run/check_storm.lock /data/scripts/monitor_status_for_storm.sh >/dev/null 2>&1)
4、supervisor节点部署
# vim/data/scripts/restart_storm_service.sh

123456#!/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin  . /etc/profile[[ -n `ps aux | grep java | grep storm` ]] && kill -9 `ps aux | grep java | grep storm | awk '{print $2}'`nohup /usr/local/storm/bin/storm supervisor >/dev/null 2>&1 &



本文出自 “人生理想在于坚持不懈” 博客,请务必保留此出处http://sofar.blog.iyunv.com/353572/1579897

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-143765-1-1.html 上篇帖子: Ansible 1.9.0发布 来一起看看这个配置管理新贵 下篇帖子: RHCS+Conga+iSCSI+CLVM+GFS实现Web服务的共享存储HA集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表