mirror of
https://github.com/weaveworks/scope.git
synced 2026-08-18 03:46:45 +00:00
improve the demo app
This commit is contained in:
@@ -37,4 +37,4 @@ endif
|
||||
touch $@
|
||||
|
||||
clean:
|
||||
rm -f qotd/*.o qotd/qotd searchapp/searchapp shout/shout *.marker
|
||||
rm -f qotd/*.o qotd/qotd searchapp/searchapp shout/shout .*.marker
|
||||
|
||||
@@ -7,7 +7,6 @@ $ docker-machine create -d virtualbox --virtualbox-memory=4096 scope-tastic
|
||||
$ eval $(docker-machine env scope-tastic)
|
||||
$ sudo curl -L git.io/weave -o /usr/local/bin/weave
|
||||
$ sudo chmod +x /usr/local/bin/weave
|
||||
$ weave launch
|
||||
$ curl -o run.sh https://raw.githubusercontent.com/weaveworks/scope/master/experimental/example/run.sh
|
||||
$ ./run.sh
|
||||
$ sudo wget -O /usr/local/bin/scope https://github.com/weaveworks/scope/releases/download/latest_release/scope
|
||||
@@ -18,9 +17,15 @@ $ scope launch
|
||||
# "architecture"
|
||||
|
||||
```
|
||||
curl -> frontend --> app --> searchapp -> elasticsearch
|
||||
(nginx) |
|
||||
--> qotd -> internet
|
||||
|
|
||||
--> redis
|
||||
client -> frontend --> app --> searchapp -> elasticsearch
|
||||
(nginx) |
|
||||
--> qotd -> internet
|
||||
|
|
||||
--> redis
|
||||
```
|
||||
|
||||
# To push new images
|
||||
|
||||
```
|
||||
for img in $(docker images | grep tomwilkie | cut -d' ' -f1); do docker push $img:latest; done
|
||||
```
|
||||
@@ -16,6 +16,7 @@ app = Flask(__name__)
|
||||
redis = Redis(host='redis', port=6379)
|
||||
pool = ThreadPoolExecutor(max_workers=10)
|
||||
sessions = threading.local()
|
||||
args = None
|
||||
|
||||
def do_redis():
|
||||
redis.incr('hits')
|
||||
@@ -24,6 +25,7 @@ def do_redis():
|
||||
def do_qotd():
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
try:
|
||||
s.settimeout(args.timeout)
|
||||
s.connect((args.qotd, 4446))
|
||||
s.send("Hello")
|
||||
return s.recv(1024)
|
||||
@@ -33,13 +35,13 @@ def do_qotd():
|
||||
def do_search():
|
||||
if getattr(sessions, 'session', None) == None:
|
||||
sessions.session = requests.Session()
|
||||
r = sessions.session.get(args.search)
|
||||
r = sessions.session.get(args.search, timeout=args.timeout)
|
||||
return r.text
|
||||
|
||||
def do_echo(text):
|
||||
if getattr(sessions, 'session', None) == None:
|
||||
sessions.session = requests.Session()
|
||||
r = sessions.session.get(args.echo, data=text)
|
||||
r = sessions.session.get(args.echo, data=text, timeout=args.timeout)
|
||||
return r.text
|
||||
|
||||
def ignore_error(f):
|
||||
@@ -75,6 +77,7 @@ if __name__ == "__main__":
|
||||
parser.add_argument('-search', default="http://search.weave.local:80/")
|
||||
parser.add_argument('-qotd', default="qotd.weave.local")
|
||||
parser.add_argument('-echo', default="http://echo.weave.local:80/")
|
||||
parser.add_argument('-timeout', default=0.5, type=float)
|
||||
args = parser.parse_args()
|
||||
|
||||
logging.basicConfig(format='%(asctime)s %(levelname)s %(filename)s:%(lineno)d - %(message)s', level=logging.INFO)
|
||||
|
||||
@@ -8,15 +8,17 @@ import socket
|
||||
import sys
|
||||
|
||||
def do_request(s, args):
|
||||
addrs = socket.getaddrinfo(args.target, 80)
|
||||
addrs = socket.getaddrinfo(args.target, args.port)
|
||||
addrs = [a
|
||||
for a in addrs
|
||||
if a[0] == socket.AF_INET]
|
||||
logging.info("got %s", addrs)
|
||||
if len(addrs) <= 0:
|
||||
logging.info("Could not resolve %s", args.target)
|
||||
return
|
||||
addr = random.choice(addrs)
|
||||
s.get("http://%s:%d" % addr[4], timeout=1.0)
|
||||
url = "http://%s:%d%s" % (addr[4][0], args.port, args.path)
|
||||
s.get(url, timeout=args.timeout)
|
||||
logging.info("Did request %s", url)
|
||||
|
||||
def do_requests(args):
|
||||
s = requests.Session()
|
||||
@@ -29,14 +31,18 @@ def do_requests(args):
|
||||
except:
|
||||
logging.error("Error doing request", exc_info=sys.exc_info())
|
||||
|
||||
time.sleep(1)
|
||||
logging.info("Did request")
|
||||
time.sleep(args.period)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-target', default="frontend")
|
||||
parser.add_argument('-concurrency', default=2, type=int)
|
||||
parser.add_argument('-target', default="frontend.weave.local")
|
||||
parser.add_argument('-port', default=80, type=int)
|
||||
parser.add_argument('-path', default="/")
|
||||
parser.add_argument('-concurrency', default=1, type=int)
|
||||
parser.add_argument('-persist', default=True, type=bool)
|
||||
parser.add_argument('-timeout', default=1.0, type=float)
|
||||
parser.add_argument('-period', default=0.1, type=float)
|
||||
args = parser.parse_args()
|
||||
|
||||
logging.info("Starting %d threads, targeting %s", args.concurrency, args.target)
|
||||
|
||||
@@ -6,7 +6,6 @@ import time
|
||||
import threading
|
||||
import logging
|
||||
|
||||
|
||||
from flask import Flask
|
||||
from flask import request
|
||||
from werkzeug.serving import WSGIRequestHandler
|
||||
@@ -14,11 +13,7 @@ from werkzeug.serving import WSGIRequestHandler
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/')
|
||||
def hello():
|
||||
if random.random() > 0.6:
|
||||
time.sleep(2)
|
||||
else:
|
||||
time.sleep(0.5)
|
||||
def echo():
|
||||
return request.data
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -3,7 +3,7 @@ kind: Deployment
|
||||
metadata:
|
||||
name: client
|
||||
spec:
|
||||
replicas: 2
|
||||
replicas: 1
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
|
||||
Reference in New Issue
Block a user