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