Storm docker cluster using docker-compose. Including a Prometheus/Graphite container for Storms Metrics Reporting API v2 and Grafana for metrics visualization. Docker-compose/stack also includes Kafka service as example testdata source.
Based on offical Apache Storm docker image , Graphite docker image / Prometheus docker image, Grafana docker image, wurstmeister Apache Kafka image and cAdvisor.
- For swarm deploy set up docker swarm and set labels / edit placement labels accordingly in docker-stack.yml
- Adding configs to storm.yaml file overwrites the default values (for version 2.2.0).
- configure the used metric exporter and potential metric filter regex expressions according to Prometheus/Graphite usage in storm.yaml
- to collect host metrics with the included Prometheus service install and start Prometheus Node exporter on hosts
- If graphite is used set cAdvisor enviroment variable to use statsd storage driver of the graphite service:
environment:
- storage_driver=statsd
- storage_driver_host=graphite:8125$ docker-compose -f docker-stack.yml build$ docker stack deploy --compose-file docker-stack.yml storm-clusteror utilize scripts in /buildscripts
$ ./nimbus.sh$ storm jar /topology.jar MainTopology Mytopology-
configure enviroment variables (TOPOLOGY_JAR, TOPOLOGY_MAIN, TOPOLOGY_Name) in Dockerfile
-
on nimbus shell:
/./deploy_topology.sh- get shell on kafka:
./kafka.sh- execute kafka generator jar
java -jar kafka-generator-1.0-SNAPSHOT-jar-with-dependencies.jar- the example messages generated by this kafka-generator are compatible to the provided example topology
When using swarm deployment, services are available via all host IPs. (see: ingress)
Storm UI: http://host:8080
Prometheus Dashboard: http://host:9090
Grafana Dashboard: http://host:3000 (userdetails: admin/admin)