[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-grid5k] branch master updated (0c6cce0 -> fce059e)
From: |
gnunet |
Subject: |
[taler-grid5k] branch master updated (0c6cce0 -> fce059e) |
Date: |
Fri, 10 Jun 2022 11:54:31 +0200 |
This is an automated email from the git hooks/post-receive script.
marco-boss pushed a change to branch master
in repository grid5k.
from 0c6cce0 Merge branch 'node-setup'
new 9100c9b double denominations
new 744a2b1 fix benchmark
new f1ae478 remove additional coins
new 9b9f305 no fees
new aaa9061 fix
new 964dcdd fix template
new bd3955b tets nginx local logs
new 257ab64 remove custom rsyslog
new 8884c49 nginx log
new 2e09a8a minor changes
new 596f1ac add num deposits
new fce059e integrate final changes
The 12 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
additional/grafana/load-statistics.json | 229 ++++++++++++++++++++++++++-
configs/etc/monitor/promtail-nginx.yaml | 87 ++++++++++
configs/etc/monitor/promtail.yaml | 5 +-
configs/etc/taler/conf.d/exchange-coins.conf | 6 +-
experiment/README.md | 10 +-
experiment/env | 9 ++
experiment/scripts/benchmark.sh | 10 +-
experiment/scripts/database.sh | 2 +-
8 files changed, 343 insertions(+), 15 deletions(-)
create mode 100644 configs/etc/monitor/promtail-nginx.yaml
diff --git a/additional/grafana/load-statistics.json
b/additional/grafana/load-statistics.json
index 58dd08f..f62ee62 100644
--- a/additional/grafana/load-statistics.json
+++ b/additional/grafana/load-statistics.json
@@ -1574,7 +1574,7 @@
"gridPos": {
"h": 9,
"w": 12,
- "x": 6,
+ "x": 0,
"y": 57
},
"id": 16,
@@ -1616,6 +1616,231 @@
],
"title": "Proxy Response Time vs Slow Queries",
"type": "timeseries"
+ },
+ {
+ "description": "",
+ "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": "linear",
+ "lineWidth": 2,
+ "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
+ }
+ ]
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byRegexp",
+ "options": "Network (.*)"
+ },
+ "properties": [
+ {
+ "id": "custom.axisPlacement",
+ "value": "right"
+ },
+ {
+ "id": "unit",
+ "value": "bps"
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Requests"
+ },
+ "properties": [
+ {
+ "id": "custom.axisLabel",
+ "value": "Requests / Second"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 9,
+ "w": 12,
+ "x": 12,
+ "y": 57
+ },
+ "id": 24,
+ "maxDataPoints": 500,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom"
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "exemplar": true,
+ "expr": "sum(rate(nginx_http_requests_total{} [$__rate_interval]))",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "Requests",
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "exemplar": true,
+ "expr":
"sum(rate(node_network_receive_bytes_total{component=\"proxy\"}[$__rate_interval])
+ rate(node_network_transmit_bytes_total{component=\"proxy\"}
[$__rate_interval]))*8",
+ "hide": false,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "Network Bandwidth",
+ "refId": "B"
+ }
+ ],
+ "title": "[Exch Proxy] Requests vs Network Traffic",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "type": "datasource",
+ "uid": "-- Mixed --"
+ },
+ "description": "This shows if Nginx reports more requests than we
receive in Promtail - if so, probably the local syslog receivers of Nginx are
too slow.",
+ "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": "linear",
+ "lineWidth": 2,
+ "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
+ }
+ ]
+ },
+ "unit": "short"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 9,
+ "w": 12,
+ "x": 6,
+ "y": 66
+ },
+ "id": 25,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom"
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "exemplar": true,
+ "expr": "sum(rate(taler_requests_total_requests{}[2m]))",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "Promtail",
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "type": "prometheus",
+ "uid": "${DS_PROMETHEUS}"
+ },
+ "exemplar": true,
+ "expr": "sum(rate(nginx_http_requests_total{}[2m]))",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "Nginx",
+ "refId": "B"
+ }
+ ],
+ "title": "Measured Requests",
+ "type": "timeseries"
}
],
"refresh": "10s",
@@ -1636,6 +1861,6 @@
"timezone": "",
"title": "Load Statistics",
"uid": "rkyhDAt7z",
- "version": 77,
+ "version": 81,
"weekStart": ""
}
\ No newline at end of file
diff --git a/configs/etc/monitor/promtail-nginx.yaml
b/configs/etc/monitor/promtail-nginx.yaml
new file mode 100644
index 0000000..812801d
--- /dev/null
+++ b/configs/etc/monitor/promtail-nginx.yaml
@@ -0,0 +1,87 @@
+server:
+ http_listen_port: 9080
+ grpc_listen_port: 0
+
+positions:
+ filename: /tmp/positions.yaml
+
+clients:
+ - url: http://monitor.perf.taler:80/loki/api/v1/push
+
+scrape_configs:
+
+- job_name: nginx
+ static_configs:
+ - targets:
+ - localhost
+ labels:
+ job: nginx
+ __path__: /var/log/nginx/*log
+ relabel_configs:
+ - source_labels: [__syslog_message_app_name]
+ target_label: app
+ pipeline_stages:
+ - match:
+ selector: '{job="proxy"}'
+ stages:
+ - regex:
+ expression:
'uri=/(?P<ep>[a-zA-Z]+)(?:/\w+)?(?:/(?P<act>[a-zA-Z-]+))?
s=(?P<status>\d{3}).*urt=(?P<urt>\d+\.\d+|-) rt=(?P<response_time>\d+\.\d+)
rl=(?P<request_length>\d+) bs=(?P<bytes_sent>\d+)'
+ - template:
+ source: endpoint
+ template: '{{ printf "%s-%s" .ep .act | trimSuffix "-" }}'
+ - template:
+ source: upstream_response_time
+ template: '{{ .urt | replace "-" "0" }}'
+ - labels:
+ endpoint:
+ status:
+ - metrics:
+ total_requests:
+ prefix: 'taler_requests_'
+ type: Counter
+ description: "Total Requests"
+ config:
+ match_all: true
+ action: inc
+ # Used to calculate 'over_time' statistics
+ response_time:
+ prefix: 'taler_requests_'
+ type: Gauge
+ description: "Time taken for Nginx to respond"
+ source: response_time
+ max_idle_duration: 24h
+ config:
+ action: set
+ #
https://www.robustperception.io/how-does-a-prometheus-histogram-work
+ request_length_hist:
+ prefix: 'taler_requests_'
+ type: Histogram
+ description: "Request Length reported from Nginx"
+ source: request_length
+ max_idle_duration: 24h
+ config:
+ buckets: [1,10,50,100,200,500,1000,2000,5000]
+ bytes_sent_hist:
+ prefix: 'taler_requests_'
+ type: Histogram
+ description: "Number of bytes sent, reported from Nginx"
+ source: bytes_sent
+ max_idle_duration: 24h
+ config:
+ buckets: [1,10,50,100,200,500,1000,2000,5000]
+ response_time_hist:
+ prefix: 'taler_requests_'
+ type: Histogram
+ description: "Time taken for Nginx to respond"
+ source: response_time
+ max_idle_duration: 24h
+ config:
+ buckets:
[0.001,0.0025,0.005,0.010,0.025,0.050,0.1,0.25,0.5,1,2,5]
+ upstream_response_time_hist:
+ prefix: 'taler_requests_'
+ type: Histogram
+ description: "Time taken for the Exchange to respond to Nginx"
+ source: upstream_response_time
+ max_idle_duration: 24h
+ config:
+ buckets:
[0.001,0.0025,0.005,0.010,0.025,0.050,0.1,0.25,0.5,1,2,5]
diff --git a/configs/etc/monitor/promtail.yaml
b/configs/etc/monitor/promtail.yaml
index f87698d..9187129 100644
--- a/configs/etc/monitor/promtail.yaml
+++ b/configs/etc/monitor/promtail.yaml
@@ -77,10 +77,13 @@ scrape_configs:
selector: '{job="proxy"}'
stages:
- regex:
- expression:
'uri=/(?P<ep>[a-zA-Z]+)(?:/\w+)?(?:/(?P<act>[a-zA-Z-]+))?
s=(?P<status>\d{3}).*urt=(?P<upstream_response_time>\d+\.\d+)
rt=(?P<response_time>\d+\.\d+) rl=(?P<request_length>\d+)
bs=(?P<bytes_sent>\d+)'
+ expression:
'uri=/(?P<ep>[a-zA-Z]+)(?:/\w+)?(?:/(?P<act>[a-zA-Z-]+))?
s=(?P<status>\d{3}).*urt=(?P<urt>\d+\.\d+|-) rt=(?P<response_time>\d+\.\d+)
rl=(?P<request_length>\d+) bs=(?P<bytes_sent>\d+)'
- template:
source: endpoint
template: '{{ printf "%s-%s" .ep .act | trimSuffix "-" }}'
+ - template:
+ source: upstream_response_time
+ template: '{{ .urt | replace "-" "0" }}'
- labels:
endpoint:
status:
diff --git a/configs/etc/taler/conf.d/exchange-coins.conf
b/configs/etc/taler/conf.d/exchange-coins.conf
index 5c12389..c3dcacc 100644
--- a/configs/etc/taler/conf.d/exchange-coins.conf
+++ b/configs/etc/taler/conf.d/exchange-coins.conf
@@ -7,7 +7,7 @@ DURATION_WITHDRAW = 7 days
DURATION_SPEND = 2 years
DURATION_LEGAL = 6 years
FEE_WITHDRAW = KUDOS:0
-FEE_DEPOSIT = KUDOS:1
+FEE_DEPOSIT = KUDOS:0
FEE_REFRESH = KUDOS:0
FEE_REFUND = KUDOS:0
RSA_KEYSIZE = <RSA_KEY_SIZE_HERE>
@@ -19,7 +19,7 @@ DURATION_WITHDRAW = 7 days
DURATION_SPEND = 2 years
DURATION_LEGAL = 6 years
FEE_WITHDRAW = KUDOS:0
-FEE_DEPOSIT = KUDOS:1
+FEE_DEPOSIT = KUDOS:0
FEE_REFRESH = KUDOS:0
FEE_REFUND = KUDOS:0
RSA_KEYSIZE = <RSA_KEY_SIZE_HERE>
@@ -31,7 +31,7 @@ DURATION_WITHDRAW = 7 days
DURATION_SPEND = 2 years
DURATION_LEGAL = 6 years
FEE_WITHDRAW = KUDOS:0
-FEE_DEPOSIT = KUDOS:1
+FEE_DEPOSIT = KUDOS:0
FEE_REFRESH = KUDOS:0
FEE_REFUND = KUDOS:0
RSA_KEYSIZE = <RSA_KEY_SIZE_HERE>
diff --git a/experiment/README.md b/experiment/README.md
index 79c5277..015ff3c 100644
--- a/experiment/README.md
+++ b/experiment/README.md
@@ -86,18 +86,22 @@ processes would have to be restarted afterwards.
**NOTE** On `taler-perf`, when not using a terminal opened from jFed make sure
to forward the ssh-agent
to make the script work. E.g. `ssh -A graoully-3.nancy.grid5000.fr`
(from an access machine).
-To add more exchange processes run `taler-perf stop exchange <NUM>` on any node
+To add more exchange processes run `taler-perf start exchange <NUM>` on any
node
+To add more wirewatch processes run `taler-perf start wirewatch <NUM>` on any
node
To add more wallet processes run `taler-perf start wallet <NUM>` on any node
They can also be stopped in the same way: `taler-perf stop <KIND> <NUM>`
### Experiment Persistence
+**Please make sure that important panel changes in Grafana are saved into the
json files in `additonal/grafana`**
+**This can be done clicking the share button in the top left corner of a
dashboard then `Export` enable `Export for sharing externally` and finally
`Save to file`.**
+
The script `../additional/persist.sh` can be used to backup and clean the data
in the grid5k NFS.
-This archive created can then be passed to `../additional/recover.sh`, which
will run a local Grafana setup
+This archive created can then be passed to `../additional/recover/run.sh`,
which will run a local Grafana setup
in which the experiment can be inspected again.
-For this to work the service `taler-databackup` using `scripts/data-backup.sh`
is run periodically.
+For this to work the service `taler-databackup` using
`scripts/prometheus-backup.sh` is run periodically.
Loki data is directly written to the NFS. For the best results it is needed to
stop loki on the `monitor` node
before an experiment ends - otherwise some of the loki data might become
corrupt.
diff --git a/experiment/env b/experiment/env
index b05e9be..fdf256e 100644
--- a/experiment/env
+++ b/experiment/env
@@ -118,6 +118,15 @@ TALER_WALLET_INSECURE_TRUST_EXCHANGE=1
# Do batch withdrawals of a reserve rather than single coins
TALER_WALLET_BATCH_WITHDRAWAL=1
+# Number of deposits per wallet iteration (withdraw)
+# Amount to withdraw is caluclated as follows:
+# (num_deposits + 1) * 10
+# This must also be configured in WITHDRAW ONLY
+NUM_DEPOSITS=20
+# If the number of deposits should be selected randomly
+# from 1 to NUM_DEPOSITS
+RAND_DEPOSITS=true
+
# Initial number of exchange processes to run.
# default = 10
# Start another bunch with `taler-perf start exchange <N>`
diff --git a/experiment/scripts/benchmark.sh b/experiment/scripts/benchmark.sh
index 4466923..1861aeb 100755
--- a/experiment/scripts/benchmark.sh
+++ b/experiment/scripts/benchmark.sh
@@ -27,9 +27,8 @@ function start_wallet_bench() {
LOG_LEVEL=INFO
fi
- NUM_DEPOSITS=$(($RANDOM % 21))
- if [[ ${WALLET_WITHDRAW_ONLY} == "true" ]]; then
- NUM_DEPOSITS=0
+ if [[ "${RAND_DEPOSITS}" == "true" ]]; then
+ NUM_DEPOSITS=$(($RANDOM % ${NUM_DEPOSITS} + 1))
fi
if [[ "${WALLET_BENCHMARK}" == bench3 ]] && \
@@ -45,7 +44,7 @@ function start_wallet_bench() {
\"paytoTemplate\":
\"payto://x-taler-bank/bank.${DNS_ZONE}/merchant-\${id}?receiver-name=merchant\",
\"randomAlg\": \"${WALLET_MERCHANT_SELECTION}\",
\"numMerchants\": ${WALLET_NUM_MERCHANTS},
- \"iterations\": 1000,
+ \"iterations\": 500,
\"deposits\": ${NUM_DEPOSITS},
\"restartAfter\": 2
}"
@@ -62,8 +61,9 @@ function start_wallet_bench() {
\"bank\": \"${PROTO}://bank.${DNS_ZONE}/\",
\"currency\": \"KUDOS\",
\"payto\":
\"payto://x-taler-bank/bank.${DNS_ZONE}/merchant-1?receiver-name=merchant-1\",
- \"iterations\": 1000,
+ \"iterations\": 500,
\"deposits\": ${NUM_DEPOSITS},
+ \"withdrawOnly\": ${WALLET_WITHDRAW_ONLY},
\"restartAfter\": 2
}"
fi
diff --git a/experiment/scripts/database.sh b/experiment/scripts/database.sh
index 17fb0ab..58e0027 100755
--- a/experiment/scripts/database.sh
+++ b/experiment/scripts/database.sh
@@ -42,7 +42,7 @@ function setup_disks() {
# Setup Postgres to use RAM instead of disks to store data
function setup_ram_storage() {
- SIZE=$(($(awk '/MemTotal/ {print $2}' /proc/meminfo) / 4))
+ SIZE=$(($(awk '/MemTotal/ {print $2}' /proc/meminfo) / 2))
if ! df | grep -q /tmp/postgresql; then
mv /tmp/postgresql /tmp/postgresql.bak
mkdir /tmp/postgresql
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-grid5k] branch master updated (0c6cce0 -> fce059e),
gnunet <=
- [taler-grid5k] 02/12: fix benchmark, gnunet, 2022/06/10
- [taler-grid5k] 01/12: double denominations, gnunet, 2022/06/10
- [taler-grid5k] 08/12: remove custom rsyslog, gnunet, 2022/06/10
- [taler-grid5k] 06/12: fix template, gnunet, 2022/06/10
- [taler-grid5k] 11/12: add num deposits, gnunet, 2022/06/10
- [taler-grid5k] 03/12: remove additional coins, gnunet, 2022/06/10
- [taler-grid5k] 04/12: no fees, gnunet, 2022/06/10
- [taler-grid5k] 10/12: minor changes, gnunet, 2022/06/10
- [taler-grid5k] 05/12: fix, gnunet, 2022/06/10
- [taler-grid5k] 09/12: nginx log, gnunet, 2022/06/10