文档章节

结合Ansible技术监控Storm集群

rootliu
 rootliu
发布于 2017/04/28 10:32
字数 848
阅读 5
收藏 0

结合Ansible技术监控Storm集群 2014-11-20 01:13:46

标签:storm ansible

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://sofar.blog.51cto.com/353572/1579897

1、我的hosts配置

# vim /etc/hosts

1

2

3

4

5

6

7

8

9

10

11

12

192.168.1.100  storm_zk1

192.168.1.101  storm_zk2

192.168.1.102  storm_zk3

  

192.168.1.103  storm_nimbus

  

192.168.1.104  storm_supervisor1

192.168.1.105  storm_supervisor2

192.168.1.106  storm_supervisor3

192.168.1.107  storm_supervisor4

192.168.1.108  storm_supervisor5

192.168.1.109  storm_supervisor6

2、我的storm配置

vim /usr/local/storm/conf/storm.yaml

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

drpc.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: 6627

nimbus.thrift.max_buffer_size: 1048576

nimbus.childopts: "-Xmx1024m"

nimbus.task.timeout.secs: 30

nimbus.supervisor.timeout.secs: 60

nimbus.monitor.freq.secs: 10

nimbus.cleanup.inbox.freq.secs: 600

nimbus.inbox.jar.expiration.secs: 3600

nimbus.task.launch.secs: 240

nimbus.reassign: true

nimbus.file.copy.expiration.secs: 600

nimbus.topology.validator: "backtype.storm.nimbus.DefaultTopologyValidator"

  

storm.zookeeper.port: 2181

storm.zookeeper.root: "/data/storm/zkinfo"

storm.cluster.mode: "distributed"

storm.local.mode.zmq: false

  

ui.port: 8080

ui.childopts: "-Xmx768m"

  

supervisor.slots.ports:

  - 6700

  - 6701

  - 6702

  - 6703

  - 6704

  - 6705

  - 6706

  - 6707

  - 6708

  - 6709

   

supervisor.childopts: "-Xmx2048m"

supervisor.worker.start.timeout.secs: 240

supervisor.worker.timeout.secs: 30

supervisor.monitor.frequency.secs: 3

supervisor.heartbeat.frequency.secs: 5

supervisor.enable: true

  

worker.childopts: "-Xmx4096m"

topology.max.spout.pending: 5000

  

storm.zookeeper.session.timeout: 5000

storm.zookeeper.connection.timeout: 3000

storm.zookeeper.retry.times: 6

storm.zookeeper.retry.interval: 2000

storm.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: 50

storm.messaging.netty.client_worker_threads: 50

storm.messaging.netty.buffer_size: 20971520

storm.messaging.netty.max_retries: 100

storm.messaging.netty.max_wait_ms: 1000

storm.messaging.netty.min_wait_ms: 100

3、nimbus节点部署

# vim /data/scripts/monitor_status_for_storm.sh

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin

  

/etc/profile

  

## 监控页面地址参数

MON_SRV_IPADDR="192.168.1.103"

MON_SRV_PORT="8080"

  

## 是否已正确扫描

SCAN_FLAG=0

  

## 工作基路径

BASE_PATH="/data/scripts"

  

## 异常 storm Supervisor 主机地址列表

FAIL_SUPERVISOR_LIST="${BASE_PATH}/fail_supervisor.txt"

  

#---------------------------------------------------------------------------------------------------

## 重启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++)); do

    RETVAL=`/usr/bin/nmap -n -sS -p ${MON_SRV_PORT} ${MON_SRV_IPADDR} | grep open`

    [[ -n "${RETVAL}" ]] && SCAN_FLAG=1;break || sleep 10

done

  

[[ ${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 "[fail_supervisor]" >> ${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 "${TEMP_IPADDR}" >> ${FAIL_SUPERVISOR_LIST}

    IPLIST="${IPLIST} ${TEMP_IPADDR}"

done

  

#---------------------------------------------------------------------------------------------------

## 4、远程重启 storm supervisor 服务

/usr/local/bin/ansible -i ${FAIL_SUPERVISOR_LIST} fail_supervisor -m shell -a "/data/scripts/restart_storm_service.sh"

rm -f ${FAIL_SUPERVISOR_LIST}

vim /data/scripts/supervisor_list.txt

1

2

3

4

5

6

storm_supervisor1

storm_supervisor2

storm_supervisor3

storm_supervisor4

storm_supervisor5

storm_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

1

2

3

4

5

6

#!/bin/sh

PATH=/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.51cto.com/353572/1579897

本文转载自:http://sofar.blog.51cto.com/353572/1579897

rootliu
粉丝 6
博文 404
码字总数 2796
作品 0
海淀
数据库管理员
私信 提问
Storm概念讲解和工作原理介绍

Strom的结构 Storm与传统关系型数据库 传统关系型数据库是先存后计算,而storm则是先算后存,甚至不存 传统关系型数据库很难部署实时计算,只能部署定时任务统计分析窗口数据 关系型数据库重...

张超
2015/04/26
2.8K
0
【Storm】Storm简介及Storm集群的安装部署

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/gongxifacai_believe/article/details/86557602 1、Storm概述 (1)Storm简介 Storm最早是由BackType公司开发的实时...

魏晓蕾
01/20
0
0
Apache Storm简介及安装部署

Apache Storm是一个分布式的、可靠的、容错的实时数据流处理框架。它与Spark Streaming的最大区别在于它是逐个处理流式数据事件,而Spark Streaming是微批次处理,因此,它比Spark Streaming...

风火数据
2018/07/20
0
0
Storm On Yarn 安装部署

安装 JDK7 和 Maven 部署Hadoop2集群,并启动yarn http://my.oschina.net/zc741520/blog/362824 下载 Storm on Yarn [grid@hadoop4 ~]$ wget https://github.com/yahoo/storm-yarn/archive/m......

张超
2015/05/25
833
0
大数据经典学习路线(及供参考)之 三

3.Storm实时计算部分阶段 实时课程分为两个部分:流式计算核心技术和流式计算计算案例实战。 1.流式计算核心技术 流式计算核心技术主要分为两个核心技术点:Storm和Kafka,学完此阶段能够掌握...

柯西带你学编程
2018/05/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

db.properties

jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8&characterEncoding=utf8&useSSL=falsejdbc.username=rootjdbc.pas......

行者终成事
25分钟前
3
0
从 Storm 到 Flink,汽车之家基于 Flink 的实时 SQL 平台设计思路与实践

在 2019 年之前,之家的大部分实时业务都是运行在 Storm 之上的。Storm 作为早期主流的实时计算引擎,凭借简单的 Spout 和 Bolt 编程模型以及集群本身的稳定性,俘获了大批用户。下图是实时计...

阿里云官方博客
25分钟前
4
0
网络安全-Day04

2.1.1 什么是SQL注入 2.1.2 注入分类 2.1.3 MySQL手工注入 2.1.4 sqlmap使用 2.1.5 总结 什么是SQL注入 SQL注入漏洞原理 什么是SQL 结构化查询语言(Structured Query Language),是一种特殊目...

Jerry1101
26分钟前
3
0
docker容器内安装yum,vim等命令,以及配置ls指令

使用国内镜像 mv /etc/apt/sources.list /etc/apt/sources.list.bakecho "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >> /etc/apt/sources.listecho "deb http://......

长恭
26分钟前
3
0
超详细的MySQL8.0.17版本安装教程

下载MySQL MySQL的官网地址:https://www.mysql.com/。 如下图所示: 然后点击DOWNLOADS ==> Community,选择MySQL Community Server。如图所示: 滑到页面的最下面,找到Recommended Downl...

彩色泡泡糖
29分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部