Added: storm/branches/bobby-versioned-site/releases/0.10.0/index.md URL: http://svn.apache.org/viewvc/storm/branches/bobby-versioned-site/releases/0.10.0/index.md?rev=1735297&view=auto ============================================================================== --- storm/branches/bobby-versioned-site/releases/0.10.0/index.md (added) +++ storm/branches/bobby-versioned-site/releases/0.10.0/index.md Wed Mar 16 21:01:12 2016 @@ -0,0 +1,69 @@ +--- +title: Storm Documentation +layout: documentation +--- +Storm is a distributed realtime computation system. Similar to how Hadoop provides a set of general primitives for doing batch processing, Storm provides a set of general primitives for doing realtime computation. Storm is simple, can be used with any programming language, [is used by many companies](/documentation/Powered-By.html), and is a lot of fun to use! + +### Read these first + +* [Rationale](Rationale.html) +* [Tutorial](Tutorial.html) +* [Setting up development environment](Setting-up-development-environment.html) +* [Creating a new Storm project](Creating-a-new-Storm-project.html) + +### Documentation + +* [Documentation Index](doc-index.html) +* [Manual](Documentation.html) +* [Javadoc](javadocs/index.html) +* [FAQ](FAQ.html) + +### Getting help + +__NOTE:__ The google groups account [email protected] is now officially deprecated in favor of the Apache-hosted user/dev mailing lists. + +#### Storm Users +Storm users should send messages and subscribe to [[email protected]](mailto:[email protected]). + +You can subscribe to this list by sending an email to [[email protected]](mailto:[email protected]). Likewise, you can cancel a subscription by sending an email to [[email protected]](mailto:[email protected]). + +You can view the archives of the mailing list [here](http://mail-archives.apache.org/mod_mbox/storm-user/). + +#### Storm Developers +Storm developers should send messages and subscribe to [[email protected]](mailto:[email protected]). + +You can subscribe to this list by sending an email to [[email protected]](mailto:[email protected]). Likewise, you can cancel a subscription by sending an email to [[email protected]](mailto:[email protected]). + +You can view the archives of the mailing list [here](http://mail-archives.apache.org/mod_mbox/storm-dev/). + +#### Which list should I send/subscribe to? +If you are using a pre-built binary distribution of Storm, then chances are you should send questions, comments, storm-related announcements, etc. to [[email protected]]([email protected]). + +If you are building storm from source, developing new features, or otherwise hacking storm source code, then [[email protected]]([email protected]) is more appropriate. + +#### What will happen with [email protected]? +All existing messages will remain archived there, and can be accessed/searched [here](https://groups.google.com/forum/#!forum/storm-user). + +New messages sent to [email protected] will either be rejected/bounced or replied to with a message to direct the email to the appropriate Apache-hosted group. + +#### IRC +You can also come to the #storm-user room on [freenode](http://freenode.net/). You can usually find a Storm developer there to help you out. + + + +### Related projects + +* [storm-contrib](https://github.com/nathanmarz/storm-contrib) +* [storm-deploy](http://github.com/nathanmarz/storm-deploy): One click deploys for Storm clusters on AWS +* [Spout implementations](Spout-implementations.html) +* [DSLs and multilang adapters](DSLs-and-multilang-adapters.html) +* [Serializers](Serializers.html) + +### Contributing to Storm + +* [Contributing to Storm](Contributing-to-Storm.html) +* [Project ideas](Project-ideas.html) + +### Powered by Storm + +[Companies and projects powered by Storm](Powered-By.html)
Added: storm/branches/bobby-versioned-site/releases/0.9.6/SECURITY.md URL: http://svn.apache.org/viewvc/storm/branches/bobby-versioned-site/releases/0.9.6/SECURITY.md?rev=1735297&view=auto ============================================================================== --- storm/branches/bobby-versioned-site/releases/0.9.6/SECURITY.md (added) +++ storm/branches/bobby-versioned-site/releases/0.9.6/SECURITY.md Wed Mar 16 21:01:12 2016 @@ -0,0 +1,79 @@ +--- +title: Running Apache Storm Securely +layout: documentation +documentation: true +--- +# Running Apache Storm Securely + +The current release of Apache Storm offers no authentication or authorization. +It does not encrypt any data being sent across the network, and does not +attempt to restrict access to data stored on the local file system or in +Apache Zookeeper. As such there are a number of different precautions you may +want to enact outside of storm itself to be sure storm is running securely. + +The exact detail of how to setup these precautions varies a lot and is beyond +the scope of this document. + +## Network Security + +It is generally a good idea to enable a firewall and restrict incoming network +connections to only those originating from the cluster itself and from trusted +hosts and services, a complete list of ports storm uses are below. + +If the data your cluster is processing is sensitive it might be best to setup +IPsec to encrypt all traffic being sent between the hosts in the cluster. + +### Ports + +| Default Port | Storm Config | Client Hosts/Processes | Server | +|--------------|--------------|------------------------|--------| +| 2181 | `storm.zookeeper.port` | Nimbus, Supervisors, and Worker processes | Zookeeper | +| 6627 | `nimbus.thrift.port` | Storm clients, Supervisors, and UI | Nimbus | +| 8080 | `ui.port` | Client Web Browsers | UI | +| 8000 | `logviewer.port` | Client Web Browsers | Logviewer | +| 3772 | `drpc.port` | External DRPC Clients | DRPC | +| 3773 | `drpc.invocations.port` | Worker Processes | DRPC | +| 670{0,1,2,3} | `supervisor.slots.ports` | Worker Processes | Worker Processes | + +### UI/Logviewer + +The UI and logviewer processes provide a way to not only see what a cluster is +doing, but also manipulate running topologies. In general these processes should +not be exposed except to users of the cluster. It is often simplest to restrict +these ports to only accept connections from local hosts, and then front them with another web server, +like Apache httpd, that can authenticate/authorize incoming connections and +proxy the connection to the storm process. To make this work the ui process must have +logviewer.port set to the port of the proxy in its storm.yaml, while the logviewers +must have it set to the actual port that they are going to bind to. + +### Nimbus + +Nimbus's Thrift port should be locked down as it can be used to control the entire +cluster including running arbitrary user code on different nodes in the cluster. +Ideally access to it is restricted to nodes within the cluster and possibly some gateway +nodes that allow authorized users to log into them and run storm client commands. + +### DRPC + +Each DRPC server has two different ports. The invocations port is accessed by worker +processes within the cluster. The other port is accessed by external clients that +want to query the topology. The external port should be restricted to hosts that you +want to be able to do queries. + +### Supervisors + +Supervisors are only clients they are not servers, and as such don't need special restrictions. + +### Workers + +Worker processes receive data from each other. There is the option to encrypt this data using +Blowfish by setting `topology.tuple.serializer` to `backtype.storm.security.serialization.BlowfishTupleSerializer` +and setting `topology.tuple.serializer.blowfish.key` to a secret key you want your topology to use. + +### Zookeeper + +Zookeeper uses other ports for communications within the ensemble the details of which +are beyond the scope of this document. You should look at restricting Zookeeper access +as well, because storm does not set up any ACLs for the data it write to Zookeeper. + + Added: storm/branches/bobby-versioned-site/releases/0.9.6/STORM-UI-REST-API.md URL: http://svn.apache.org/viewvc/storm/branches/bobby-versioned-site/releases/0.9.6/STORM-UI-REST-API.md?rev=1735297&view=auto ============================================================================== --- storm/branches/bobby-versioned-site/releases/0.9.6/STORM-UI-REST-API.md (added) +++ storm/branches/bobby-versioned-site/releases/0.9.6/STORM-UI-REST-API.md Wed Mar 16 21:01:12 2016 @@ -0,0 +1,572 @@ +--- +title: Storm UI REST API +layout: documentation +documentation: true +--- + +# Storm UI REST API +Storm UI server provides a REST Api to access cluster, topology, component overview and metrics. +This api returns json response. +REST API supports JSONP. User can pass callback query param to wrap json in the callback function. +Please ignore undocumented elements in the json repsonse. + +## Using the UI REST Api + +### /api/v1/cluster/configuration (GET) + returns cluster configuration. Below is a sample response but doesn't include all the config fileds. + +Sample Response: +```json + { + "dev.zookeeper.path": "/tmp/dev-storm-zookeeper", + "topology.tick.tuple.freq.secs": null, + "topology.builtin.metrics.bucket.size.secs": 60, + "topology.fall.back.on.java.serialization": true, + "topology.max.error.report.per.interval": 5, + "zmq.linger.millis": 5000, + "topology.skip.missing.kryo.registrations": false, + "storm.messaging.netty.client_worker_threads": 1, + "ui.childopts": "-Xmx768m", + "storm.zookeeper.session.timeout": 20000, + "nimbus.reassign": true, + "topology.trident.batch.emit.interval.millis": 500, + "storm.messaging.netty.flush.check.interval.ms": 10, + "nimbus.monitor.freq.secs": 10, + "logviewer.childopts": "-Xmx128m", + "java.library.path": "/usr/local/lib:/opt/local/lib:/usr/lib", + "topology.executor.send.buffer.size": 1024, + } +``` + +### /api/v1/cluster/summary (GET) +returns cluster summary such as nimbus uptime,number of supervisors,slots etc.. + +Response Fields: + +|Field |Value|Description +|--- |--- |--- +|stormVersion|String| Storm version| +|nimbusUptime|String| Shows how long the cluster is running| +|supervisors|Integer| Number of supervisors running| +|slotsTotal| Integer|Total number of available worker slots| +|slotsUsed| Integer| Number of worker slots used| +|slotsFree| Integer |Number of worker slots available| +|executorsTotal| Integer |Total number of executors| +|tasksTotal| Integer |Total tasks| + +Sample Response: +```json + { + "stormVersion": "0.9.2-incubating-SNAPSHOT", + "nimbusUptime": "3m 53s", + "supervisors": 1, + "slotsTotal": 4, + "slotsUsed": 3, + "slotsFree": 1, + "executorsTotal": 28, + "tasksTotal": 28 + } +``` + +### /api/v1/supervisor/summary (GET) +returns all supervisors summary + +Response Fields: + +|Field |Value|Description| +|--- |--- |--- +|id| String | Supervisor's id| +|host| String| Supervisor's host name| +|uptime| String| Shows how long the supervisor is running| +|slotsTotal| Integer| Total number of available worker slots for this supervisor| +|slotsUsed| Integer| Number of worker slots used on this supervisor| + +Sample Response: +```json +{ + "supervisors": [ + { + "id": "0b879808-2a26-442b-8f7d-23101e0c3696", + "host": "10.11.1.7", + "uptime": "5m 58s", + "slotsTotal": 4, + "slotsUsed": 3 + } + ] +} +``` + +### /api/v1/topology/summary (GET) +Returns all topologies summary + +Response Fields: + +|Field |Value | Description| +|--- |--- |--- +|id| String| Topology Id| +|name| String| Topology Name| +|status| String| Topology Status| +|uptime| String| Shows how long the topology is running| +|tasksTotal| Integer |Total number of tasks for this topology| +|workersTotal| Integer |Number of workers used for this topology| +|executorsTotal| Integer |Number of executors used for this topology| + +Sample Response: +```json +{ + "topologies": [ + { + "id": "WordCount3-1-1402960825", + "name": "WordCount3", + "status": "ACTIVE", + "uptime": "6m 5s", + "tasksTotal": 28, + "workersTotal": 3, + "executorsTotal": 28 + } + ] +} +``` + +### /api/v1/topology/:id (GET) + Returns topology information and stats. Subsititute id with topology id. + +Request Parameters: + +|Parameter |Value |Description | +|----------|--------|-------------| +|id |String (required)| Topology Id | +|window |String. Default value :all-time| Window duration for metrics in seconds| +|sys |String. Values 1 or 0. Default value 0| Controls including sys stats part of the response| + + +Response Fields: + +|Field |Value |Description| +|--- |--- |--- +|id| String| Topology Id| +|name| String |Topology Name| +|uptime| String |Shows how long the topology is running| +|status| String |Shows Topology's current status| +|tasksTotal| Integer |Total number of tasks for this topology| +|workersTotal| Integer |Number of workers used for this topology| +|executorsTotal| Integer |Number of executors used for this topology| +|msgTimeout| Integer | Number of seconds a tuple has before the spout considers it failed | +|windowHint| String | window param value in "hh mm ss" format. Default value is "All Time"| +|topologyStats| Array | Array of all the topology related stats per time window| +|topologyStats.windowPretty| String |Duration passed in HH:MM:SS format| +|topologyStats.window| String |User requested time window for metrics| +|topologyStats.emitted| Long |Number of messages emitted in given window| +|topologyStats.trasferred| Long |Number messages transferred in given window| +|topologyStats.completeLatency| String (double value returned in String format) |Total latency for processing the message| +|topologyStats.acked| Long |Number of messages acked in given window| +|topologyStats.failed| Long |Number of messages failed in given window| +|spouts| Array | Array of all the spout components in the topology| +|spouts.spoutId| String |Spout id| +|spouts.executors| Integer |Number of executors for the spout| +|spouts.emitted| Long |Number of messages emitted in given window | +|spouts.completeLatency| String (double value returned in String format) |Total latency for processing the message| +|spouts.transferred| Long |Total number of messages transferred in given window| +|spouts.tasks| Integer |Total number of tasks for the spout| +|spouts.lastError| String |Shows the last error happened in a spout| +|spouts.errorLapsedSecs| Integer | Number of seconds elapsed since that last error happened in a spout| +|spouts.errorWorkerLogLink| String | Link to the worker log that reported the exception | +|spouts.acked| Long |Number of messages acked| +|spouts.failed| Long |Number of messages failed| +|bolts| Array | Array of bolt components in the topology| +|bolts.boltId| String |Bolt id| +|bolts.capacity| String (double value returned in String format) |This value indicates number of messages executed * average execute latency / time window| +|bolts.processLatency| String (double value returned in String format) |Bolt's average time to ack a message after it's received| +|bolts.executeLatency| String (double value returned in String format) |Average time for bolt's execute method | +|bolts.executors| Integer |Number of executor tasks in the bolt component| +|bolts.tasks| Integer |Number of instances of bolt| +|bolts.acked| Long |Number of tuples acked by the bolt| +|bolts.failed| Long |Number of tuples failed by the bolt| +|bolts.lastError| String |Shows the last error occurred in the bolt| +|bolts.errorLapsedSecs| Integer |Number of seconds elapsed since that last error happened in a bolt| +|bolts.errorWorkerLogLink| String | Link to the worker log that reported the exception | +|bolts.emitted| Long |Number of tuples emitted| + + + +Examples: +```no-highlight + 1. http://ui-daemon-host-name:8080/api/v1/topology/WordCount3-1-1402960825 + 2. http://ui-daemon-host-name:8080/api/v1/topology/WordCount3-1-1402960825?sys=1 + 3. http://ui-daemon-host-name:8080/api/v1/topology/WordCount3-1-1402960825?window=600 +``` + +Sample Response: +```json + { + "name": "WordCount3", + "id": "WordCount3-1-1402960825", + "workersTotal": 3, + "window": "600", + "status": "ACTIVE", + "tasksTotal": 28, + "executorsTotal": 28, + "uptime": "29m 19s", + "msgTimeout": 30, + "windowHint": "10m 0s", + "topologyStats": [ + { + "windowPretty": "10m 0s", + "window": "600", + "emitted": 397960, + "transferred": 213380, + "completeLatency": "0.000", + "acked": 213460, + "failed": 0 + }, + { + "windowPretty": "3h 0m 0s", + "window": "10800", + "emitted": 1190260, + "transferred": 638260, + "completeLatency": "0.000", + "acked": 638280, + "failed": 0 + }, + { + "windowPretty": "1d 0h 0m 0s", + "window": "86400", + "emitted": 1190260, + "transferred": 638260, + "completeLatency": "0.000", + "acked": 638280, + "failed": 0 + }, + { + "windowPretty": "All time", + "window": ":all-time", + "emitted": 1190260, + "transferred": 638260, + "completeLatency": "0.000", + "acked": 638280, + "failed": 0 + } + ], + "spouts": [ + { + "executors": 5, + "emitted": 28880, + "completeLatency": "0.000", + "transferred": 28880, + "acked": 0, + "spoutId": "spout", + "tasks": 5, + "lastError": "", + "errorLapsedSecs": null + "failed": 0 + } + ], + "bolts": [ + { + "executors": 12, + "emitted": 184580, + "transferred": 0, + "acked": 184640, + "executeLatency": "0.048", + "tasks": 12, + "executed": 184620, + "processLatency": "0.043", + "boltId": "count", + "lastError": "", + "errorLapsedSecs": null + "capacity": "0.003", + "failed": 0 + }, + { + "executors": 8, + "emitted": 184500, + "transferred": 184500, + "acked": 28820, + "executeLatency": "0.024", + "tasks": 8, + "executed": 28780, + "processLatency": "2.112", + "boltId": "split", + "lastError": "", + "errorLapsedSecs": null + "capacity": "0.000", + "failed": 0 + } + ], + "configuration": { + "storm.id": "WordCount3-1-1402960825", + "dev.zookeeper.path": "/tmp/dev-storm-zookeeper", + "topology.tick.tuple.freq.secs": null, + "topology.builtin.metrics.bucket.size.secs": 60, + "topology.fall.back.on.java.serialization": true, + "topology.max.error.report.per.interval": 5, + "zmq.linger.millis": 5000, + "topology.skip.missing.kryo.registrations": false, + "storm.messaging.netty.client_worker_threads": 1, + "ui.childopts": "-Xmx768m", + "storm.zookeeper.session.timeout": 20000, + "nimbus.reassign": true, + "topology.trident.batch.emit.interval.millis": 500, + "storm.messaging.netty.flush.check.interval.ms": 10, + "nimbus.monitor.freq.secs": 10, + "logviewer.childopts": "-Xmx128m", + "java.library.path": "/usr/local/lib:/opt/local/lib:/usr/lib", + "topology.executor.send.buffer.size": 1024, + "storm.local.dir": "storm-local", + "storm.messaging.netty.buffer_size": 5242880, + "supervisor.worker.start.timeout.secs": 120, + "topology.enable.message.timeouts": true, + "nimbus.cleanup.inbox.freq.secs": 600, + "nimbus.inbox.jar.expiration.secs": 3600, + "drpc.worker.threads": 64, + "topology.worker.shared.thread.pool.size": 4, + "nimbus.host": "hw10843.local", + "storm.messaging.netty.min_wait_ms": 100, + "storm.zookeeper.port": 2181, + "transactional.zookeeper.port": null, + "topology.executor.receive.buffer.size": 1024, + "transactional.zookeeper.servers": null, + "storm.zookeeper.root": "/storm", + "storm.zookeeper.retry.intervalceiling.millis": 30000, + "supervisor.enable": true, + "storm.messaging.netty.server_worker_threads": 1 + }, +} +``` + + +### /api/v1/topology/:id/component/:component (GET) + +Returns detailed metrics and executor information + +|Parameter |Value |Description | +|----------|--------|-------------| +|id |String (required)| Topology Id | +|component |String (required)| Component Id | +|window |String. Default value :all-time| window duration for metrics in seconds| +|sys |String. Values 1 or 0. Default value 0| controls including sys stats part of the response| + +Response Fields: + +|Field |Value |Description| +|--- |--- |--- +|id | String | Component's id| +|name | String | Topology name| +|componentType | String | component's type SPOUT or BOLT| +|windowHint| String | window param value in "hh mm ss" format. Default value is "All Time"| +|executors| Integer |Number of executor tasks in the component| +|componentErrors| Array of Errors | List of component errors| +|componentErrors.time| Long | Timestamp when the exception occurred | +|componentErrors.errorHost| String | host name for the error| +|componentErrors.errorPort| String | port for the error| +|componentErrors.error| String |Shows the error happened in a component| +|componentErrors.errorLapsedSecs| Integer | Number of seconds elapsed since the error happened in a component | +|componentErrors.errorWorkerLogLink| String | Link to the worker log that reported the exception | +|topologyId| String | Topology's Id| +|tasks| Integer |Number of instances of component| +|window |String. Default value "All Time" | window duration for metrics in seconds| +|spoutSummary or boltStats| Array |Array of component stats. **Please note this element tag can be spoutSummary or boltStats depending on the componentType**| +|spoutSummary.windowPretty| String |Duration passed in HH:MM:SS format| +|spoutSummary.window| String | window duration for metrics in seconds| +|spoutSummary.emitted| Long |Number of messages emitted in given window | +|spoutSummary.completeLatency| String (double value returned in String format) |Total latency for processing the message| +|spoutSummary.transferred| Long |Total number of messages transferred in given window| +|spoutSummary.acked| Long |Number of messages acked| +|spoutSummary.failed| Long |Number of messages failed| +|boltStats.windowPretty| String |Duration passed in HH:MM:SS format| +|boltStats..window| String | window duration for metrics in seconds| +|boltStats.transferred| Long |Total number of messages transferred in given window| +|boltStats.processLatency| String (double value returned in String format) |Bolt's average time to ack a message after it's received| +|boltStats.acked| Long |Number of messages acked| +|boltStats.failed| Long |Number of messages failed| + +Examples: +```no-highlight +1. http://ui-daemon-host-name:8080/api/v1/topology/WordCount3-1-1402960825/component/spout +2. http://ui-daemon-host-name:8080/api/v1/topology/WordCount3-1-1402960825/component/spout?sys=1 +3. http://ui-daemon-host-name:8080/api/v1/topology/WordCount3-1-1402960825/component/spout?window=600 +``` + +Sample Response: +```json +{ + "name": "WordCount3", + "id": "spout", + "componentType": "spout", + "windowHint": "10m 0s", + "executors": 5, + "componentErrors":[{"time": 1406006074000, + "errorHost": "10.11.1.70", + "errorPort": 6701, + "errorWorkerLogLink": "http://10.11.1.7:8000/log?file=worker-6701.log", + "errorLapsedSecs": 16, + "error": "java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: Some Error\n\tat backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:128)\n\tat backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:99)\n\tat backtype.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:80)\n\tat backtype...more.." + }], + "topologyId": "WordCount3-1-1402960825", + "tasks": 5, + "window": "600", + "spoutSummary": [ + { + "windowPretty": "10m 0s", + "window": "600", + "emitted": 28500, + "transferred": 28460, + "completeLatency": "0.000", + "acked": 0, + "failed": 0 + }, + { + "windowPretty": "3h 0m 0s", + "window": "10800", + "emitted": 127640, + "transferred": 127440, + "completeLatency": "0.000", + "acked": 0, + "failed": 0 + }, + { + "windowPretty": "1d 0h 0m 0s", + "window": "86400", + "emitted": 127640, + "transferred": 127440, + "completeLatency": "0.000", + "acked": 0, + "failed": 0 + }, + { + "windowPretty": "All time", + "window": ":all-time", + "emitted": 127640, + "transferred": 127440, + "completeLatency": "0.000", + "acked": 0, + "failed": 0 + } + ], + "outputStats": [ + { + "stream": "__metrics", + "emitted": 40, + "transferred": 0, + "completeLatency": "0", + "acked": 0, + "failed": 0 + }, + { + "stream": "default", + "emitted": 28460, + "transferred": 28460, + "completeLatency": "0", + "acked": 0, + "failed": 0 + } + ] + "executorStats": [ + { + "workerLogLink": "http://10.11.1.7:8000/log?file=worker-6701.log", + "emitted": 5720, + "port": 6701, + "completeLatency": "0.000", + "transferred": 5720, + "host": "10.11.1.7", + "acked": 0, + "uptime": "43m 4s", + "id": "[24-24]", + "failed": 0 + }, + { + "workerLogLink": "http://10.11.1.7:8000/log?file=worker-6703.log", + "emitted": 5700, + "port": 6703, + "completeLatency": "0.000", + "transferred": 5700, + "host": "10.11.1.7", + "acked": 0, + "uptime": "42m 57s", + "id": "[25-25]", + "failed": 0 + }, + { + "workerLogLink": "http://10.11.1.7:8000/log?file=worker-6702.log", + "emitted": 5700, + "port": 6702, + "completeLatency": "0.000", + "transferred": 5680, + "host": "10.11.1.7", + "acked": 0, + "uptime": "42m 57s", + "id": "[26-26]", + "failed": 0 + }, + { + "workerLogLink": "http://10.11.1.7:8000/log?file=worker-6701.log", + "emitted": 5700, + "port": 6701, + "completeLatency": "0.000", + "transferred": 5680, + "host": "10.11.1.7", + "acked": 0, + "uptime": "43m 4s", + "id": "[27-27]", + "failed": 0 + }, + { + "workerLogLink": "http://10.11.1.7:8000/log?file=worker-6703.log", + "emitted": 5680, + "port": 6703, + "completeLatency": "0.000", + "transferred": 5680, + "host": "10.11.1.7", + "acked": 0, + "uptime": "42m 57s", + "id": "[28-28]", + "failed": 0 + } + ] +} +``` + +### /api/v1/topology/:id/activate (POST) +activates a topology + +|Parameter |Value |Description | +|----------|--------|-------------| +|id |String (required)| Topology Id | + +### /api/v1/topology/:id/deactivate (POST) +deactivates a topology + +|Parameter |Value |Description | +|----------|--------|-------------| +|id |String (required)| Topology Id | + + +### /api/v1/topology/:id/rebalance/:wait-time (POST) +rebalances a topology + +|Parameter |Value |Description | +|----------|--------|-------------| +|id |String (required)| Topology Id | +|wait-time |String (required)| Wait time before rebalance happens | + +### /api/v1/topology/:id/kill/:wait-time (POST) +kills a topology + +|Parameter |Value |Description | +|----------|--------|-------------| +|id |String (required)| Topology Id | +|wait-time |String (required)| Wait time before rebalance happens | + + + +### ERRORS +on errors in any of the above api returns 500 http status code with +the following response. + +Sample Response: +```json +{ + "error": "Internal Server Error", + "errorMessage": "java.lang.NullPointerException\n\tat clojure.core$name.invoke(core.clj:1505)\n\tat backtype.storm.ui.core$component_page.invoke(core.clj:752)\n\tat backtype.storm.ui.core$fn__7766.invoke(core.clj:782)\n\tat compojure.core$make_route$fn__5755.invoke(core.clj:93)\n\tat compojure.core$if_route$fn__5743.invoke(core.clj:39)\n\tat compojure.core$if_method$fn__5736.invoke(core.clj:24)\n\tat compojure.core$routing$fn__5761.invoke(core.clj:106)\n\tat clojure.core$some.invoke(core.clj:2443)\n\tat compojure.core$routing.doInvoke(core.clj:106)\n\tat clojure.lang.RestFn.applyTo(RestFn.java:139)\n\tat clojure.core$apply.invoke(core.clj:619)\n\tat compojure.core$routes$fn__5765.invoke(core.clj:111)\n\tat ring.middleware.reload$wrap_reload$fn__6880.invoke(reload.clj:14)\n\tat backtype.storm.ui.core$catch_errors$fn__7800.invoke(core.clj:836)\n\tat ring.middleware.keyword_params$wrap_keyword_params$fn__6319.invoke(keyword_params.clj:27)\n\tat ring.middleware.nested_params$wrap_nest ed_params$fn__6358.invoke(nested_params.clj:65)\n\tat ring.middleware.params$wrap_params$fn__6291.invoke(params.clj:55)\n\tat ring.middleware.multipart_params$wrap_multipart_params$fn__6386.invoke(multipart_params.clj:103)\n\tat ring.middleware.flash$wrap_flash$fn__6675.invoke(flash.clj:14)\n\tat ring.middleware.session$wrap_session$fn__6664.invoke(session.clj:43)\n\tat ring.middleware.cookies$wrap_cookies$fn__6595.invoke(cookies.clj:160)\n\tat ring.adapter.jetty$proxy_handler$fn__6112.invoke(jetty.clj:16)\n\tat ring.adapter.jetty.proxy$org.mortbay.jetty.handler.AbstractHandler$0.handle(Unknown Source)\n\tat org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)\n\tat org.mortbay.jetty.Server.handle(Server.java:326)\n\tat org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)\n\tat org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)\n\tat org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)\n\tat org.mortb ay.jetty.HttpParser.parseAvailable(HttpParser.java:212)\n\tat org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)\n\tat org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)\n\tat org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)\n" +} +``` Added: storm/branches/bobby-versioned-site/releases/0.9.6/index.md URL: http://svn.apache.org/viewvc/storm/branches/bobby-versioned-site/releases/0.9.6/index.md?rev=1735297&view=auto ============================================================================== --- storm/branches/bobby-versioned-site/releases/0.9.6/index.md (added) +++ storm/branches/bobby-versioned-site/releases/0.9.6/index.md Wed Mar 16 21:01:12 2016 @@ -0,0 +1,48 @@ +--- +title: Storm Documentation +layout: documentation +--- +Storm is a distributed realtime computation system. Similar to how Hadoop provides a set of general primitives for doing batch processing, Storm provides a set of general primitives for doing realtime computation. Storm is simple, can be used with any programming language, [is used by many companies](/documentation/Powered-By.html), and is a lot of fun to use! + +### Documentation + +* [Javadoc](javadocs/index.html) +* [SECURITY](SECURITY.html) +* [REST API](STORM-UI-REST-API.html) + +### Getting help + +__NOTE:__ The google groups account [email protected] is now officially deprecated in favor of the Apache-hosted user/dev mailing lists. + +#### Storm Users +Storm users should send messages and subscribe to [[email protected]](mailto:[email protected]). + +You can subscribe to this list by sending an email to [[email protected]](mailto:[email protected]). Likewise, you can cancel a subscription by sending an email to [[email protected]](mailto:[email protected]). + +You can view the archives of the mailing list [here](http://mail-archives.apache.org/mod_mbox/storm-user/). + +#### Storm Developers +Storm developers should send messages and subscribe to [[email protected]](mailto:[email protected]). + +You can subscribe to this list by sending an email to [[email protected]](mailto:[email protected]). Likewise, you can cancel a subscription by sending an email to [[email protected]](mailto:[email protected]). + +You can view the archives of the mailing list [here](http://mail-archives.apache.org/mod_mbox/storm-dev/). + +#### Which list should I send/subscribe to? +If you are using a pre-built binary distribution of Storm, then chances are you should send questions, comments, storm-related announcements, etc. to [[email protected]]([email protected]). + +If you are building storm from source, developing new features, or otherwise hacking storm source code, then [[email protected]]([email protected]) is more appropriate. + +#### What will happen with [email protected]? +All existing messages will remain archived there, and can be accessed/searched [here](https://groups.google.com/forum/#!forum/storm-user). + +New messages sent to [email protected] will either be rejected/bounced or replied to with a message to direct the email to the appropriate Apache-hosted group. + +#### IRC +You can also come to the #storm-user room on [freenode](http://freenode.net/). You can usually find a Storm developer there to help you out. + + +### Related projects + +* [storm-contrib](https://github.com/nathanmarz/storm-contrib) +* [storm-deploy](http://github.com/nathanmarz/storm-deploy): One click deploys for Storm clusters on AWS
