|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +DEFAULT_LOGFILE=~/.pm2/logs/stream-metrics-index-crawler-out.log |
| 4 | +LOGFILE="${1:-$DEFAULT_LOGFILE}" |
| 5 | + |
| 6 | +printStats() { |
| 7 | + local RUN_ID=$1 |
| 8 | + echo "Run $RUN_ID" |
| 9 | + |
| 10 | + local ITEMS=$(awk -v run_id="$RUN_ID" '$0 ~ run_id {print}' $LOGFILE) |
| 11 | + SUCCESS_ITEMS=$(jq -s 'map(select(.msg | contains("Queried ")))' <<< $ITEMS) |
| 12 | + FAILURE_ITEMS=$(jq -s 'map(select(.msg | contains("Query failed ")))' <<< $ITEMS) |
| 13 | + SUCCESS_DESCRIPTORS=$(jq 'map(.info.peerDescriptor)' <<< $SUCCESS_ITEMS) |
| 14 | + FAILURE_DESCRIPTORS=$(jq 'map(.peerDescriptor)' <<< $FAILURE_ITEMS) |
| 15 | + |
| 16 | + printCategoryStats 'All' "$SUCCESS_DESCRIPTORS" "$FAILURE_DESCRIPTORS" '.' |
| 17 | + printCategoryStats 'NodeJS-all' "$SUCCESS_DESCRIPTORS" "$FAILURE_DESCRIPTORS" '.type == 0' |
| 18 | + printCategoryStats 'NodeJS-WebSocket' "$SUCCESS_DESCRIPTORS" "$FAILURE_DESCRIPTORS" '(.type == 0) and (.websocket)' |
| 19 | + printCategoryStats 'NodeJS-AutoCertified' "$SUCCESS_DESCRIPTORS" "$FAILURE_DESCRIPTORS" '(.type == 0) and ((.websocket.host // "") | contains("streamr-nodes.xyz"))' |
| 20 | + printCategoryStats 'NodeJS-non-WebSocket' "$SUCCESS_DESCRIPTORS" "$FAILURE_DESCRIPTORS" '(.type == 0) and (.websocket | not)' |
| 21 | + printCategoryStats 'Browser' "$SUCCESS_DESCRIPTORS" "$FAILURE_DESCRIPTORS" ".type == 1" |
| 22 | + |
| 23 | + echo "Errors:" |
| 24 | + jq -r --monochrome-output 'map(.err.code) | group_by(.) | map({(.[0]): length}) | add' <<< $FAILURE_ITEMS |
| 25 | + |
| 26 | + echo "Versions:" |
| 27 | + jq -r --monochrome-output 'map(.info.applicationVersion) | group_by(.) | map({(.[0]): length}) | add' <<< $SUCCESS_ITEMS |
| 28 | + |
| 29 | + echo -e "\n\n" |
| 30 | +} |
| 31 | + |
| 32 | +printCategoryStats() { |
| 33 | + local CATEGORY=$1 |
| 34 | + local SUCCESS_DESCRIPTORS=$2 |
| 35 | + local FAILURE_DESCRIPTORS=$3 |
| 36 | + local FILTER=$4 |
| 37 | + |
| 38 | + local SUCCESS_COUNT=$(jq 'length' <<< $SUCCESS_DESCRIPTORS) |
| 39 | + local FAILURE_COUNT=$(jq 'length' <<< $FAILURE_DESCRIPTORS) |
| 40 | + local TOTAL_COUNT=$((SUCCESS_COUNT + FAILURE_COUNT)) |
| 41 | + local FAILURE_PERCENTAGE=$((FAILURE_COUNT * 100 / TOTAL_COUNT)) |
| 42 | + |
| 43 | + echo "$CATEGORY:" |
| 44 | + local CATEGORY_SUCCESS_COUNT=$(jq "map(select($FILTER)) | length" <<< $SUCCESS_DESCRIPTORS) |
| 45 | + local CATEGORY_FAILURE_COUNT=$(jq "map(select($FILTER)) | length" <<< $FAILURE_DESCRIPTORS) |
| 46 | + local CATEGORY_TOTAL_COUNT=$((CATEGORY_SUCCESS_COUNT + CATEGORY_FAILURE_COUNT)) |
| 47 | + if [ "$CATEGORY_TOTAL_COUNT" -eq 0 ]; then |
| 48 | + local CATEGORY_FAILURE_PERCENTAGE=0 |
| 49 | + else |
| 50 | + local CATEGORY_FAILURE_PERCENTAGE=$((CATEGORY_FAILURE_COUNT * 100 / CATEGORY_TOTAL_COUNT)) |
| 51 | + fi |
| 52 | + echo "- total=$CATEGORY_TOTAL_COUNT success=$CATEGORY_SUCCESS_COUNT failure=$CATEGORY_FAILURE_COUNT ($CATEGORY_FAILURE_PERCENTAGE%)" |
| 53 | +} |
| 54 | + |
| 55 | +echo -e "\n\n" |
| 56 | + |
| 57 | +grep 'Queried ' $LOGFILE | grep -o '"runId":"full-[0-9]*' | cut -c 10- | sort -u | while read -r RUN_ID; do |
| 58 | + printStats "$RUN_ID" |
| 59 | +done |
0 commit comments