今天有个storm的topology被人kill掉了,但是找不到是谁做的,storm的ui有kill topology的功能,但是没有权限验证,这样就导致知道ui地址的任何人都可以kill掉topology,比较危险,考虑把这个action disable掉。
有两种方法:
1.前端增加nginx,做location
分析ui页面,对应kill的button,html中的action为:
代码如下:
<input enabled="" onclick="confirmAction('xxxxxxxxxx', 'xxxxxxxx', 'kill', true, 30)" type="button" value="Kill">
调用了js的confirmAction方法,这个方法存在于storm-core/src/ui/public/js/script.js 中,方法的定义如下:
代码如下:
function confirmAction(id, name, action, wait, defaultWait) {var opts = {type:'POST',url:'/topology/' + id + '/' + action}; if (wait) { var waitSecs = prompt('Do you really want to ' + action + ' topology "' + name + '"? ' +'If yes, please, specify wait time in seconds:',defaultWait);if (waitSecs != null && waitSecs != "" && ensureInt(waitSecs)) {opts.url += '/' + waitSecs;} else {return false;} } else if (!confirm('Do you really want to ' + action + ' topology "' + name + '"?')) {return false;} $("input[type=button]").attr("disabled", "disabled");$.ajax(opts).always(function () {window.location.reload();}).fail(function () {alert("Error while communicating with Nimbus.")});return false;}
以看到方法主要分为两步,生成post请求的url,格式为'/topology/' + id + '/' + action + '/' + waitSecs,这里action为kill,waitSecs为触发kill时手动填入的时间,比如这里的30s,最终的url格式如下:
代码如下:
/topology/xxxxx/kill/xxxx
第二步就是根据这个设置触发一个ajax请求,这里我们只需要关心第一步即可,设置nginx如下:
代码如下:
upstream storm { server 127.0.0.1:8888 weight=3 max_fails=3 fail_timeout=5s;} server { server_name storm.xxx.com; listen 80; proxy_set_header Host $host; proxy_read_timeout 3600; proxy_set_header X-Forwarded-For $remote_addr;access_log /var/log/nginx/storm.access.log main;error_log /var/log/nginx/storm.error.log debug;location ~* /topology/(.*)/kill/(.*) {return 403;} location / { proxy_pass http://storm; } }
这样,就可以屏蔽掉前端的kill功能了。
注意一个细节,storm ui的默认端口时8080,这个端口和nm冲突(见bug https://github.com/yahoo/storm-yarn/issues/25),设置storm.yaml ui.port: 8888,并重启ui即可.
2.更改代码,去掉action相关的button
代码如下:
storm-core/src/ui/public/topology.html
去除掉下面的部分:
代码如下:
<div id="topology-actions"> <h2 class="js-only">Topology actions</h2> <p id="topology-actions" class="js-only"> </p> </div>
相关推荐
主分支: ##包裹包战 mvn clean package -DskipTests=true -Dwarcp ./target/storm-ui.war $TOMCAT_HOME/webapps/包装罐 mvn clean package -DskipTests=truecp ./target/storm-ui-*.jar $STORM_HOME/external/...
标题 "Kerberos之后 storm UI" 暗示了我们讨论的主题是关于Kerberos安全认证在Apache Storm UI中的应用。Apache Storm是一个分布式实时计算系统,而Kerberos是一种广泛使用的网络身份验证协议,用于提供安全性。在这...
该文档对storm1.1.x ui进行了详细的说明,方便开发人员进行storm监控管理。 这个文档是我及用Typora编写,是一个md文件,所以建议使用Typora打开,当然,其它Macdown编辑器也支持
Storm UI守护程序提供了一个REST API,使您可以与Storm集群进行交互,其中包括检索指标数据和配置信息以及诸如启动或停止拓扑之类的管理操作。 REST API返回JSON响应并支持JSONP。 客户端可以传递回调查询参数以将...
又一个风暴用户界面另一个基于storm ui rest api 0.9.2 或更高版本的storm ui介绍Origin Storm ui 在某些情况下并不方便。 感谢 0.9.2 版本带来了 rest api,这是该项目的基石。 这个项目正试图为风暴构建另一个用户...
使用`bin/storm kill`命令可以停止正在运行的拓扑。 7. **日志和监控**:Storm的日志通常存储在Supervisor节点的工作目录下,可以配置日志级别和日志输出。同时,为了生产环境的稳定,推荐使用如Logstash、Fluentd...
9. **监控和管理**:通过Storm UI监控拓扑运行情况,如有异常,可使用`storm kill`命令停止拓扑,或`storm list`查看当前运行的拓扑。 集群搭建完成后,需要注意监控集群的健康状况,包括资源利用率、网络延迟、...
Storm并行计算与乱序处理方法,Strom内部实现细节研究。
Storm 1.1.0 单节点部署指南 Apache Storm 是一个开源的分布式实时计算系统,它...在实际操作中,确保正确配置和启动服务是关键,同时,理解 Storm 的架构和组件功能有助于更好地管理和使用这个强大的实时计算框架。
Storm 是一个功能强大且灵活的分布式实时计算系统。通过本文档,读者可以了解 Storm 的基础知识,并掌握基本的应用方法。从这里开始,您可以继续学习 Storm 的高级话题,例如 Storm 的优化和调优。
描述中提到,WebService是服务器对外提供的一种服务或功能,它使得开发者能够通过编程方式调用这些服务,获取所需数据,实现了远程服务的访问和数据交换。 在文件列表中,我们可以看到一系列DLL(动态链接库)文件...
5. 如果需要,启动 UI 服务 `bin/storm ui` 以监控 Storm 集群的状态。 6. 开发拓扑(Topology)并部署到集群,这通常涉及编写 Java 或者 Clojure 代码,然后使用 `bin/storm jar` 命令提交。 在使用 Storm 进行...
【Storm Webservice接口调试工具】是一款专为Web服务接口调试设计的应用程序,它以其简约而实用的界面,为开发者提供了一种比传统工具如SOAP UI更为便捷的接口测试体验。这款工具尤其适用于处理Storm相关的Web服务...
还可以使用命令行工具`storm`来管理拓扑,如`storm kill`用于停止拓扑,`storm list`列出所有运行的拓扑。 总的来说,部署Storm涉及多个步骤,包括Java和Zookeeper的安装、环境变量的设置、Storm的安装和配置,以及...
5. **storm-ui.jar**:用户界面(UI)服务器,提供了监控和管理Storm集群的Web界面。 6. **lib目录**:包含各种依赖库,如Hadoop客户端库(如果Storm配置为与HDFS集成),以及各种网络和序列化库。 7. **config目录*...
1. **Storm Core**: Storm的核心库,包括了Storm的API、配置管理、任务调度、心跳检测、故障恢复等功能。 2. **Nimbus**: 这是Storm的主协调节点,负责分配任务给各个工作节点(Supervisors),监控任务执行情况,...
Storm的基本单位是“topology”(拓扑结构),它可以理解为一个实时计算的网络图,包含spouts和bolts两个主要组件。 Spout是拓扑中的数据源组件,主要负责从外部数据源如文件、数据库或者消息队列中获取原始数据,...
5. **启动Storm**: 分别启动nimbus、supervisor和服务UI,可以通过脚本`bin/storm nimbus`、`bin/storm supervisor`和`bin/storm ui`来执行。 6. **验证安装**: 使用`bin/storm version`命令检查Storm是否正常运行。...
- **消息处理保证**:Storm提供了一种可靠的机制来确保每个消息至少被处理一次。 - **编程语言的灵活性**:Storm支持多种编程语言,默认支持Clojure、Java、Ruby和Python,也可以通过实现特定通信协议支持其他语言。...
同时,可以通过Storm UI进行监控,查看各个组件的性能指标,如处理速率、延迟等。 6. **优化与扩展** 在实际应用中,我们可能会考虑优化性能,比如使用更高效的分词算法,或者采用并行处理策略,如使用多个拆分和...