diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..59b2054 Binary files /dev/null and b/.DS_Store differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..7765f62 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# Load Test + diff --git a/data/queries.active b/data/queries.active new file mode 100644 index 0000000..8bfef0e Binary files /dev/null and b/data/queries.active differ diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..2d031a5 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,114 @@ +version: '3' + +networks: + monitor-net: + driver: bridge + +volumes: + prometheus_data: {} + grafana_data: {} + +services: + + httpbin: + build: '../httpbin' + container_name: httpbin + environment: + APP_NAME: "httpbin" + STATSD_HOST: "statsd" + STATSD_PORT: "9125" + ports: + - "8080:80" + networks: + - monitor-net + + prometheus: + image: prom/prometheus:latest + container_name: prometheus + volumes: + - "./prometheus.yml:/prometheus.yml" + command: + - '--config.file=/prometheus.yml' + - '--log.level=debug' + - '--web.listen-address=:9090' + restart: unless-stopped + expose: + - 9090 + ports: + - "9090:9090" + networks: + - monitor-net + + grafana: + image: grafana/grafana:latest + container_name: grafana + volumes: + - grafana_data:/var/lib/grafana + - ./grafana/datasources:/etc/grafana/datasources + - ./grafana/dashboards:/etc/grafana/dashboards + environment: + - GF_SECURITY_ADMIN_USER=${ADMIN_USER:-admin} + - GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin} + - GF_USERS_ALLOW_SIGN_UP=false + restart: unless-stopped + expose: + - 3000 + ports: + - 3000:3000 + networks: + - monitor-net + + nodeexporter: + image: prom/node-exporter:latest + container_name: nodeexporter + user: root + privileged: true + volumes: + - /proc:/host/proc:ro + - /sys:/host/sys:ro + - /:/rootfs:ro + command: + - '--path.procfs=/host/proc' + - '--path.sysfs=/host/sys' + - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)' + restart: unless-stopped + expose: + - 9110 + ports: + - "9110:9110" + networks: + - monitor-net + + cadvisor: + image: gcr.io/cadvisor/cadvisor:latest + container_name: cadvisor + ports: + - "8090:8090" + volumes: + - /:/rootfs:ro + - /var/run:/var/run:ro + - /sys:/sys:ro + - /var/lib/docker/:/var/lib/docker:ro + - /dev/disk/:/dev/disk:ro + devices: + - /dev/kmsg + restart: unless-stopped + + statsd: + image: prom/statsd-exporter:latest + container_name: statsd + command: + - '--statsd.mapping-config=/statsd/test-mapping.conf' + - '--statsd.listen-udp=:9125' + - '--web.listen-address=:9102' + expose: + - 9102 + - 9125 + ports: + - "9125:9125" + - "9102:9102" + - "8080:8080/udp" + volumes: + - "./test-mapping.conf:/statsd/test-mapping.conf" + networks: + - monitor-net \ No newline at end of file diff --git a/ferramentas/.DS_Store b/ferramentas/.DS_Store new file mode 100644 index 0000000..8ea4450 Binary files /dev/null and b/ferramentas/.DS_Store differ diff --git a/ferramentas/apachebench/.DS_Store b/ferramentas/apachebench/.DS_Store new file mode 100644 index 0000000..c9820c3 Binary files /dev/null and b/ferramentas/apachebench/.DS_Store differ diff --git a/ferramentas/apachebench/100_usuarios.png b/ferramentas/apachebench/100_usuarios.png new file mode 100644 index 0000000..734ddd5 Binary files /dev/null and b/ferramentas/apachebench/100_usuarios.png differ diff --git a/ferramentas/apachebench/10_usuarios.png b/ferramentas/apachebench/10_usuarios.png new file mode 100644 index 0000000..a5b6154 Binary files /dev/null and b/ferramentas/apachebench/10_usuarios.png differ diff --git a/ferramentas/apachebench/Dashboard-1655757017561.json b/ferramentas/apachebench/Dashboard-1655757017561.json new file mode 100644 index 0000000..bac0c1e --- /dev/null +++ b/ferramentas/apachebench/Dashboard-1655757017561.json @@ -0,0 +1,432 @@ +{ + "__inputs": [ + { + "name": "DS_PROMETHEUS", + "label": "Prometheus", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__elements": [], + "__requires": [ + { + "type": "panel", + "id": "gauge", + "name": "Gauge", + "version": "" + }, + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "9.0.0" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "stat", + "name": "Stat", + "version": "" + }, + { + "type": "panel", + "id": "timeseries", + "name": "Time series", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 6, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.0.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "builder", + "exemplar": true, + "expr": "gunicorn_requests", + "format": "time_series", + "instant": false, + "interval": "", + "legendFormat": "Total", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "builder", + "exemplar": false, + "expr": "gunicorn_response_code", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{status}}", + "range": true, + "refId": "B" + } + ], + "title": "Acessos", + "type": "stat" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 8 + }, + "id": 2, + "panels": [], + "title": "Dados", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "mappings": [], + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "orange", + "value": 70 + }, + { + "color": "red", + "value": 85 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 13, + "w": 6, + "x": 0, + "y": 9 + }, + "id": 8, + "options": { + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "9.0.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "builder", + "expr": "gunicorn_workers", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Workers", + "type": "gauge" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 13, + "w": 8, + "x": 6, + "y": 9 + }, + "id": 10, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "builder", + "expr": "gunicorn_request_duration", + "legendFormat": "Quant. {{quantile}}%", + "range": true, + "refId": "A" + } + ], + "title": "Quartis", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineStyle": { + "fill": "solid" + }, + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 13, + "w": 10, + "x": 14, + "y": 9 + }, + "id": 12, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "builder", + "expr": "avg(gunicorn_request_duration_sum)", + "legendFormat": "Média", + "range": true, + "refId": "A" + } + ], + "title": "Média", + "type": "timeseries" + } + ], + "refresh": "5s", + "schemaVersion": 36, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-1m", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Dashboard", + "uid": "Fxo7BWqnk", + "version": 2, + "weekStart": "" +} \ No newline at end of file diff --git a/ferramentas/apachebench/Teste ApacheBench.txt b/ferramentas/apachebench/Teste ApacheBench.txt new file mode 100644 index 0000000..666032d --- /dev/null +++ b/ferramentas/apachebench/Teste ApacheBench.txt @@ -0,0 +1,12 @@ +* ApacheBench - Teste de Carga +Documentação: https://httpd.apache.org/docs/2.4/programs/ab.html + +1) Inicializar HttpBin em Docker na porta 8080 de Localhost +Comando: sudo docker run -p 8080:80 kennethreitz/httpbin + +2) Inicializar os testes de ApacheBench com duração de 5 minutos e limite padrão de 50000 requests +- Teste 1: 10 Usuários +ab -c 10 -t 60 http://localhost:8080/ + +- Teste 2: 100 Usuários +ab -c 100 -t 300 http://localhost:8080/ diff --git a/ferramentas/artillery/100_usuarios.html b/ferramentas/artillery/100_usuarios.html new file mode 100644 index 0000000..4535f40 --- /dev/null +++ b/ferramentas/artillery/100_usuarios.html @@ -0,0 +1,1356 @@ + + + + Artillery report + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Test run on

+
+
+ +
+
+

+ Summary +

+ + + + + + + + + + + + + + + + +
Test duration0 sec
Virtual Users created0
Virtual Users completed0
+
+ +
+
+

+ Scenario counts +

+

+ + +
+
+
+ +
+
+

+ Errors +

+

+ + +
+
+
+
+ +
+
+
+

+ Counters +

+

+ + +
+
+
+
+ +
+
+

Charts

+
+
+ +
+
+

+ Errors at intervals +

+ +
+
+ +
+
+

+ Counters at intervals +

+ +
+
+ +
+ +
+
+
+
+
+
+ +
+ +
+
+

Raw report data

+

This is the raw JSON stats output that the report was generated from.

+
+
+
+
+ + + + + + diff --git a/ferramentas/artillery/100_usuarios.json b/ferramentas/artillery/100_usuarios.json new file mode 100644 index 0000000..bbcac71 --- /dev/null +++ b/ferramentas/artillery/100_usuarios.json @@ -0,0 +1,595 @@ +{ + "aggregate": { + "counters": { + "vusers.created_by_name.Teste de Carga para 100 usuários": 6000, + "vusers.created": 6000, + "http.requests": 6000, + "http.codes.200": 6000, + "http.responses": 6000, + "vusers.failed": 0, + "vusers.completed": 6000 + }, + "rates": { + "http.request_rate": 100 + }, + "firstCounterAt": 1655738105239, + "firstHistogramAt": 1655738105288, + "lastCounterAt": 1655738165184, + "lastHistogramAt": 1655738165184, + "firstMetricAt": 1655738105239, + "lastMetricAt": 1655738165184, + "period": 1655738160000, + "summaries": { + "http.response_time": { + "min": 2, + "max": 249, + "count": 6000, + "p50": 6, + "median": 6, + "p75": 7.9, + "p90": 10.9, + "p95": 13.9, + "p99": 49.9, + "p999": 219.2 + }, + "vusers.session_length": { + "min": 3.8, + "max": 251.5, + "count": 6000, + "p50": 7.8, + "median": 7.8, + "p75": 9.9, + "p90": 13.1, + "p95": 16.9, + "p99": 55.2, + "p999": 232.8 + } + }, + "histograms": { + "http.response_time": { + "min": 2, + "max": 249, + "count": 6000, + "p50": 6, + "median": 6, + "p75": 7.9, + "p90": 10.9, + "p95": 13.9, + "p99": 49.9, + "p999": 219.2 + }, + "vusers.session_length": { + "min": 3.8, + "max": 251.5, + "count": 6000, + "p50": 7.8, + "median": 7.8, + "p75": 9.9, + "p90": 13.1, + "p95": 16.9, + "p99": 55.2, + "p999": 232.8 + } + } + }, + "intermediate": [ + { + "counters": { + "vusers.created_by_name.Teste de Carga para 100 usuários": 479, + "vusers.created": 479, + "http.requests": 479, + "http.codes.200": 479, + "http.responses": 479, + "vusers.failed": 0, + "vusers.completed": 479 + }, + "rates": { + "http.request_rate": 100 + }, + "http.request_rate": null, + "firstCounterAt": 1655738105239, + "firstHistogramAt": 1655738105288, + "lastCounterAt": 1655738109978, + "lastHistogramAt": 1655738109978, + "firstMetricAt": 1655738105239, + "lastMetricAt": 1655738109978, + "period": "1655738100000", + "summaries": { + "http.response_time": { + "min": 2, + "max": 41, + "count": 479, + "p50": 6, + "median": 6, + "p75": 7.9, + "p90": 10.1, + "p95": 13.9, + "p99": 34.8, + "p999": 37.7 + }, + "vusers.session_length": { + "min": 4.1, + "max": 55.8, + "count": 479, + "p50": 7.8, + "median": 7.8, + "p75": 9.7, + "p90": 12.6, + "p95": 16, + "p99": 49.9, + "p999": 55.2 + } + }, + "histograms": { + "http.response_time": { + "min": 2, + "max": 41, + "count": 479, + "p50": 6, + "median": 6, + "p75": 7.9, + "p90": 10.1, + "p95": 13.9, + "p99": 34.8, + "p999": 37.7 + }, + "vusers.session_length": { + "min": 4.1, + "max": 55.8, + "count": 479, + "p50": 7.8, + "median": 7.8, + "p75": 9.7, + "p90": 12.6, + "p95": 16, + "p99": 49.9, + "p999": 55.2 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 100 usuários": 1000, + "vusers.created": 1000, + "http.requests": 1000, + "http.codes.200": 1000, + "http.responses": 1000, + "vusers.failed": 0, + "vusers.completed": 1000 + }, + "rates": { + "http.request_rate": 100 + }, + "http.request_rate": null, + "firstCounterAt": 1655738110029, + "firstHistogramAt": 1655738110035, + "lastCounterAt": 1655738119977, + "lastHistogramAt": 1655738119977, + "firstMetricAt": 1655738110029, + "lastMetricAt": 1655738119977, + "period": "1655738110000", + "summaries": { + "http.response_time": { + "min": 2, + "max": 249, + "count": 1000, + "p50": 7, + "median": 7, + "p75": 8.9, + "p90": 16.9, + "p95": 49.9, + "p99": 206.5, + "p999": 237.5 + }, + "vusers.session_length": { + "min": 3.9, + "max": 251.5, + "count": 1000, + "p50": 8.6, + "median": 8.6, + "p75": 11.4, + "p90": 19.9, + "p95": 51.9, + "p99": 219.2, + "p999": 247.2 + } + }, + "histograms": { + "http.response_time": { + "min": 2, + "max": 249, + "count": 1000, + "p50": 7, + "median": 7, + "p75": 8.9, + "p90": 16.9, + "p95": 49.9, + "p99": 206.5, + "p999": 237.5 + }, + "vusers.session_length": { + "min": 3.9, + "max": 251.5, + "count": 1000, + "p50": 8.6, + "median": 8.6, + "p75": 11.4, + "p90": 19.9, + "p95": 51.9, + "p99": 219.2, + "p999": 247.2 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 100 usuários": 1000, + "vusers.created": 1000, + "http.requests": 1000, + "http.codes.200": 1000, + "http.responses": 1000, + "vusers.failed": 0, + "vusers.completed": 1000 + }, + "rates": { + "http.request_rate": 100 + }, + "http.request_rate": null, + "firstCounterAt": 1655738120029, + "firstHistogramAt": 1655738120035, + "lastCounterAt": 1655738129977, + "lastHistogramAt": 1655738129977, + "firstMetricAt": 1655738120029, + "lastMetricAt": 1655738129977, + "period": "1655738120000", + "summaries": { + "http.response_time": { + "min": 2, + "max": 44, + "count": 1000, + "p50": 6, + "median": 6, + "p75": 7.9, + "p90": 10.1, + "p95": 12.1, + "p99": 19.9, + "p999": 43.4 + }, + "vusers.session_length": { + "min": 3.8, + "max": 49.5, + "count": 1000, + "p50": 7.5, + "median": 7.5, + "p75": 9.7, + "p90": 12.3, + "p95": 15.3, + "p99": 26.3, + "p999": 47.9 + } + }, + "histograms": { + "http.response_time": { + "min": 2, + "max": 44, + "count": 1000, + "p50": 6, + "median": 6, + "p75": 7.9, + "p90": 10.1, + "p95": 12.1, + "p99": 19.9, + "p999": 43.4 + }, + "vusers.session_length": { + "min": 3.8, + "max": 49.5, + "count": 1000, + "p50": 7.5, + "median": 7.5, + "p75": 9.7, + "p90": 12.3, + "p95": 15.3, + "p99": 26.3, + "p999": 47.9 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 100 usuários": 1000, + "vusers.created": 1000, + "http.requests": 1000, + "http.codes.200": 1000, + "http.responses": 1000, + "vusers.failed": 0, + "vusers.completed": 1000 + }, + "rates": { + "http.request_rate": 100 + }, + "http.request_rate": null, + "firstCounterAt": 1655738130028, + "firstHistogramAt": 1655738130034, + "lastCounterAt": 1655738139976, + "lastHistogramAt": 1655738139976, + "firstMetricAt": 1655738130028, + "lastMetricAt": 1655738139976, + "period": "1655738130000", + "summaries": { + "http.response_time": { + "min": 2, + "max": 30, + "count": 1000, + "p50": 6, + "median": 6, + "p75": 7.9, + "p90": 10.1, + "p95": 12.1, + "p99": 16, + "p999": 27.9 + }, + "vusers.session_length": { + "min": 3.9, + "max": 36.7, + "count": 1000, + "p50": 7.5, + "median": 7.5, + "p75": 9.5, + "p90": 12.1, + "p95": 14.2, + "p99": 19.1, + "p999": 33.5 + } + }, + "histograms": { + "http.response_time": { + "min": 2, + "max": 30, + "count": 1000, + "p50": 6, + "median": 6, + "p75": 7.9, + "p90": 10.1, + "p95": 12.1, + "p99": 16, + "p999": 27.9 + }, + "vusers.session_length": { + "min": 3.9, + "max": 36.7, + "count": 1000, + "p50": 7.5, + "median": 7.5, + "p75": 9.5, + "p90": 12.1, + "p95": 14.2, + "p99": 19.1, + "p999": 33.5 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 100 usuários": 1000, + "vusers.created": 1000, + "http.requests": 1000, + "http.codes.200": 1000, + "http.responses": 1000, + "vusers.failed": 0, + "vusers.completed": 1000 + }, + "rates": { + "http.request_rate": 100 + }, + "http.request_rate": null, + "firstCounterAt": 1655738140028, + "firstHistogramAt": 1655738140034, + "lastCounterAt": 1655738149976, + "lastHistogramAt": 1655738149976, + "firstMetricAt": 1655738140028, + "lastMetricAt": 1655738149976, + "period": "1655738140000", + "summaries": { + "http.response_time": { + "min": 2, + "max": 103, + "count": 1000, + "p50": 6, + "median": 6, + "p75": 7.9, + "p90": 10.9, + "p95": 16, + "p99": 48.9, + "p999": 100.5 + }, + "vusers.session_length": { + "min": 4, + "max": 106.3, + "count": 1000, + "p50": 7.8, + "median": 7.8, + "p75": 10.3, + "p90": 13.6, + "p95": 20.3, + "p99": 50.9, + "p999": 102.5 + } + }, + "histograms": { + "http.response_time": { + "min": 2, + "max": 103, + "count": 1000, + "p50": 6, + "median": 6, + "p75": 7.9, + "p90": 10.9, + "p95": 16, + "p99": 48.9, + "p999": 100.5 + }, + "vusers.session_length": { + "min": 4, + "max": 106.3, + "count": 1000, + "p50": 7.8, + "median": 7.8, + "p75": 10.3, + "p90": 13.6, + "p95": 20.3, + "p99": 50.9, + "p999": 102.5 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 100 usuários": 1000, + "vusers.created": 1000, + "http.requests": 1000, + "http.codes.200": 1000, + "http.responses": 1000, + "vusers.failed": 0, + "vusers.completed": 1000 + }, + "rates": { + "http.request_rate": 100 + }, + "http.request_rate": null, + "firstCounterAt": 1655738150028, + "firstHistogramAt": 1655738150033, + "lastCounterAt": 1655738159977, + "lastHistogramAt": 1655738159977, + "firstMetricAt": 1655738150028, + "lastMetricAt": 1655738159977, + "period": "1655738150000", + "summaries": { + "http.response_time": { + "min": 2, + "max": 28, + "count": 1000, + "p50": 6, + "median": 6, + "p75": 7.9, + "p90": 10.1, + "p95": 12.1, + "p99": 16.9, + "p999": 26.8 + }, + "vusers.session_length": { + "min": 3.9, + "max": 50.9, + "count": 1000, + "p50": 7.6, + "median": 7.6, + "p75": 9.7, + "p90": 12.1, + "p95": 14.4, + "p99": 19.9, + "p999": 47.9 + } + }, + "histograms": { + "http.response_time": { + "min": 2, + "max": 28, + "count": 1000, + "p50": 6, + "median": 6, + "p75": 7.9, + "p90": 10.1, + "p95": 12.1, + "p99": 16.9, + "p999": 26.8 + }, + "vusers.session_length": { + "min": 3.9, + "max": 50.9, + "count": 1000, + "p50": 7.6, + "median": 7.6, + "p75": 9.7, + "p90": 12.1, + "p95": 14.4, + "p99": 19.9, + "p999": 47.9 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 100 usuários": 521, + "vusers.created": 521, + "http.requests": 521, + "http.codes.200": 521, + "http.responses": 521, + "vusers.failed": 0, + "vusers.completed": 521 + }, + "rates": { + "http.request_rate": 100 + }, + "http.request_rate": null, + "firstCounterAt": 1655738160027, + "firstHistogramAt": 1655738160034, + "lastCounterAt": 1655738165184, + "lastHistogramAt": 1655738165184, + "firstMetricAt": 1655738160027, + "lastMetricAt": 1655738165184, + "period": "1655738160000", + "summaries": { + "http.response_time": { + "min": 2, + "max": 17, + "count": 521, + "p50": 6, + "median": 6, + "p75": 7.9, + "p90": 10.1, + "p95": 10.9, + "p99": 15, + "p999": 16 + }, + "vusers.session_length": { + "min": 3.8, + "max": 18.1, + "count": 521, + "p50": 7.5, + "median": 7.5, + "p75": 9.3, + "p90": 11.4, + "p95": 13.3, + "p99": 16.3, + "p999": 18 + } + }, + "histograms": { + "http.response_time": { + "min": 2, + "max": 17, + "count": 521, + "p50": 6, + "median": 6, + "p75": 7.9, + "p90": 10.1, + "p95": 10.9, + "p99": 15, + "p999": 16 + }, + "vusers.session_length": { + "min": 3.8, + "max": 18.1, + "count": 521, + "p50": 7.5, + "median": 7.5, + "p75": 9.3, + "p90": 11.4, + "p95": 13.3, + "p99": 16.3, + "p999": 18 + } + } + } + ] +} \ No newline at end of file diff --git a/ferramentas/artillery/100_usuarios.png b/ferramentas/artillery/100_usuarios.png new file mode 100644 index 0000000..1f129f5 Binary files /dev/null and b/ferramentas/artillery/100_usuarios.png differ diff --git a/ferramentas/artillery/10_usuarios.html b/ferramentas/artillery/10_usuarios.html new file mode 100644 index 0000000..c7b32ec --- /dev/null +++ b/ferramentas/artillery/10_usuarios.html @@ -0,0 +1,6029 @@ + + + + Artillery report + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Test run on

+
+
+ +
+
+

+ Summary +

+ + + + + + + + + + + + + + + + +
Test duration0 sec
Virtual Users created0
Virtual Users completed0
+
+ +
+
+

+ Scenario counts +

+

+ + +
+
+
+ +
+
+

+ Errors +

+

+ + +
+
+
+
+ +
+
+
+

+ Counters +

+

+ + +
+
+
+
+ +
+
+

Charts

+
+
+ +
+
+

+ Errors at intervals +

+ +
+
+ +
+
+

+ Counters at intervals +

+ +
+
+ +
+ +
+
+
+
+
+
+ +
+ +
+
+

Raw report data

+

This is the raw JSON stats output that the report was generated from.

+
+
+
+
+ + + + + + diff --git a/ferramentas/artillery/10_usuarios.json b/ferramentas/artillery/10_usuarios.json new file mode 100644 index 0000000..d8e9921 --- /dev/null +++ b/ferramentas/artillery/10_usuarios.json @@ -0,0 +1,595 @@ +{ + "aggregate": { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 600, + "vusers.created": 600, + "http.requests": 600, + "http.codes.200": 600, + "http.responses": 600, + "vusers.failed": 0, + "vusers.completed": 600 + }, + "rates": { + "http.request_rate": 10 + }, + "firstCounterAt": 1655737941956, + "firstHistogramAt": 1655737942018, + "lastCounterAt": 1655738001483, + "lastHistogramAt": 1655738001483, + "firstMetricAt": 1655737941956, + "lastMetricAt": 1655738001483, + "period": 1655738000000, + "summaries": { + "http.response_time": { + "min": 3, + "max": 50, + "count": 600, + "p50": 15, + "median": 15, + "p75": 21.1, + "p90": 25.8, + "p95": 29.1, + "p99": 37, + "p999": 48.9 + }, + "vusers.session_length": { + "min": 4.9, + "max": 69, + "count": 600, + "p50": 18, + "median": 18, + "p75": 24.3, + "p90": 30.3, + "p95": 33.5, + "p99": 41.7, + "p999": 67.4 + } + }, + "histograms": { + "http.response_time": { + "min": 3, + "max": 50, + "count": 600, + "p50": 15, + "median": 15, + "p75": 21.1, + "p90": 25.8, + "p95": 29.1, + "p99": 37, + "p999": 48.9 + }, + "vusers.session_length": { + "min": 4.9, + "max": 69, + "count": 600, + "p50": 18, + "median": 18, + "p75": 24.3, + "p90": 30.3, + "p95": 33.5, + "p99": 41.7, + "p999": 67.4 + } + } + }, + "intermediate": [ + { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 83, + "vusers.created": 83, + "http.requests": 83, + "http.codes.200": 83, + "http.responses": 83, + "vusers.failed": 0, + "vusers.completed": 83 + }, + "rates": { + "http.request_rate": 10 + }, + "http.request_rate": null, + "firstCounterAt": 1655737941956, + "firstHistogramAt": 1655737942018, + "lastCounterAt": 1655737949976, + "lastHistogramAt": 1655737949976, + "firstMetricAt": 1655737941956, + "lastMetricAt": 1655737949976, + "period": "1655737940000", + "summaries": { + "http.response_time": { + "min": 6, + "max": 50, + "count": 83, + "p50": 15, + "median": 15, + "p75": 22, + "p90": 26.8, + "p95": 30.3, + "p99": 46.1, + "p999": 46.1 + }, + "vusers.session_length": { + "min": 8.8, + "max": 69, + "count": 83, + "p50": 19.5, + "median": 19.5, + "p75": 25.3, + "p90": 32.1, + "p95": 34.8, + "p99": 67.4, + "p999": 67.4 + } + }, + "histograms": { + "http.response_time": { + "min": 6, + "max": 50, + "count": 83, + "p50": 15, + "median": 15, + "p75": 22, + "p90": 26.8, + "p95": 30.3, + "p99": 46.1, + "p999": 46.1 + }, + "vusers.session_length": { + "min": 8.8, + "max": 69, + "count": 83, + "p50": 19.5, + "median": 19.5, + "p75": 25.3, + "p90": 32.1, + "p95": 34.8, + "p99": 67.4, + "p999": 67.4 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 100, + "vusers.created": 100, + "http.requests": 100, + "http.codes.200": 100, + "http.responses": 100, + "vusers.failed": 0, + "vusers.completed": 100 + }, + "rates": { + "http.request_rate": 10 + }, + "http.request_rate": null, + "firstCounterAt": 1655737950456, + "firstHistogramAt": 1655737950464, + "lastCounterAt": 1655737959971, + "lastHistogramAt": 1655737959971, + "firstMetricAt": 1655737950456, + "lastMetricAt": 1655737959971, + "period": "1655737950000", + "summaries": { + "http.response_time": { + "min": 6, + "max": 37, + "count": 100, + "p50": 15, + "median": 15, + "p75": 19.9, + "p90": 25.8, + "p95": 30.9, + "p99": 34.8, + "p999": 34.8 + }, + "vusers.session_length": { + "min": 7.3, + "max": 40.6, + "count": 100, + "p50": 18, + "median": 18, + "p75": 23.8, + "p90": 29.7, + "p95": 34.8, + "p99": 39.3, + "p999": 39.3 + } + }, + "histograms": { + "http.response_time": { + "min": 6, + "max": 37, + "count": 100, + "p50": 15, + "median": 15, + "p75": 19.9, + "p90": 25.8, + "p95": 30.9, + "p99": 34.8, + "p999": 34.8 + }, + "vusers.session_length": { + "min": 7.3, + "max": 40.6, + "count": 100, + "p50": 18, + "median": 18, + "p75": 23.8, + "p90": 29.7, + "p95": 34.8, + "p99": 39.3, + "p999": 39.3 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 100, + "vusers.created": 100, + "http.requests": 100, + "http.codes.200": 100, + "http.responses": 100, + "vusers.failed": 0, + "vusers.completed": 100 + }, + "rates": { + "http.request_rate": 10 + }, + "http.request_rate": null, + "firstCounterAt": 1655737960455, + "firstHistogramAt": 1655737960469, + "lastCounterAt": 1655737969974, + "lastHistogramAt": 1655737969974, + "firstMetricAt": 1655737960455, + "lastMetricAt": 1655737969974, + "period": "1655737960000", + "summaries": { + "http.response_time": { + "min": 4, + "max": 40, + "count": 100, + "p50": 16, + "median": 16, + "p75": 21.1, + "p90": 26.8, + "p95": 32.8, + "p99": 37.7, + "p999": 37.7 + }, + "vusers.session_length": { + "min": 6.2, + "max": 42.7, + "count": 100, + "p50": 18.7, + "median": 18.7, + "p75": 25.8, + "p90": 30.9, + "p95": 37.7, + "p99": 41.7, + "p999": 41.7 + } + }, + "histograms": { + "http.response_time": { + "min": 4, + "max": 40, + "count": 100, + "p50": 16, + "median": 16, + "p75": 21.1, + "p90": 26.8, + "p95": 32.8, + "p99": 37.7, + "p999": 37.7 + }, + "vusers.session_length": { + "min": 6.2, + "max": 42.7, + "count": 100, + "p50": 18.7, + "median": 18.7, + "p75": 25.8, + "p90": 30.9, + "p95": 37.7, + "p99": 41.7, + "p999": 41.7 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 100, + "vusers.created": 100, + "http.requests": 100, + "http.codes.200": 100, + "http.responses": 100, + "vusers.failed": 0, + "vusers.completed": 100 + }, + "rates": { + "http.request_rate": 10 + }, + "http.request_rate": null, + "firstCounterAt": 1655737970455, + "firstHistogramAt": 1655737970464, + "lastCounterAt": 1655737979970, + "lastHistogramAt": 1655737979970, + "firstMetricAt": 1655737970455, + "lastMetricAt": 1655737979970, + "period": "1655737970000", + "summaries": { + "http.response_time": { + "min": 6, + "max": 33, + "count": 100, + "p50": 16, + "median": 16, + "p75": 21.1, + "p90": 26.8, + "p95": 29.1, + "p99": 32.8, + "p999": 32.8 + }, + "vusers.session_length": { + "min": 8.2, + "max": 36.5, + "count": 100, + "p50": 18, + "median": 18, + "p75": 24.3, + "p90": 30.9, + "p95": 33.5, + "p99": 36.2, + "p999": 36.2 + } + }, + "histograms": { + "http.response_time": { + "min": 6, + "max": 33, + "count": 100, + "p50": 16, + "median": 16, + "p75": 21.1, + "p90": 26.8, + "p95": 29.1, + "p99": 32.8, + "p999": 32.8 + }, + "vusers.session_length": { + "min": 8.2, + "max": 36.5, + "count": 100, + "p50": 18, + "median": 18, + "p75": 24.3, + "p90": 30.9, + "p95": 33.5, + "p99": 36.2, + "p999": 36.2 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 100, + "vusers.created": 100, + "http.requests": 100, + "http.codes.200": 100, + "http.responses": 100, + "vusers.failed": 0, + "vusers.completed": 100 + }, + "rates": { + "http.request_rate": 10 + }, + "http.request_rate": null, + "firstCounterAt": 1655737980455, + "firstHistogramAt": 1655737980467, + "lastCounterAt": 1655737989963, + "lastHistogramAt": 1655737989963, + "firstMetricAt": 1655737980455, + "lastMetricAt": 1655737989963, + "period": "1655737980000", + "summaries": { + "http.response_time": { + "min": 4, + "max": 36, + "count": 100, + "p50": 13.9, + "median": 13.9, + "p75": 19.1, + "p90": 23.8, + "p95": 27.9, + "p99": 32.8, + "p999": 32.8 + }, + "vusers.session_length": { + "min": 5.8, + "max": 38.4, + "count": 100, + "p50": 16.6, + "median": 16.6, + "p75": 21.5, + "p90": 26.8, + "p95": 30.9, + "p99": 35.5, + "p999": 35.5 + } + }, + "histograms": { + "http.response_time": { + "min": 4, + "max": 36, + "count": 100, + "p50": 13.9, + "median": 13.9, + "p75": 19.1, + "p90": 23.8, + "p95": 27.9, + "p99": 32.8, + "p999": 32.8 + }, + "vusers.session_length": { + "min": 5.8, + "max": 38.4, + "count": 100, + "p50": 16.6, + "median": 16.6, + "p75": 21.5, + "p90": 26.8, + "p95": 30.9, + "p99": 35.5, + "p999": 35.5 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 100, + "vusers.created": 100, + "http.requests": 100, + "http.codes.200": 100, + "http.responses": 100, + "vusers.failed": 0, + "vusers.completed": 100 + }, + "rates": { + "http.request_rate": 10 + }, + "http.request_rate": null, + "firstCounterAt": 1655737990455, + "firstHistogramAt": 1655737990465, + "lastCounterAt": 1655737999973, + "lastHistogramAt": 1655737999973, + "firstMetricAt": 1655737990455, + "lastMetricAt": 1655737999973, + "period": "1655737990000", + "summaries": { + "http.response_time": { + "min": 5, + "max": 49, + "count": 100, + "p50": 16, + "median": 16, + "p75": 21.1, + "p90": 24.8, + "p95": 26.8, + "p99": 29.1, + "p999": 29.1 + }, + "vusers.session_length": { + "min": 6.6, + "max": 50.8, + "count": 100, + "p50": 18.7, + "median": 18.7, + "p75": 23.8, + "p90": 27.9, + "p95": 30.9, + "p99": 35.5, + "p999": 35.5 + } + }, + "histograms": { + "http.response_time": { + "min": 5, + "max": 49, + "count": 100, + "p50": 16, + "median": 16, + "p75": 21.1, + "p90": 24.8, + "p95": 26.8, + "p99": 29.1, + "p999": 29.1 + }, + "vusers.session_length": { + "min": 6.6, + "max": 50.8, + "count": 100, + "p50": 18.7, + "median": 18.7, + "p75": 23.8, + "p90": 27.9, + "p95": 30.9, + "p99": 35.5, + "p999": 35.5 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 17, + "vusers.created": 17, + "http.requests": 17, + "http.codes.200": 17, + "http.responses": 17, + "vusers.failed": 0, + "vusers.completed": 17 + }, + "rates": { + "http.request_rate": 17 + }, + "http.request_rate": null, + "firstCounterAt": 1655738000454, + "firstHistogramAt": 1655738000465, + "lastCounterAt": 1655738001483, + "lastHistogramAt": 1655738001483, + "firstMetricAt": 1655738000454, + "lastMetricAt": 1655738001483, + "period": "1655738000000", + "summaries": { + "http.response_time": { + "min": 3, + "max": 25, + "count": 17, + "p50": 16.9, + "median": 16.9, + "p75": 21.1, + "p90": 22.9, + "p95": 24.8, + "p99": 24.8, + "p999": 24.8 + }, + "vusers.session_length": { + "min": 4.9, + "max": 28.1, + "count": 17, + "p50": 19.5, + "median": 19.5, + "p75": 23.8, + "p90": 25.8, + "p95": 27.4, + "p99": 27.4, + "p999": 27.4 + } + }, + "histograms": { + "http.response_time": { + "min": 3, + "max": 25, + "count": 17, + "p50": 16.9, + "median": 16.9, + "p75": 21.1, + "p90": 22.9, + "p95": 24.8, + "p99": 24.8, + "p999": 24.8 + }, + "vusers.session_length": { + "min": 4.9, + "max": 28.1, + "count": 17, + "p50": 19.5, + "median": 19.5, + "p75": 23.8, + "p90": 25.8, + "p95": 27.4, + "p99": 27.4, + "p999": 27.4 + } + } + } + ] +} \ No newline at end of file diff --git a/ferramentas/artillery/10_usuarios.png b/ferramentas/artillery/10_usuarios.png new file mode 100644 index 0000000..eb3f3b9 Binary files /dev/null and b/ferramentas/artillery/10_usuarios.png differ diff --git a/ferramentas/artillery/comandos.txt b/ferramentas/artillery/comandos.txt new file mode 100644 index 0000000..3beb72c --- /dev/null +++ b/ferramentas/artillery/comandos.txt @@ -0,0 +1,8 @@ +npm install -g artillery +docker run -p 80:80 kennethreitz/httpbin -> localhost + +artillery quick --count 10 -n 20 -k http://localhost:8080 + +artillery run -o results_100.json -e local load-tests-sitecontagem.yml +artillery report -o results_100.html results_100.json +artillery report -o results.html 100_usuarios.json \ No newline at end of file diff --git a/ferramentas/artillery/load-tests-sitecontagem.yml b/ferramentas/artillery/load-tests-sitecontagem.yml new file mode 100644 index 0000000..ac0b62f --- /dev/null +++ b/ferramentas/artillery/load-tests-sitecontagem.yml @@ -0,0 +1,15 @@ +config: + environments: + local: + target: "http://localhost:8080/" + phases: + - name: Teste de Carga para 10 usuários + arrivalRate: 10 #determines the number of virtual users sent to the endpoints per second (10 users) + duration: 60 #determines that virtual users will be generated for 30 seconds +scenarios: + - name: "Teste de Carga para 10 usuários" + flow: + - get: + url: "/" + + diff --git a/ferramentas/artillery/results.json b/ferramentas/artillery/results.json new file mode 100644 index 0000000..2d32bdc --- /dev/null +++ b/ferramentas/artillery/results.json @@ -0,0 +1,595 @@ +{ + "aggregate": { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 600, + "vusers.created": 600, + "http.requests": 600, + "http.codes.200": 600, + "http.responses": 600, + "vusers.failed": 0, + "vusers.completed": 600 + }, + "rates": { + "http.request_rate": 10 + }, + "firstCounterAt": 1655757985400, + "firstHistogramAt": 1655757985447, + "lastCounterAt": 1655758044938, + "lastHistogramAt": 1655758044938, + "firstMetricAt": 1655757985400, + "lastMetricAt": 1655758044938, + "period": 1655758040000, + "summaries": { + "http.response_time": { + "min": 4, + "max": 54, + "count": 600, + "p50": 16, + "median": 16, + "p75": 22, + "p90": 26.8, + "p95": 30.3, + "p99": 37.7, + "p999": 49.9 + }, + "vusers.session_length": { + "min": 6.6, + "max": 67.7, + "count": 600, + "p50": 19.9, + "median": 19.9, + "p75": 26.3, + "p90": 32.1, + "p95": 36.2, + "p99": 47.9, + "p999": 64.7 + } + }, + "histograms": { + "http.response_time": { + "min": 4, + "max": 54, + "count": 600, + "p50": 16, + "median": 16, + "p75": 22, + "p90": 26.8, + "p95": 30.3, + "p99": 37.7, + "p999": 49.9 + }, + "vusers.session_length": { + "min": 6.6, + "max": 67.7, + "count": 600, + "p50": 19.9, + "median": 19.9, + "p75": 26.3, + "p90": 32.1, + "p95": 36.2, + "p99": 47.9, + "p999": 64.7 + } + } + }, + "intermediate": [ + { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 50, + "vusers.created": 50, + "http.requests": 50, + "http.codes.200": 50, + "http.responses": 50, + "vusers.failed": 0, + "vusers.completed": 50 + }, + "rates": { + "http.request_rate": 10 + }, + "http.request_rate": null, + "firstCounterAt": 1655757985400, + "firstHistogramAt": 1655757985447, + "lastCounterAt": 1655757989928, + "lastHistogramAt": 1655757989928, + "firstMetricAt": 1655757985400, + "lastMetricAt": 1655757989928, + "period": "1655757980000", + "summaries": { + "http.response_time": { + "min": 4, + "max": 42, + "count": 50, + "p50": 13.1, + "median": 13.1, + "p75": 19.9, + "p90": 32.8, + "p95": 37, + "p99": 39.3, + "p999": 39.3 + }, + "vusers.session_length": { + "min": 7, + "max": 56.4, + "count": 50, + "p50": 18.7, + "median": 18.7, + "p75": 24.8, + "p90": 39.3, + "p95": 42.5, + "p99": 54.1, + "p999": 54.1 + } + }, + "histograms": { + "http.response_time": { + "min": 4, + "max": 42, + "count": 50, + "p50": 13.1, + "median": 13.1, + "p75": 19.9, + "p90": 32.8, + "p95": 37, + "p99": 39.3, + "p999": 39.3 + }, + "vusers.session_length": { + "min": 7, + "max": 56.4, + "count": 50, + "p50": 18.7, + "median": 18.7, + "p75": 24.8, + "p90": 39.3, + "p95": 42.5, + "p99": 54.1, + "p999": 54.1 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 100, + "vusers.created": 100, + "http.requests": 100, + "http.codes.200": 100, + "http.responses": 100, + "vusers.failed": 0, + "vusers.completed": 100 + }, + "rates": { + "http.request_rate": 10 + }, + "http.request_rate": null, + "firstCounterAt": 1655757990400, + "firstHistogramAt": 1655757990409, + "lastCounterAt": 1655757999932, + "lastHistogramAt": 1655757999932, + "firstMetricAt": 1655757990400, + "lastMetricAt": 1655757999932, + "period": "1655757990000", + "summaries": { + "http.response_time": { + "min": 5, + "max": 31, + "count": 100, + "p50": 16, + "median": 16, + "p75": 22, + "p90": 26.8, + "p95": 27.9, + "p99": 30.9, + "p999": 30.9 + }, + "vusers.session_length": { + "min": 6.6, + "max": 39.9, + "count": 100, + "p50": 20.3, + "median": 20.3, + "p75": 26.3, + "p90": 32.8, + "p95": 34.8, + "p99": 39.3, + "p999": 39.3 + } + }, + "histograms": { + "http.response_time": { + "min": 5, + "max": 31, + "count": 100, + "p50": 16, + "median": 16, + "p75": 22, + "p90": 26.8, + "p95": 27.9, + "p99": 30.9, + "p999": 30.9 + }, + "vusers.session_length": { + "min": 6.6, + "max": 39.9, + "count": 100, + "p50": 20.3, + "median": 20.3, + "p75": 26.3, + "p90": 32.8, + "p95": 34.8, + "p99": 39.3, + "p999": 39.3 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 100, + "vusers.created": 100, + "http.requests": 100, + "http.codes.200": 100, + "http.responses": 100, + "vusers.failed": 0, + "vusers.completed": 100 + }, + "rates": { + "http.request_rate": 10 + }, + "http.request_rate": null, + "firstCounterAt": 1655758000399, + "firstHistogramAt": 1655758000407, + "lastCounterAt": 1655758009930, + "lastHistogramAt": 1655758009930, + "firstMetricAt": 1655758000399, + "lastMetricAt": 1655758009930, + "period": "1655758000000", + "summaries": { + "http.response_time": { + "min": 6, + "max": 54, + "count": 100, + "p50": 16.9, + "median": 16.9, + "p75": 23.8, + "p90": 30.9, + "p95": 34.1, + "p99": 49.9, + "p999": 49.9 + }, + "vusers.session_length": { + "min": 7.8, + "max": 67.7, + "count": 100, + "p50": 20.7, + "median": 20.7, + "p75": 29.1, + "p90": 37.7, + "p95": 46.1, + "p99": 64.7, + "p999": 64.7 + } + }, + "histograms": { + "http.response_time": { + "min": 6, + "max": 54, + "count": 100, + "p50": 16.9, + "median": 16.9, + "p75": 23.8, + "p90": 30.9, + "p95": 34.1, + "p99": 49.9, + "p999": 49.9 + }, + "vusers.session_length": { + "min": 7.8, + "max": 67.7, + "count": 100, + "p50": 20.7, + "median": 20.7, + "p75": 29.1, + "p90": 37.7, + "p95": 46.1, + "p99": 64.7, + "p999": 64.7 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 100, + "vusers.created": 100, + "http.requests": 100, + "http.codes.200": 100, + "http.responses": 100, + "vusers.failed": 0, + "vusers.completed": 100 + }, + "rates": { + "http.request_rate": 10 + }, + "http.request_rate": null, + "firstCounterAt": 1655758010399, + "firstHistogramAt": 1655758010409, + "lastCounterAt": 1655758019930, + "lastHistogramAt": 1655758019930, + "firstMetricAt": 1655758010399, + "lastMetricAt": 1655758019930, + "period": "1655758010000", + "summaries": { + "http.response_time": { + "min": 6, + "max": 33, + "count": 100, + "p50": 15, + "median": 15, + "p75": 19.9, + "p90": 24.8, + "p95": 26.8, + "p99": 30.3, + "p999": 30.3 + }, + "vusers.session_length": { + "min": 7.8, + "max": 36.8, + "count": 100, + "p50": 19.5, + "median": 19.5, + "p75": 24.3, + "p90": 30.3, + "p95": 32.1, + "p99": 35.5, + "p999": 35.5 + } + }, + "histograms": { + "http.response_time": { + "min": 6, + "max": 33, + "count": 100, + "p50": 15, + "median": 15, + "p75": 19.9, + "p90": 24.8, + "p95": 26.8, + "p99": 30.3, + "p999": 30.3 + }, + "vusers.session_length": { + "min": 7.8, + "max": 36.8, + "count": 100, + "p50": 19.5, + "median": 19.5, + "p75": 24.3, + "p90": 30.3, + "p95": 32.1, + "p99": 35.5, + "p999": 35.5 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 100, + "vusers.created": 100, + "http.requests": 100, + "http.codes.200": 100, + "http.responses": 100, + "vusers.failed": 0, + "vusers.completed": 100 + }, + "rates": { + "http.request_rate": 10 + }, + "http.request_rate": null, + "firstCounterAt": 1655758020399, + "firstHistogramAt": 1655758020406, + "lastCounterAt": 1655758029914, + "lastHistogramAt": 1655758029914, + "firstMetricAt": 1655758020399, + "lastMetricAt": 1655758029914, + "period": "1655758020000", + "summaries": { + "http.response_time": { + "min": 4, + "max": 35, + "count": 100, + "p50": 15, + "median": 15, + "p75": 21.1, + "p90": 24.8, + "p95": 26.8, + "p99": 30.9, + "p999": 30.9 + }, + "vusers.session_length": { + "min": 6.7, + "max": 39.5, + "count": 100, + "p50": 18, + "median": 18, + "p75": 24.3, + "p90": 29.1, + "p95": 31.5, + "p99": 36.2, + "p999": 36.2 + } + }, + "histograms": { + "http.response_time": { + "min": 4, + "max": 35, + "count": 100, + "p50": 15, + "median": 15, + "p75": 21.1, + "p90": 24.8, + "p95": 26.8, + "p99": 30.9, + "p999": 30.9 + }, + "vusers.session_length": { + "min": 6.7, + "max": 39.5, + "count": 100, + "p50": 18, + "median": 18, + "p75": 24.3, + "p90": 29.1, + "p95": 31.5, + "p99": 36.2, + "p999": 36.2 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 100, + "vusers.created": 100, + "http.requests": 100, + "http.codes.200": 100, + "http.responses": 100, + "vusers.failed": 0, + "vusers.completed": 100 + }, + "rates": { + "http.request_rate": 10 + }, + "http.request_rate": null, + "firstCounterAt": 1655758030399, + "firstHistogramAt": 1655758030408, + "lastCounterAt": 1655758039933, + "lastHistogramAt": 1655758039933, + "firstMetricAt": 1655758030399, + "lastMetricAt": 1655758039933, + "period": "1655758030000", + "summaries": { + "http.response_time": { + "min": 6, + "max": 35, + "count": 100, + "p50": 15, + "median": 15, + "p75": 21.1, + "p90": 26.8, + "p95": 27.9, + "p99": 32.1, + "p999": 32.1 + }, + "vusers.session_length": { + "min": 8.1, + "max": 40.5, + "count": 100, + "p50": 18.7, + "median": 18.7, + "p75": 25.3, + "p90": 30.9, + "p95": 33.5, + "p99": 37, + "p999": 37 + } + }, + "histograms": { + "http.response_time": { + "min": 6, + "max": 35, + "count": 100, + "p50": 15, + "median": 15, + "p75": 21.1, + "p90": 26.8, + "p95": 27.9, + "p99": 32.1, + "p999": 32.1 + }, + "vusers.session_length": { + "min": 8.1, + "max": 40.5, + "count": 100, + "p50": 18.7, + "median": 18.7, + "p75": 25.3, + "p90": 30.9, + "p95": 33.5, + "p99": 37, + "p999": 37 + } + } + }, + { + "counters": { + "vusers.created_by_name.Teste de Carga para 10 usuários": 50, + "vusers.created": 50, + "http.requests": 50, + "http.codes.200": 50, + "http.responses": 50, + "vusers.failed": 0, + "vusers.completed": 50 + }, + "rates": { + "http.request_rate": 10 + }, + "http.request_rate": null, + "firstCounterAt": 1655758040399, + "firstHistogramAt": 1655758040410, + "lastCounterAt": 1655758044938, + "lastHistogramAt": 1655758044938, + "firstMetricAt": 1655758040399, + "lastMetricAt": 1655758044938, + "period": "1655758040000", + "summaries": { + "http.response_time": { + "min": 6, + "max": 32, + "count": 50, + "p50": 16.9, + "median": 16.9, + "p75": 23.8, + "p90": 27.9, + "p95": 29.1, + "p99": 32.1, + "p999": 32.1 + }, + "vusers.session_length": { + "min": 9, + "max": 38.1, + "count": 50, + "p50": 20.7, + "median": 20.7, + "p75": 26.8, + "p90": 32.8, + "p95": 34.1, + "p99": 35.5, + "p999": 35.5 + } + }, + "histograms": { + "http.response_time": { + "min": 6, + "max": 32, + "count": 50, + "p50": 16.9, + "median": 16.9, + "p75": 23.8, + "p90": 27.9, + "p95": 29.1, + "p99": 32.1, + "p999": 32.1 + }, + "vusers.session_length": { + "min": 9, + "max": 38.1, + "count": 50, + "p50": 20.7, + "median": 20.7, + "p75": 26.8, + "p90": 32.8, + "p95": 34.1, + "p99": 35.5, + "p999": 35.5 + } + } + } + ] +} \ No newline at end of file diff --git a/ferramentas/locust/.DS_Store b/ferramentas/locust/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/ferramentas/locust/.DS_Store differ diff --git a/ferramentas/locust/100_usuarios.csv b/ferramentas/locust/100_usuarios.csv new file mode 100644 index 0000000..bc81838 --- /dev/null +++ b/ferramentas/locust/100_usuarios.csv @@ -0,0 +1,3 @@ +Type,Name,Request Count,Failure Count,Median Response Time,Average Response Time,Min Response Time,Max Response Time,Average Content Size,Requests/s,Failures/s,50%,66%,75%,80%,90%,95%,98%,99%,99.9%,99.99%,100% +GET,//delay/1,1532,2,1000.0,1018.4211816886495,3.0486249997920822,1169.0855000006195,327.5718015665796,25.47821633533021,0.033261379027846226,1000,1000,1000,1000,1000,1100,1100,1200,1200,1200,1200 +,Aggregated,1532,2,1000.0,1018.4211816886495,3.0486249997920822,1169.0855000006195,327.5718015665796,25.47821633533021,0.033261379027846226,1000,1000,1000,1000,1000,1100,1100,1200,1200,1200,1200 diff --git a/ferramentas/locust/__pycache__/locustfile.cpython-310.pyc b/ferramentas/locust/__pycache__/locustfile.cpython-310.pyc new file mode 100644 index 0000000..258025f Binary files /dev/null and b/ferramentas/locust/__pycache__/locustfile.cpython-310.pyc differ diff --git a/ferramentas/locust/__pycache__/locustfile2.cpython-310.pyc b/ferramentas/locust/__pycache__/locustfile2.cpython-310.pyc new file mode 100644 index 0000000..5497de0 Binary files /dev/null and b/ferramentas/locust/__pycache__/locustfile2.cpython-310.pyc differ diff --git a/ferramentas/locust/locustfile.py b/ferramentas/locust/locustfile.py new file mode 100644 index 0000000..834cfea --- /dev/null +++ b/ferramentas/locust/locustfile.py @@ -0,0 +1,24 @@ +from locust import HttpUser, LoadTestShape, task, between + +class TestLocust(HttpUser): + wait_time = between(1, 5) + + @task + def get_delay_1(self): + self.client.get("/delay/1") + +class StagesShape(LoadTestShape): + + stages = [ + {"duration": 60, "users": 10, "spawn_rate": 10}, + ] + + def tick(self): + run_time = self.get_run_time() + + for stage in self.stages: + if run_time < stage["duration"]: + tick_data = (stage["users"], stage["spawn_rate"]) + return tick_data + + return None diff --git a/ferramentas/locust/locustfile2.py b/ferramentas/locust/locustfile2.py new file mode 100644 index 0000000..8bceb9d --- /dev/null +++ b/ferramentas/locust/locustfile2.py @@ -0,0 +1,24 @@ +from locust import HttpUser, LoadTestShape, task, between + +class TestLocust(HttpUser): + wait_time = between(1, 5) + + @task + def get_delay_1(self): + self.client.get("/delay/1") + +class StagesShape(LoadTestShape): + + stages = [ + {"duration": 60, "users": 100, "spawn_rate": 100}, + ] + + def tick(self): + run_time = self.get_run_time() + + for stage in self.stages: + if run_time < stage["duration"]: + tick_data = (stage["users"], stage["spawn_rate"]) + return tick_data + + return None diff --git a/ferramentas/locust/requests_1655739496.893311.csv b/ferramentas/locust/requests_1655739496.893311.csv new file mode 100644 index 0000000..33e027c --- /dev/null +++ b/ferramentas/locust/requests_1655739496.893311.csv @@ -0,0 +1,3 @@ +Type,Name,Request Count,Failure Count,Median Response Time,Average Response Time,Min Response Time,Max Response Time,Average Content Size,Requests/s,Failures/s,50%,66%,75%,80%,90%,95%,98%,99%,99.9%,99.99%,100% +GET,//delay/1,156,0,1006.9906250000713,1024.5761359615071,1006.9906250000713,1116.8953329997748,328.0,2.602620312794178,0.0,1000,1000,1000,1000,1000,1100,1100,1100,1100,1100,1100 +,Aggregated,156,0,1006.9906250000713,1024.5761359615071,1006.9906250000713,1116.8953329997748,328.0,2.602620312794178,0.0,1000,1000,1000,1000,1000,1100,1100,1100,1100,1100,1100 diff --git a/ferramentas/vegeta/.DS_Store b/ferramentas/vegeta/.DS_Store new file mode 100644 index 0000000..d1ea3d4 Binary files /dev/null and b/ferramentas/vegeta/.DS_Store differ diff --git a/ferramentas/vegeta/100_usuarios.json b/ferramentas/vegeta/100_usuarios.json new file mode 100644 index 0000000..ef4a86b --- /dev/null +++ b/ferramentas/vegeta/100_usuarios.json @@ -0,0 +1 @@ +{"latencies":{"total":26417137006,"mean":4402856,"50th":4449023,"90th":5941513,"95th":6444349,"99th":8062770,"max":34624541,"min":1692625},"bytes_in":{"total":57558000,"mean":9593},"bytes_out":{"total":0,"mean":0},"earliest":"2022-06-20T12:09:03.128061583-03:00","latest":"2022-06-20T12:10:03.117170041-03:00","end":"2022-06-20T12:10:03.121499083-03:00","duration":59989108458,"wait":4329042,"requests":6000,"rate":100.01815586575624,"throughput":100.01093869641993,"success":1,"status_codes":{"200":6000},"errors":[]} diff --git a/ferramentas/vegeta/100_usuarios.png b/ferramentas/vegeta/100_usuarios.png new file mode 100644 index 0000000..65ac3d3 Binary files /dev/null and b/ferramentas/vegeta/100_usuarios.png differ diff --git a/ferramentas/vegeta/10_usuarios.json b/ferramentas/vegeta/10_usuarios.json new file mode 100644 index 0000000..6b97f4a --- /dev/null +++ b/ferramentas/vegeta/10_usuarios.json @@ -0,0 +1 @@ +{"latencies":{"total":5181250290,"mean":8635417,"50th":8890712,"90th":11544714,"95th":12322104,"99th":17764291,"max":29780875,"min":2572541},"bytes_in":{"total":5755800,"mean":9593},"bytes_out":{"total":0,"mean":0},"earliest":"2022-06-20T12:07:32.886207083-03:00","latest":"2022-06-20T12:08:32.78626-03:00","end":"2022-06-20T12:08:32.791987292-03:00","duration":59900052917,"wait":5727292,"requests":600,"rate":10.016685641853854,"throughput":10.015727996642608,"success":1,"status_codes":{"200":600},"errors":[]} diff --git a/ferramentas/vegeta/10_usuarios.png b/ferramentas/vegeta/10_usuarios.png new file mode 100644 index 0000000..6c49767 Binary files /dev/null and b/ferramentas/vegeta/10_usuarios.png differ diff --git a/ferramentas/vegeta/comandos.txt b/ferramentas/vegeta/comandos.txt new file mode 100644 index 0000000..d06d2d8 --- /dev/null +++ b/ferramentas/vegeta/comandos.txt @@ -0,0 +1,9 @@ +brew update && brew install vegeta + +10 usuários: +echo "GET http://localhost:8080" | vegeta attack -rate=10 -duration=60s | tee results.bin | vegeta report +vegeta report -type=json results.bin > 10_usuarios.json + +100 usuários: +echo "GET http://localhost:8080" | vegeta attack -rate=100 -duration=60s | tee results.bin | vegeta report +vegeta report -type=json results.bin > 100_usuarios.json diff --git a/ferramentas/vegeta/explicacao.txt b/ferramentas/vegeta/explicacao.txt new file mode 100644 index 0000000..c53d0b5 --- /dev/null +++ b/ferramentas/vegeta/explicacao.txt @@ -0,0 +1,12 @@ +* Requests: shows the total number of requests sent during the test and the rate of the requests +* Duration: shows the total duration of the test, the attack period simulating load on the application and the wait time +* Latencies: shows the mean latency, 50th, 95th an 99th percentiles, respectively, of the latencies of all requests in an attack as well as the maximum latency recognized. +* Bytes In and Bytes Out shows: + * The total number of bytes sent (out) or received (in) with the request or response bodies. + * The mean number of bytes sent (out) or received (in) with the request or response bodies. +* Success shows the percentiles of successful requests sent to the application +* Status Codes provides a counter of the HTTP response codes received and their oc + + +-duration flag specifies the duration of the attack, +-rate flag defines the number of requests per time unit (the default value is set to 50/1s): \ No newline at end of file diff --git "a/ferramentas/vegeta/metrics_1000_usu\303\241rios.json" "b/ferramentas/vegeta/metrics_1000_usu\303\241rios.json" new file mode 100644 index 0000000..c1e4ca4 --- /dev/null +++ "b/ferramentas/vegeta/metrics_1000_usu\303\241rios.json" @@ -0,0 +1,42 @@ +{ + "latencies": { + "total": 523314408551944, + "mean": 8721906809, + "50th": 86897, + "90th": 30000573893, + "95th": 30001706301, + "99th": 30003023689, + "max": 30034085125, + "min": 17875 + }, + "bytes_in": { + "total": 64791122, + "mean": 1079.8520333333333 + }, + "bytes_out": { + "total": 0, + "mean": 0 + }, + "earliest": "2022-05-12T20:13:43.620766458-03:00", + "latest": "2022-05-12T20:14:43.619579-03:00", + "end": "2022-05-12T20:15:09.844883416-03:00", + "duration": 59998812542, + "wait": 26225304416, + "requests": 60000, + "rate": 1000.0197913583568, + "throughput": 78.3307529062883, + "success": 0.11256666666666666, + "status_codes": { + "0": 53246, + "200": 6754 + }, + "errors": [ + "Get \"http://localhost:8080\": read tcp [::1]:57264-\u003e[::1]:8080: read: connection reset by peer", + "Get \"http://localhost:8080\": dial tcp: lookup localhost: no such host", + "Get \"http://localhost:8080\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)", + "Get \"http://localhost:8080\": dial tcp 0.0.0.0:0-\u003e[::1]:8080: socket: too many open files", + "Get \"http://localhost:8080\": dial tcp 0.0.0.0:0-\u003e127.0.0.1:8080: socket: too many open files", + "Get \"http://localhost:8080\": dial tcp 0.0.0.0:0-\u003e[::1]:8080: bind: resource temporarily unavailable", + "Get \"http://localhost:8080\": dial tcp 0.0.0.0:0-\u003e[::1]:8080: connect: operation timed out" + ] +} \ No newline at end of file diff --git "a/ferramentas/vegeta/metrics_100_usu\303\241rios.json" "b/ferramentas/vegeta/metrics_100_usu\303\241rios.json" new file mode 100644 index 0000000..1af86a1 --- /dev/null +++ "b/ferramentas/vegeta/metrics_100_usu\303\241rios.json" @@ -0,0 +1,33 @@ +{ + "latencies": { + "total": 69959536568, + "mean": 11659922, + "50th": 8385660, + "90th": 9770483, + "95th": 17894245, + "99th": 115010234, + "max": 219222625, + "min": 7661333 + }, + "bytes_in": { + "total": 57558000, + "mean": 9593 + }, + "bytes_out": { + "total": 0, + "mean": 0 + }, + "earliest": "2022-05-12T20:11:40.612051208-03:00", + "latest": "2022-05-12T20:12:40.601148083-03:00", + "end": "2022-05-12T20:12:40.609283875-03:00", + "duration": 59989096875, + "wait": 8135792, + "requests": 6000, + "rate": 100.01817517777059, + "throughput": 100.00461243440236, + "success": 1, + "status_codes": { + "200": 6000 + }, + "errors": [] +} \ No newline at end of file diff --git "a/ferramentas/vegeta/metrics_10_usu\303\241rios.json" "b/ferramentas/vegeta/metrics_10_usu\303\241rios.json" new file mode 100644 index 0000000..38a02f0 --- /dev/null +++ "b/ferramentas/vegeta/metrics_10_usu\303\241rios.json" @@ -0,0 +1,33 @@ +{ + "latencies": { + "total": 16613165077, + "mean": 27688608, + "50th": 28102979, + "90th": 31658284, + "95th": 32302269, + "99th": 34398812, + "max": 36303792, + "min": 16658292 + }, + "bytes_in": { + "total": 5755800, + "mean": 9593 + }, + "bytes_out": { + "total": 0, + "mean": 0 + }, + "earliest": "2022-05-12T20:09:50.007369041-03:00", + "latest": "2022-05-12T20:10:49.905921666-03:00", + "end": "2022-05-12T20:10:49.937498333-03:00", + "duration": 59898552625, + "wait": 31576667, + "requests": 600, + "rate": 10.016936531945124, + "throughput": 10.011658694687537, + "success": 1, + "status_codes": { + "200": 600 + }, + "errors": [] +} \ No newline at end of file diff --git a/ferramentas/vegeta/results.bin b/ferramentas/vegeta/results.bin new file mode 100644 index 0000000..53cab53 Binary files /dev/null and b/ferramentas/vegeta/results.bin differ diff --git a/grafana/datasources/Prometheus.json b/grafana/datasources/Prometheus.json new file mode 100644 index 0000000..2ebef98 --- /dev/null +++ b/grafana/datasources/Prometheus.json @@ -0,0 +1,7 @@ +{ + "name":"prometheus", + "type":"prometheus", + "url":"http://prometheus:9090", + "access":"proxy", + "basicAuth":false + } \ No newline at end of file diff --git a/grafana/setup.sh b/grafana/setup.sh new file mode 100644 index 0000000..35a0868 --- /dev/null +++ b/grafana/setup.sh @@ -0,0 +1,85 @@ +#!/bin/bash + +# Taken from https://github.com/grafana/grafana-docker/issues/74 + +# Script to configure grafana datasources and dashboards. +# Intended to be run before grafana entrypoint... +# Image: grafana/grafana:4.1.2 +# ENTRYPOINT [\"/run.sh\"]" + +GRAFANA_URL=${GRAFANA_URL:-http://$GF_SECURITY_ADMIN_USER:$GF_SECURITY_ADMIN_PASSWORD@localhost:3000} +#GRAFANA_URL=http://grafana-plain.k8s.playground1.aws.ad.zopa.com +DATASOURCES_PATH=${DATASOURCES_PATH:-/etc/grafana/datasources} +DASHBOARDS_PATH=${DASHBOARDS_PATH:-/etc/grafana/dashboards} + +# Generic function to call the Vault API +grafana_api() { + local verb=$1 + local url=$2 + local params=$3 + local bodyfile=$4 + local response + local cmd + + cmd="curl -L -s --fail -H \"Accept: application/json\" -H \"Content-Type: application/json\" -X ${verb} -k ${GRAFANA_URL}${url}" + [[ -n "${params}" ]] && cmd="${cmd} -d \"${params}\"" + [[ -n "${bodyfile}" ]] && cmd="${cmd} --data @${bodyfile}" + echo "Running ${cmd}" + #eval ${cmd} || return 1 + return 0 +} + +wait_for_api() { + while ! grafana_api GET /api/user/preferences + do + sleep 5 + done +} + +install_datasources() { + local datasource + + for datasource in ${DATASOURCES_PATH}/*.json + do + if [[ -f "${datasource}" ]]; then + echo "Installing datasource ${datasource}" + if grafana_api POST /api/datasources "" "${datasource}"; then + echo "installed ok" + else + echo "install failed" + fi + fi + done +} + +install_dashboards() { + local dashboard + + for dashboard in ${DASHBOARDS_PATH}/*.json + do + if [[ -f "${dashboard}" ]]; then + echo "Installing dashboard ${dashboard}" + + echo "{\"dashboard\": `cat $dashboard`}" > "${dashboard}.wrapped" + + if grafana_api POST /api/dashboards/db "" "${dashboard}.wrapped"; then + echo "installed ok" + else + echo "install failed" + fi + + rm "${dashboard}.wrapped" + fi + done +} + +configure_grafana() { + wait_for_api + install_datasources + install_dashboards +} + +echo "Running configure_grafana in the background..." +configure_grafana & +/run.sh +exit 0 diff --git a/prometheus.yml b/prometheus.yml new file mode 100644 index 0000000..8af25d5 --- /dev/null +++ b/prometheus.yml @@ -0,0 +1,23 @@ +global: + scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. + evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. + +alerting: + alertmanagers: + - static_configs: + - targets: + # - alertmanager:9093 + +# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. +rule_files: + # - "first_rules.yml" + # - "second_rules.yml" + +scrape_configs: + - job_name: "prometheus" + static_configs: + - targets: ["localhost:9090"] + + - job_name: 'statsd' + static_configs: + - targets: ['statsd:9102'] \ No newline at end of file diff --git a/test-mapping.conf b/test-mapping.conf new file mode 100644 index 0000000..0ed93c5 --- /dev/null +++ b/test-mapping.conf @@ -0,0 +1,19 @@ +mappings: + - match: "*.gunicorn.request.status.*" + help: "gunicorn response code" + name: "gunicorn_response_code" + labels: + app: "$1" + status: "$2" + - match: "*.gunicorn.workers" + name: "gunicorn_workers" + labels: + app: "$1" + - match: "*.gunicorn.requests" + name: "gunicorn_requests" + labels: + app: "$1" + - match: "*.gunicorn.request.duration" + name: "gunicorn_request_duration" + labels: + app: "$1"