Report HS version to pricenode (#4027)

* Report HS version to pricenode

In order to evaluate progress on https://github.com/bisq-network/projects/issues/23,
the Bisq app reports its hiddenservice version.

This change is going to be undone as soon as we do not need the
info anymore.

* Added hsversion scraper script

* Added installer/uninstaller

* Cleanup

* Fix unit name
This commit is contained in:
Florian Reimair 2020-04-02 16:06:00 +02:00 committed by GitHub
parent 2b39662861
commit 57157c7e4f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 104 additions and 2 deletions

View File

@ -20,6 +20,7 @@ package bisq.core.provider.price;
import bisq.core.provider.HttpClientProvider;
import bisq.network.http.HttpClient;
import bisq.network.p2p.P2PService;
import bisq.common.app.Version;
import bisq.common.util.MathUtils;
@ -47,8 +48,13 @@ public class PriceProvider extends HttpClientProvider {
public Tuple2<Map<String, Long>, Map<String, MarketPrice>> getAll() throws IOException {
Map<String, MarketPrice> marketPriceMap = new HashMap<>();
String hsVersion = "";
if (P2PService.getMyNodeAddress() != null)
hsVersion = P2PService.getMyNodeAddress().getHostName().length() > 22 ? ", HSv3" : ", HSv2";
String json = httpClient.requestWithGET("getAllMarketPrices", "User-Agent", "bisq/"
+ Version.VERSION);
+ Version.VERSION + hsVersion);
LinkedTreeMap<?, ?> map = new Gson().fromJson(json, LinkedTreeMap.class);
Map<String, Long> tsMap = new HashMap<>();

View File

@ -129,6 +129,9 @@ public class P2PService implements SetupListener, MessageListener, ConnectionLis
private final KeepAliveManager keepAliveManager;
private final Socks5ProxyProvider socks5ProxyProvider;
@Getter
private static NodeAddress myNodeAddress;
///////////////////////////////////////////////////////////////////////////////////////////
// Constructor
@ -195,11 +198,14 @@ public class P2PService implements SetupListener, MessageListener, ConnectionLis
public void onAllServicesInitialized() {
if (networkNode.getNodeAddress() != null) {
maybeProcessAllMailboxEntries();
myNodeAddress = networkNode.getNodeAddress();
} else {
// If our HS is still not published
networkNode.nodeAddressProperty().addListener((observable, oldValue, newValue) -> {
if (newValue != null)
if (newValue != null) {
maybeProcessAllMailboxEntries();
myNodeAddress = networkNode.getNodeAddress();
}
});
}
}

View File

@ -0,0 +1,41 @@
#!/bin/sh
set -e
echo "[*] Network Size Monitoring installation script"
##### change paths if necessary for your system
ROOT_USER=root
SCRAPER_HOME=/journalreader
SCRAPER_USER=journalreader
SCRAPER_GROUP=systemd-journal
#####
echo "[*] Checking environment..."
if [ ! -f "/etc/collectd/collectd.conf" ]; then
echo 'Collectd is not installed. Did you do the install_monitoring_debian.sh?'
echo 'Exiting...'
exit
fi
if ! grep -q "journalreader" /etc/passwd; then
echo 'User not found. Did you run the install_networksize_debian.sh?'
echo 'Exiting...'
exit
fi
echo "[*] Installing journal parser script"
curl -s https://raw.githubusercontent.com/bisq-network/bisq/master/pricenode/journalscraper_hsversion.sh > /tmp/journalscraper_hsversion.sh
sudo -H -i -u "${ROOT_USER}" install -c -o "${SCRAPER_USER}" -g "${SCRAPER_GROUP}" -m 744 /tmp/journalscraper_hsversion.sh "${SCRAPER_HOME}/scraperscript_hsversion.sh"
echo "[*] Installing collectd config"
curl -s https://raw.githubusercontent.com/bisq-network/bisq/master/pricenode/collectd.conf.snippet > /tmp/collectd.conf.snippet
sudo -H -i -u "${ROOT_USER}" sed -i -e "s/LoadPlugin exec//" /tmp/collectd.conf.snippet
sudo -H -i -u "${ROOT_USER}" /bin/sh -c "cat /tmp/collectd.conf.snippet >> /etc/collectd/collectd.conf"
sudo -H -i -u "${ROOT_USER}" sed -i -e "s/__USER_GROUP__/${SCRAPER_USER}:${SCRAPER_GROUP}/" /etc/collectd/collectd.conf
sudo -H -i -u "${ROOT_USER}" sed -i -e "s!__SCRAPERSCRIPT__!${SCRAPER_HOME}/scraperscript_hsversion.sh!" /etc/collectd/collectd.conf
echo "[*] Restarting services"
sudo -H -i -u "${ROOT_USER}" systemctl restart collectd.service
echo '[*] Done!'

View File

@ -0,0 +1,20 @@
#!/bin/bash
HOSTNAME="${COLLECTD_HOSTNAME:-localhost}"
INTERVAL=750
last=$(date +"%F %T" -d "$INTERVAL seconds ago")
while true;
do
now=$(date +"%F %T")
journalctl -u bisq-pricenode --since="$last" --until="$now" | grep -Eo "getAllMarketPrices.*HSv[0-9]" | grep -o "HSv[0-9]" | sort | uniq -c | while read -r line; do
number=$(echo "${line}" | cut -d ' ' -f 1);
version=$(echo "${line}" | cut -d \ -f 2);
version=${version//./_};
echo "PUTVAL $HOSTNAME/hsversionStats/gauge-$version interval=$INTERVAL N:$number";
done
last=$now
sleep $INTERVAL
done

View File

@ -0,0 +1,29 @@
#!/bin/sh
set -e
echo "[*] Network Size Monitoring removal script"
##### change paths if necessary for your system
ROOT_USER=root
SCRAPER_HOME=/journalreader
#####
echo "[*] Checking environment..."
if [ ! -f "${SCRAPER_HOME}/scraperscript_hsversion.sh" ]; then
echo 'There is nothing to be removed.'
echo 'Exiting...'
exit
fi
echo "[*] Removing journal parser script"
sudo -H -i -u "${ROOT_USER}" rm "${SCRAPER_HOME}/scraperscript_hsversion.sh"
echo "[*] Reverting collectd config"
sudo -H -i -u "${ROOT_USER}" sed -i '/<Plugin exec>.*/ {N;N; s/<Plugin exec>.*scraperscript_hsversion.sh.*<.Plugin>//g}' /etc/collectd/collectd.conf
echo "[*] Restarting services"
sudo -H -i -u "${ROOT_USER}" systemctl restart collectd.service
echo '[*] Done!'