summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2024-03-13 19:40:47 +0100
committerFlorian Dold <florian@dold.me>2024-03-13 20:52:15 +0100
commita5f2ba58fe7ec9e0bd7fac57c70afafc8342b754 (patch)
tree0aed05174d53349ef7bf4e373a220f1ff75c2fcc
parent53e16fac5c7c39ea72f9c8e99113b7cec4bdc70d (diff)
downloaddeployment-a5f2ba58fe7ec9e0bd7fac57c70afafc8342b754.tar.gz
deployment-a5f2ba58fe7ec9e0bd7fac57c70afafc8342b754.tar.bz2
deployment-a5f2ba58fe7ec9e0bd7fac57c70afafc8342b754.zip
diagnostics
-rwxr-xr-xregional-currency/diagnose.sh122
1 files changed, 122 insertions, 0 deletions
diff --git a/regional-currency/diagnose.sh b/regional-currency/diagnose.sh
new file mode 100755
index 0000000..b76deca
--- /dev/null
+++ b/regional-currency/diagnose.sh
@@ -0,0 +1,122 @@
+#!/usr/bin/env bash
+
+# This file is in the public domain.
+
+# Script for basic diagnostics of a Taler regio deployment.
+# @author Florian Dold <dold@taler.net>
+
+if [ "$(id -u)" -ne 0 ]; then
+ echo "FATAL: Please run as root." >&2
+ exit 1
+fi
+
+libeufin_bank_db=$(libeufin-bank config get libeufin-bankdb-postgres config)
+libeufin_nexus_db=$(libeufin-nexus config get libeufin-nexusdb-postgres config)
+exchange_db=$(taler-config -s exchangedb-postgres -o config)
+
+if [[ $libeufin_nexus_db != $libeufin_bank_db ]]; then
+ echo "FATAL: libeufin-bank and libeufin-nexus don't share the same database" >&2
+ exit 1
+fi
+
+libeufin_db=$libeufin_bank_db
+
+# runsql db RESNAME < query
+function runsql() {
+ local sql
+ read -r -d '' sql
+ res=$(cd / && sudo -u postgres psql "$1" -t --csv -c "$sql")
+ printf -v "$2" '%s' "$res"
+}
+
+#
+# Check for conversion trigger
+#
+
+runsql "$libeufin_db" have_conversion_triggers <<EOF
+select count(*) from information_schema.triggers
+ where trigger_schema='libeufin_nexus'
+ and trigger_name='cashin_link';
+EOF
+
+echo "have_conversion_triggers" $have_conversion_triggers
+
+#
+# Check for transactions
+#
+runsql "$libeufin_db" num_nexus_incoming_transactions <<EOF
+select count(*) from libeufin_nexus.incoming_transactions;
+EOF
+echo num_nexus_incoming_transactions: $num_nexus_incoming_transactions
+
+runsql "$libeufin_db" num_nexus_talerable_transactions <<EOF
+select count(*) from libeufin_nexus.talerable_incoming_transactions;
+EOF
+echo "num_nexus_talerable_transactions:" $num_nexus_talerable_transactions
+
+runsql "$libeufin_db" num_nexus_bounced_transactions <<EOF
+select count(*) from libeufin_nexus.bounced_transactions;
+EOF
+echo "num_nexus_bounced_transactions:" $num_nexus_bounced_transactions
+
+runsql "$libeufin_db" num_bank_exchange_incoming <<EOF
+select count(*) from libeufin_bank.taler_exchange_incoming;
+EOF
+echo "num_bank_exchange_incoming:" $num_bank_exchange_incoming
+
+runsql "$exchange_db" num_exchange_reserves_in <<EOF
+select count(*) from exchange.reserves_in;
+EOF
+echo num_exchange_reserves_in: $num_exchange_reserves_in
+
+runsql "$exchange_db" num_exchange_reserves <<EOF
+select count(*) from exchange.reserves;
+EOF
+echo num_exchange_reserves: $num_exchange_reserves
+
+
+function expect_unit_active() {
+ systemctl --quiet is-active "$1"
+ if [[ $? -ne 0 ]]; then
+ echo "WARNING: expected unit $1 to be active, but it is not active"
+ fi
+}
+
+libeufin_units=(
+libeufin-bank.service
+libeufin-nexus-ebics-fetch.service
+libeufin-nexus-ebics-submit.service
+)
+
+exchange_units=(
+taler-exchange-aggregator.service
+taler-exchange-closer.service
+taler-exchange-expire.service
+taler-exchange-httpd.service
+taler-exchange-secmod-cs.service
+taler-exchange-secmod-eddsa.service
+taler-exchange-secmod-rsa.service
+taler-exchange-transfer.service
+taler-exchange-wirewatch.service
+)
+
+
+merchant_units=(
+taler-merchant-httpd.service
+)
+
+all_units=()
+all_units+=( "${libeufin_units[@]}" "${exchange_units[@]}" "${merchant_units[@]}" )
+
+for unit in ${all_units[@]}; do
+ expect_unit_active "$unit"
+done
+
+for unit in ${all_units[@]}; do
+ num_warnings=$(journalctl -u "$unit" | grep WARNING | wc -l)
+ num_errors=$(journalctl -u "$unit" | grep ERROR | wc -l)
+ if [[ ( $num_errors -eq 0 ) && ( $num_warnings -eq 0 ) ]]; then
+ continue
+ fi
+ echo "Please check logs for $unit ($num_warnings warnings, $num_errors errors)"
+done