Lincoln6Echo (OP)
Legendary
Offline
Activity: 2461
Merit: 1058
Don't use bitcoin.de if you care about privacy!
|
|
June 30, 2016, 09:27:45 AM |
|
Da hier schon ne ganze Weile ein RasPi2 Staub fing hab ich den jetz auch mal als Full Node eingerichtet.
Erst wollte ich dazu einfach ein RokOS-Image laden, aber da die Seite momentan nur ein "New Core Release coming up." zeigt, hab ich einfach mal das Bananen-Tutorial hier verwendet und was soll ich sagen... hat alles völlig problemlos geklappt und läuft.
datadir liegt auf ner 250GB hdd, da ich noch ne komplette Blockchain vorrätig hatte, musste sich der Kleine auch nich mit tagelangem sync quälen.
Nach ein paar Stunden hat er zZ 18 connections und ne Speicherauslastung von ~480MB, bin gespannt, wie sich das in nächster Zeit entwickelt und wie stabil das Ganze läuft.
Jetzt fehlt eigentlich nurnoch ne hübsche Stats-Page, mal sehen, ob sich dafür auchnoch n Tutorial findet.
Das freut mich zu hören. Komme auf eine ähnliche Speicher und Connectionszahl. Für die Stats Seite könnte man Shorena fragen aber solange der Node keine feste IP hat macht das nicht sooo optimal. Habe mal dem Tutorial noch eine bessere Anleitung zum Einhängen der Festplatte hinzugefügt.
|
|
|
|
Real-Duke
Legendary
Offline
Activity: 3542
Merit: 2314
Top Crypto Casino
|
|
June 30, 2016, 09:44:16 AM |
|
Cool dann sind wir jetzt schon zu fünft? Die neue Anleitung zum einhängen der HDD gefällt mir gut und für optische Erweiterungen wäre ich auch noch zu haben. Evtl ginge für alle 24h Zwangsgetrennten ja etwas über dyndns.
|
|
|
|
lassdas
Legendary
Offline
Activity: 3676
Merit: 1495
|
|
June 30, 2016, 09:57:18 AM |
|
Für die Stats Seite könnte man Shorena fragen aber solange der Node keine feste IP hat macht das nicht sooo optimal.
Die feste IP is kein Problem, für sowas nutze ich schon seit .... immer (also, bestimmt schon 10 Jahre, eher mehr) den DynDNS Service von afraid.org. Wobei sich meine IP sowieso eher selten ändert, wenns hoch kommt alle 2 Monate mal. Die Seite von shorena is in der Tat recht hübsch.
|
|
|
|
lassdas
Legendary
Offline
Activity: 3676
Merit: 1495
|
|
July 05, 2016, 04:38:36 PM |
|
Die letzten 5 Tage lief er eigentlich ohne zu mucken ganz brav durch, heute musste ich aber mal rebooten, weil ich Trottel nen Kurzen im USB-Hub verursacht hab und dadurch kurzfristig die HDD ausgefallen is. Aber,... nix passiert. Meine Stats laufen jetz auch einigermaßen, werd da aber sicher noch n bisschen dran rumspielen. http://lassdas.mooo.com/Was habt Ihr'n so fürn Traffic? Ich komm jetzt schon auf ~10GB pro Tag, was ich doch recht erstaunlich fand. Eingestellt hab ich vorerst mal 40 maxconnections, die er bislang (also, in den 5 Tagen) aber nochnicht erreicht hat.
|
|
|
|
Real-Duke
Legendary
Offline
Activity: 3542
Merit: 2314
Top Crypto Casino
|
|
July 05, 2016, 07:13:10 PM |
|
@lassdas Ohhh...auch so eine hübsche Stats Seite wollen Ich habe meistens so um die 100GB upload im Monat, das Meiste davon dürfte der Node sein. Hatte ich bereits erwähnt, das Deine Stats Seite voll toll ist?
|
|
|
|
lassdas
Legendary
Offline
Activity: 3676
Merit: 1495
|
|
July 05, 2016, 08:01:07 PM |
|
lol Jetz übertreib mal nich. So ganz zufrieden bin ich damit nochnich, das muss noch n bissl hübscher werden, da geht noch was, aber ich hab ja Zeit. Und 100GB/Monat klingt da schon eher wenig, heute wars eher ruhig, hab aber schon 6.6GB und der Tag is nochnich rum, damit käm ich im Monat schon auf 200GB und wie gesagt, die letzten Tage warns eher 9+GB. Und mit ein paar mehr Connections (ich plane schon mit 50, oder gar 60 als max) kommt da bestimmt noch mehr zusammen. Naja, mich solls nich stören, für irgendwas müssen die 40MBit upload ja gut sein.
|
|
|
|
Lincoln6Echo (OP)
Legendary
Offline
Activity: 2461
Merit: 1058
Don't use bitcoin.de if you care about privacy!
|
|
July 05, 2016, 08:04:16 PM |
|
@lassdas: könntest du uns vielleicht eine DAU Anleitung für das erstellen der stats Seite und der statischen IP zukommen lassen. Wie das mit dyndns geht weiss ich in der Theorie aber nicht wie man das am besten beim BPI konfiguriert.
|
|
|
|
lassdas
Legendary
Offline
Activity: 3676
Merit: 1495
|
|
July 05, 2016, 08:30:23 PM |
|
Also, für dyndns nutze ich wie bereits erwähnt https://freedns.afraid.org/ . Bei der Einrichtung hat man diverse Auswahlmöglichkeiten, das geht bei mir zB direkt über ne Einstellung im Router (DD-WRT bietet afraid.org schon ab Werk im Drop-Down-Menü zur Auswahl an), es gibt aber auch diverse Clients, oder Scripte, die das übernehmen, oder ganz simpel, durch aufrufen von http://[USERNAME]:[PASSWORD]@freedns.afraid.org/nic/update?hostname=[DOMAIN]&myip=[IP] (zB per cronjob). Ganz Pauschal lässt sich das also schwer sagen, kommt auf Deine Gegebenheiten und Vorlieben an. An der DAU Anleitung für Stats muss ich noch n bissl arbeiten, kommt aber.
|
|
|
|
lassdas
Legendary
Offline
Activity: 3676
Merit: 1495
|
|
July 06, 2016, 03:59:35 AM Last edit: July 06, 2016, 05:04:44 AM by lassdas |
|
Einen wunderschönen guten Morgen meine Damen und Herren, Sie sehen heute aus der beliebten Reihe "Von DAU für DAU" die Folge: Wie bastel ich mir Stats für meinen Full Node?Annahme: bitcoind ist installiert und läuft, der Pfad zur HDD lautet /hdd, wir sind angemeldet als user "pi" Bevor's los geht bringen wir mal unsere Paketlisten auf den neuesten Stand Da wir die Stats im Browser bewundern wollen, brauchen wir erstmal einen Webserver. Wir nehmen nginx und damit wir auch dynamischen Content und nichtnur statische Seiten anzeigen können, gleich mit PHP. sudo apt-get install nginx php5-fpm Der Server braucht Verzeichnisse, also legen wir erstmal welche an (da wir schon eine haben, natürlich auf der HDD). Das root-Verzeichnis des Servers (hier kommen später Webseiten, Bilder, etc rein) und eins für die Server Logs mkdir /hdd/www/html mkdir /hdd/www/log Dann editieren wir die Server-Konfigurationsdatei sudo nano /etc/nginx/nginx.conf hier kann man einiges einstellen, uns gehts aber vor allem um die Pfade zu den Logs und die Virtual Host Configs (dazu gleich mehr), die sollten aussehen, wie folgt ## # Logging Settings ## access_log /hdd/www/log/access.log; error_log /hdd/www/log/error.log; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf;
Wir speichern mit Str-O + Enter und beenden mit Str-X. Da wir dem Server jetzt gesagt haben, er soll alle *.conf-Dateien in /etc/nginx/conf.d/ lesen, legen wir dort nun unsere Default Server Konfiguration an sudo nano /etc/nginx/conf.d/pinode.conf hier sagen wir dem Server (u.a.), auf welchem Port er lauschen soll (80), wo sich sein root-Verzeichnis befindet (/hdd/www/html) und wie er heißt (da dies unser Default Server ist, heißt er einfach nur "_"). #Default Server Configuration server { listen 80 default_server; listen [::]:80 default_server;
root /hdd/www/html; index index.php index.html index.htm;
server_name _;
location / { try_files $uri $uri/ =404; autoindex on; } location ~ \.php$ { try_files $uri =404; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include /etc/nginx/fastcgi_params; } #Deny access to .htaccess files location ~ /\.ht { deny all; } }
Wir speichern mit Str-O + Enter, beenden mit Str-X und starten nginx neu. sudo service nginx restart Damit sollte der Webserver auchschon einsatzbereit sein. Weiter geht's nach einer kurzen Werbeunterbrechung, oder ner Tasse Tee, ganz nach Belieben.
|
|
|
|
lassdas
Legendary
Offline
Activity: 3676
Merit: 1495
|
|
July 06, 2016, 05:03:07 AM |
|
Der Webserver läuft, also machen wir mit der Installation von vnstat weiter sudo apt-get install vnstat vnstati php5-gd erstellen ein Verzeichnis für die Grafiken im root des Webservers mkdir /hdd/www/html/images und ein Script, das die Grafiken erzeugt welches wir mit Inhalt füllen #!/bin/bash # vnstati.sh - network stats creation script
vnstati -vs -ne -nh -i eth0 -o /hdd/www/html/images/summary.png -ru 0 vnstati -d -ne -nh -i eth0 -o /hdd/www/html/images/daily.png -ru 0 vnstati -m -ne -nh -i eth0 -o /hdd/www/html/images/monthly.png -ru 0 vnstati -t -ne -nh -i eth0 -o /hdd/www/html/images/top10.png -ru 0
mit Str-O + Enter speichern und mit Str-X beenden. Welche Grafik -vs, -d, -m und -t jeweils erstellen, sieht man schön an der Datei-Endung, -ne (noedge) erstellt die Grafik ohne Umrandung, -nh (noheader) ohne Kopfzeile und mit -ru (0,1) kann man zwischen bits und bytes wählen, Weitere Optionen und Infos gibts unter "vnstati --help", oder "man vnstati". Das gerade erstellte Script müssen wir nun noch ausführbar machen und einen Cronjob erstellen, der es automatisch aufruft. Dazu unter ganz unten einfach # updating every 5 minutes */5 * * * * nice /home/pi/vnstati.sh >/dev/null 2>&1 einfügen, mit Str-O + Enter speichern und mit Str-X beenden. Nach spätestens 5 Minuten sollten die Grafiken unter http://<Node-IP>/images/ zur Abholung bereitliegen. Weiter geht's mit der Installation vom rrdtool sudo apt-get install rrdtool und anlegen eines Verzeichnisses für die entsprechenden Datenbanken Jetzt der komplizierteste Teil (zumindest für mich, außer copy&paste müsst Ihr eigentlich nix machen, wenn Ihr nich wollt), die Erstellung der Datenbanken, das Updaten selbiger und kreieren der entsprechenden Graphen. Dazu verwenden wir jeweils ein Script für Connections/Traffic/CPU-Load..., die alle nach folgendem Schema aufgebaut sind: Im oberen Teil geben wir u.a. den Pfad an, in dem die Datenbank gespeichert werden soll, es folgt ein Check, ob die Datenbank schon existiert, wenn nicht, wird sie angelegt. Danach ein Update der Datenbank mit den aktuellen Werten und zum Schluss das Erstellen der Grafik. Da wir durch vnstat ja schon Netzwerk-Statistiken haben, fangen wir mal mit dem Connections-Script an, wir erstellen es mit füllen es mit Inhalt #!/bin/bash # connections.sh - Bitcoin connection stats
rrdtool=/usr/bin/rrdtool db=/hdd/rrd/connections.rrd img=/hdd/www/html/images
if [ ! -e $db ] then $rrdtool create $db \ --step 300 \ DS:connections:GAUGE:600:0:U \ RRA:AVERAGE:0.5:1:288 \ RRA:AVERAGE:0.5:3:672 \ RRA:AVERAGE:0.5:12:744 \ RRA:AVERAGE:0.5:72:1480 fi
n=`/usr/local/bin/bitcoin-cli getconnectioncount` $rrdtool update $db -t connections N:"$n"
for period in day week month year do $rrdtool graph $img/connections-$period.png -s -1$period \ -t "Connections last $period" -z \ -c "BACK#FFFFFF" -c "SHADEA#FFFFFF" -c "SHADEB#FFFFFF" \ -c "MGRID#AAAAAA" -c "GRID#CCCCCC" -c "ARROW#333333" \ -c "FONT#333333" -c "AXIS#333333" -c "FRAME#333333" \ -h 134 -w 543 -l 0 -a PNG -v "#" \ DEF:connections=$db:connections:AVERAGE \ VDEF:max=connections,MAXIMUM \ VDEF:avg=connections,AVERAGE \ VDEF:lst=connections,LAST \ "COMMENT: \l" \ "COMMENT: " \ "COMMENT: " \ "COMMENT:Last " \ "COMMENT:Average " \ "COMMENT:Maximum " \ "COMMENT: \l" \ "COMMENT: " \ "AREA:connections#92CF00:Connections " \ "LINE1:connections#3F5A00" \ "GPRINT:lst:%2.0lf " \ "GPRINT:avg:%2.0lf " \ "GPRINT:max:%2.0lf \l" > /dev/null done
speichern mit Str-O + Enter und beenden mit Str-X, ausführbar machen chmod +x ~/connections.sh neuen CronJob erstellen, indem wir wieder unter am Ende # updating every 5 minutes */5 * * * * nice /home/pi/connections.sh >/dev/null 2>&1 einfügen, mit Str-O + Enter speichern, mit Str-X beenden. Auch hier sollten nach 5 Minuten die Grafiken unter http://<Node-IP>/images/ zur Abholung bereitliegen, jeweils eine für Daily, Weekly, Monthly und Yearly Stats. Weitere Scripte (RAM/CPU/Traffic) folgen.
|
|
|
|
lassdas
Legendary
Offline
Activity: 3676
Merit: 1495
|
|
July 06, 2016, 07:02:03 AM |
|
RAM #!/bin/bash # memory.sh - Memory usage stats
rrdtool=/usr/bin/rrdtool db=/hdd/rrd/memory.rrd img=/hdd/www/html/images
if [ ! -e $db ] then $rrdtool create $db \ --step 300 \ DS:usage:GAUGE:600:0:U \ RRA:AVERAGE:0.5:1:288 \ RRA:AVERAGE:0.5:3:672 \ RRA:AVERAGE:0.5:12:744 \ RRA:AVERAGE:0.5:72:1480 fi
$rrdtool update $db -t usage N:`free -b |grep cache:|cut -d":" -f2|awk '{print $1}'`
for period in day week month year do $rrdtool graph $img/memory-$period.png -s -1$period \ -t "Memory usage last $period" -z \ -c "BACK#FFFFFF" -c "SHADEA#FFFFFF" -c "SHADEB#FFFFFF" \ -c "MGRID#AAAAAA" -c "GRID#CCCCCC" -c "ARROW#333333" \ -c "FONT#333333" -c "AXIS#333333" -c "FRAME#333333" \ -h 134 -w 543 -l 0 -a PNG -v "RAM" \ DEF:usage=$db:usage:AVERAGE \ VDEF:min=usage,MINIMUM \ VDEF:max=usage,MAXIMUM \ VDEF:avg=usage,AVERAGE \ VDEF:lst=usage,LAST \ "COMMENT: \l" \ "COMMENT: " \ "COMMENT: " \ "COMMENT:Minimum " \ "COMMENT:Maximum " \ "COMMENT:Average " \ "COMMENT:Current \l" \ "COMMENT: " \ "AREA:usage#92CF00:Usage " \ "LINE1:usage#3F5A00" \ "GPRINT:min:%5.1lf %sB " \ "GPRINT:max:%5.1lf %sB " \ "GPRINT:avg:%5.1lf %sB " \ "GPRINT:lst:%5.1lf %sB \l" > /dev/null done
Network Traffic #!/bin/bash # network.sh - Network usage stats
rrdtool=/usr/bin/rrdtool db=/hdd/rrd/network.rrd img=/hdd/www/html/images if=eth0
if [ ! -e $db ] then $rrdtool create $db \ --step 300 \ DS:in:DERIVE:600:0:12500000 \ DS:out:DERIVE:600:0:12500000 \ RRA:AVERAGE:0.5:1:288 \ RRA:AVERAGE:0.5:3:672 \ RRA:AVERAGE:0.5:12:744 \ RRA:AVERAGE:0.5:72:1480 fi
$rrdtool update $db -t in:out N:`/sbin/ifconfig $if |grep bytes|cut -d":" -f2|cut -d" " -f1`:`/sbin/ifconfig $if |grep bytes|cut -d":" -f3|cut -d" " -f1`
for period in day week month year do $rrdtool graph $img/network-$period.png -s -1$period \ -t "eth0 traffic last $period" -z \ -c "BACK#FFFFFF" -c "SHADEA#FFFFFF" -c "SHADEB#FFFFFF" \ -c "MGRID#AAAAAA" -c "GRID#CCCCCC" -c "ARROW#333333" \ -c "FONT#333333" -c "AXIS#333333" -c "FRAME#333333" \ -h 134 -w 543 -l 0 -a PNG -v "B/s" \ DEF:in=$db:in:AVERAGE \ DEF:out=$db:out:AVERAGE \ VDEF:minin=in,MINIMUM \ VDEF:minout=out,MINIMUM \ VDEF:maxin=in,MAXIMUM \ VDEF:maxout=out,MAXIMUM \ VDEF:avgin=in,AVERAGE \ VDEF:avgout=out,AVERAGE \ VDEF:lstin=in,LAST \ VDEF:lstout=out,LAST \ VDEF:totin=in,TOTAL \ VDEF:totout=out,TOTAL \ "COMMENT: \l" \ "COMMENT: " \ "COMMENT:Minimum " \ "COMMENT:Maximum " \ "COMMENT:Average " \ "COMMENT:Current " \ "COMMENT:Total \l" \ "COMMENT: " \ "AREA:out#92CF00:Out " \ "LINE1:out#3F5A00" \ "GPRINT:minout:%5.1lf %sB/s " \ "GPRINT:maxout:%5.1lf %sB/s " \ "GPRINT:avgout:%5.1lf %sB/s " \ "GPRINT:lstout:%5.1lf %sB/s " \ "GPRINT:totout:%5.1lf %sB \l" \ "COMMENT: " \ "AREA:in#8AD3F1:In " \ "LINE1:in#49BEEF" \ "GPRINT:minin:%5.1lf %sB/s " \ "GPRINT:maxin:%5.1lf %sB/s " \ "GPRINT:avgin:%5.1lf %sB/s " \ "GPRINT:lstin:%5.1lf %sB/s " \ "GPRINT:totin:%5.1lf %sB \l" > /dev/null done
CPU Load #!/bin/bash # cpuload.sh - CPU Load stats
rrdtool=/usr/bin/rrdtool db=/hdd/rrd/cpuload.rrd img=/hdd/www/html/images
if [ ! -e $db ] then $rrdtool create $db \ --step 300 \ DS:load1:GAUGE:600:0:U \ DS:load5:GAUGE:600:0:U \ DS:load15:GAUGE:600:0:U \ RRA:AVERAGE:0.5:1:288 \ RRA:AVERAGE:0.5:3:672 \ RRA:AVERAGE:0.5:12:744 \ RRA:AVERAGE:0.5:72:1480 fi
uptime=`uptime` base="${uptime##*:}"
input="$(echo -e "${base}" | tr -d '[[:space:]]')" load1=$(echo $input | cut -d',' -f1-2 | tr ',' '.') load5=$(echo $input | cut -d',' -f3-4 | tr ',' '.') load15=$(echo $input | cut -d',' -f5-6 | tr ',' '.')
$rrdtool update $db -t load1:load5:load15 N:$load1:$load5:$load15
for period in day week month year do $rrdtool graph $img/cpuload-$period.png -s -1$period \ -t "CPU Load last $period" -z \ -c "BACK#FFFFFF" -c "SHADEA#FFFFFF" -c "SHADEB#FFFFFF" \ -c "MGRID#AAAAAA" -c "GRID#CCCCCC" -c "ARROW#333333" \ -c "FONT#333333" -c "AXIS#333333" -c "FRAME#333333" \ -h 134 -w 543 -l 0 -a PNG -v "CPU" \ DEF:load1=$db:load1:AVERAGE \ DEF:load5=$db:load5:AVERAGE \ DEF:load15=$db:load15:AVERAGE \ VDEF:lst1=load1,LAST \ VDEF:lst5=load5,LAST \ VDEF:lst15=load15,LAST \ VDEF:avg1=load1,AVERAGE \ VDEF:avg5=load5,AVERAGE \ VDEF:avg15=load15,AVERAGE \ VDEF:max1=load1,MAXIMUM \ VDEF:max5=load5,MAXIMUM \ VDEF:max15=load15,MAXIMUM \ "COMMENT: " \ "COMMENT: " \ "COMMENT: " \ "COMMENT:Last " \ "COMMENT:Average " \ "COMMENT:Maximum \l" \ "COMMENT: " \ "COMMENT: " \ "AREA:load1#92CF00:1m " \ "GPRINT:lst1: %1.2lf " \ "GPRINT:avg1: %1.2lf " \ "GPRINT:max1: %1.2lf \l" \ "COMMENT: " \ "COMMENT: " \ "LINE3:load5#49BEEF88:5m " \ "GPRINT:lst5: %1.2lf " \ "GPRINT:avg5: %1.2lf " \ "GPRINT:max5: %1.2lf \l" \ "COMMENT: " \ "COMMENT: " \ "LINE2:load15#C3E9FA:15m " \ "GPRINT:lst15: %1.2lf " \ "GPRINT:avg15: %1.2lf " \ "GPRINT:max15: %1.2lf \l" > /dev/null done
ConJobs */5 * * * * nice /home/pi/memory.sh >/dev/null 2>&1 */5 * * * * nice /home/pi/network.sh >/dev/null 2>&1 */5 * * * * nice /home/pi/cpuload.sh >/dev/null 2>&1
Damit hätten wir jetzt eigentlich alles zusammen, was noch fehlt, ist eine Webseite (/hdd/www/html/index.html, oder /hdd/www/html/index.php ), auf der wir die Grafiken anzeigen, aber das sollte jeder selbst hinbekommen (sollen ja auch nich alle gleich aussehen, unsere Stats). Falls nicht, bin ich auch da gerne behilflich. Man könnte das Ganze natürlich noch etwas aufräumen, die Anzahl der Scripte reduzieren, indem man sie zusammenfügt, z.B. ein Script, das alle Datenbanken updatet und eines, das die Grafiken erstellt, aber das ist dann eher Schönheitschirurgie. So kann man sich erstmal an jedem Script einzeln austoben und macht bei nem Fehler nich gleich alles wieder kaputt. Ich wünsche viel Erfolg beim rumprobieren.
|
|
|
|
Real-Duke
Legendary
Offline
Activity: 3542
Merit: 2314
Top Crypto Casino
|
|
July 06, 2016, 07:56:16 AM |
|
Sehr Cool, danke dafür! Ich sehe am WE Arbeit auf mich zukommen....melde mich falls es klemmt oder ich ne Frage hab
|
|
|
|
Lincoln6Echo (OP)
Legendary
Offline
Activity: 2461
Merit: 1058
Don't use bitcoin.de if you care about privacy!
|
|
July 06, 2016, 01:06:13 PM |
|
uuh wow, danke lassdas. Daraus könntest du eigentlich einen eigenen Thread machen! Hoffe ich habe am Sonntag ein bisschen Zeit mich daran zu versuchen.
|
|
|
|
Real-Duke
Legendary
Offline
Activity: 3542
Merit: 2314
Top Crypto Casino
|
|
July 06, 2016, 08:45:03 PM |
|
Ich konnte natürlich nicht bis zum Wochenende abwarten und musste neben der EM ein bischen spielen Es scheint so, als hätte ich alles richtig gemacht. Die Images werden abgelegt unter /hdd/www/html/images Da wir als "root" auf der Banane unterwegs sind, musste ich kleine Änderungen in der /etc/crontab vornehmen: Also die Anleitung klappt auf jeden Fall! Nun zu meinem eigentlichen Problem hihi was noch fehlt, ist eine Webseite (/hdd/www/html/index.html, oder /hdd/www/html/index.php ), auf der wir die Grafiken anzeigen, aber das sollte jeder selbst hinbekommen Fast jeder...bestimmt, aber ich hab das noch NIE gemacht Falls nicht, bin ich auch da gerne behilflich.
Das wäre das I-Tüpfelchen aus meiner Sicht Danke auf jeden Fall bis hierher!
|
|
|
|
lassdas
Legendary
Offline
Activity: 3676
Merit: 1495
|
|
July 06, 2016, 10:11:23 PM |
|
Fast jeder...bestimmt, aber ich hab das noch NIE gemacht Na, dann wirds ja Zeit. Weil ich in meinem Fall (und diesem Beisiel) vor dem Aufruf der Webseite noch mal kurz mit Bitcoin RPC spreche, bedarf es noch ein klitzekleinwenig Vorarbeit. Erstelle ein Verzeichnis und pack da die Bitcoin.php von shalk rein nano /hdd/www/includes/Bitcoin.php <?php /* The MIT License Copyright (c) 2011 Schalk Bower <schalk@hotmail.co.nz> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Donations: 14bBEcMwwnDVXAYR8n2iTk9PTF5wqYLGR2 */ class Bitcoin { // @var string private $username; // @var string private $password; // @var string private $url; // @var integer private $id; /** * Contructor * * @param string $url * @param string $username * @param string $password * @param boolean $debug */ public function __construct($url, $username, $password) { //connection details $this->url = $url; $this->username = $username; $this->password = $password; //request id $this->id = 1; } /** * Perform jsonRCP request and return results as array * * @param string $method * @param array $params * @return array */ public function __call($method,$params) { // make params indexed array of values $params = array_values($params); // prepares the request $request = json_encode(array( 'method' => strtolower($method), 'params' => $params, 'id' => $this->id )); // performs the HTTP POST using curl $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HTTPHEADER, Array("Content-type: application/json")); curl_setopt($curl, CURLOPT_URL, $this->url); curl_setopt($curl, CURLOPT_USERPWD, $this->username.":".$this->password); curl_setopt($curl, CURLOPT_POST, TRUE); curl_setopt($curl, CURLOPT_POSTFIELDS, $request); $response = curl_exec($curl); curl_close($curl); // process response if (!$response) { throw new Exception('Unable to connect to '.$this->url, 0); } $response = json_decode($response,true); // check response id if ($response['id'] != $this->id) { throw new Exception('Incorrect response id (request id: '.$this->id.', response id: '.$response['id'].')',1); } if (!is_null($response['error'])) { throw new Exception('Request error: '.print_r($response['error'],1),2); } $this->id++; // return return $response['result']; } } ?>
Die soll nur dazu dienen, in PHP per cURL Kontakt zum Bitcoin RPC aufzunehmen. Das wars schon mit der Vorarbeit. Jetzt nurnoch schnell ne Webseite zusammengefrickelt nano /hdd/www/html/index.php <?php include_once("/hdd/www/includes/Bitcoin.php");
# Daten zum Bitcoin Server $rpcUser = "DEINBITCOINRPCUSER"; $rpcPass = "DEINBITCOINRPCPASS"; $url = "http://127.0.0.1:8332";
# Kontaktaufnahme $bitcoin = new Bitcoin($url, $rpcUser, $rpcPass);
# antwortet Bitcoin? try { $info = $bitcoin->getinfo(); } catch (Exception $e) { die($e->getMessage()); }
# dann sammeln wir Daten und bereiten sie etwas auf $info = $bitcoin->getinfo(); $version = $info["version"]; $blocks = $info["blocks"]; $difficulty = floor($info["difficulty"]); $connections = $info["connections"];
$version = (string)$version; if($version[2] == "0") { $version[2] = ""; } $version = "0.".$version[0].$version[1].".".$version[2].$version[3];
# und wenn wir alles zusammenhaben, bauen wir die Webseite zusammen ?> <!doctype html> <html> <head> <meta charset="utf-8"> <link rel="icon" href="images/favicon.ico" type="image/x-icon" /> <title>Bitcoin Full Node Statistics</title> </head> <body> <center> <h2>Bitcoin Full Node Statistics</h2></br> <font size="4">Version </font> <?php echo $version; ?> <font size="4">Blocks </font> <?php echo $blocks; ?> <font size="4">Difficulty </font> <?php echo $difficulty; ?> <font size="4">Connections </font> <?php echo $connections; ?> <p align="center"> </p> <font size="4">Summary</font></br> <img src="images/summary.png" alt="summary"/></br> <font size="4">Daily Traffic</font></br> <img src="images/daily.png" alt="daily traffic"/></br> <font size="4">Monthly Traffic</font></br> <img src="images/monthly.png" alt="monthly traffic"/></br> <font size="4">Top 10</font></br> <img src="images/top10.png" alt="top 10 traffic days"/></br> </br> <img src="images/network-day.png" alt="network day"/></br> <img src="images/cpuload-day.png" alt="cpu load day"/></br> <img src="images/connections-day.png" alt="connections 24h"/></br> <img src="images/memory-day.png" alt="memory day"/></br> </body> </html>
und feddich. Edit: hab die Webseite aus Versehen im falschen Vz angelegt, jetz sollt's passen.
|
|
|
|
lassdas
Legendary
Offline
Activity: 3676
Merit: 1495
|
|
July 06, 2016, 10:20:29 PM |
|
Btw. warum seid Ihr eigentlich root? Ob das sone gute Idee is?
|
|
|
|
lassdas
Legendary
Offline
Activity: 3676
Merit: 1495
|
|
July 07, 2016, 05:23:30 AM Last edit: July 07, 2016, 07:01:22 AM by lassdas |
|
Tach, hab letzte Nacht noch schnell n Script fürn Mempool geklöppelt. Da getrawmempool ein komlettes json-array ausliefert und man die Anzahl der Tx erst selbst zusammenzählen muss, brauchen wir dafür noch n Tool, welches uns die Arbeit erleichtert. Dann erstellen wir wie gehabt unser neues Script #!/bin/bash # mempool.sh - Bitcoin mempool stats
rrdtool=/usr/bin/rrdtool db=/hdd/rrd/mempool.rrd img=/hdd/www/html/images
if [ ! -e $db ] then $rrdtool create $db \ --step 300 \ DS:mempool:GAUGE:600:0:U \ RRA:AVERAGE:0.5:1:288 \ RRA:AVERAGE:0.5:3:672 \ RRA:AVERAGE:0.5:12:744 \ RRA:AVERAGE:0.5:72:1480 fi
#n=`/usr/local/bin/bitcoin-cli getrawmempool | jq length` n=`/usr/local/bin/bitcoin-cli getmempoolinfo | jq '.size'` $rrdtool update $db -t mempool N:"$n"
for period in day week month year do $rrdtool graph $img/mempool-$period.png -s -1$period \ -t "Mempool Tx last $period" -z \ -c "BACK#FFFFFF" -c "SHADEA#FFFFFF" -c "SHADEB#FFFFFF" \ -c "MGRID#AAAAAA" -c "GRID#CCCCCC" -c "ARROW#333333" \ -c "FONT#333333" -c "AXIS#333333" -c "FRAME#333333" \ -h 134 -w 543 -l 0 -a PNG -v "TX" \ DEF:mempool=$db:mempool:AVERAGE \ VDEF:max=mempool,MAXIMUM \ VDEF:avg=mempool,AVERAGE \ VDEF:lst=mempool,LAST \ "COMMENT: \l" \ "COMMENT: " \ "COMMENT: " \ "COMMENT:Last " \ "COMMENT:Average " \ "COMMENT:Maximum " \ "COMMENT: \l" \ "COMMENT: " \ "AREA:mempool#92CF00:Mempool Tx " \ "LINE1:mempool#3F5A00" \ "GPRINT:lst:%2.0lf " \ "GPRINT:avg:%2.0lf " \ "GPRINT:max:%2.0lf \l" > /dev/null done
Str-O, Str-X CronJob für mempool.sh, feddich. Edit: kleine Optimierung nachdem ich das getmempoolinfo-command entdeckt hab. vorher /usr/local/bin/bitcoin-cli getrawmempool | jq length nachher /usr/local/bin/bitcoin-cli getmempoolinfo | jq '.size' Damit kann man auch gleich die RAM-Auslastung durch den Mempool auslesen /usr/local/bin/bitcoin-cli getmempoolinfo | jq '.usage' entweder in nem eigenen Script (quasi ner Kopie von diesem), oder gleich integriert in dieses, da bin ich mir nochnich einig.
|
|
|
|
Real-Duke
Legendary
Offline
Activity: 3542
Merit: 2314
Top Crypto Casino
|
|
July 07, 2016, 08:27:21 AM |
|
Moin lassdas, schon wieder ne Nachtschicht eingelegt? Werde das wenn möglich heute abend vor dem Spiel angehen. Account bei https://freedns.afraid.org/ habe ich gestern bereits registiert. So wie es aussah, läßt sich dieser auch mit einer Fritzbox aktualisieren. Bin schon sehr gespannt Btw. warum seid Ihr eigentlich root? Ob das sone gute Idee is? Gilt wenigstens für mich, bei Lincoln bin ich nicht sicher! Bin auf meinem Windows auch immer als root unterwegs
|
|
|
|
lassdas
Legendary
Offline
Activity: 3676
Merit: 1495
|
|
July 07, 2016, 08:39:48 AM |
|
Moin lassdas, schon wieder ne Nachtschicht eingelegt? Ich werd immer erst nachts wirklich aktiv, da iss schön ruhig und mir geht keiner auffn Sack. Btw. warum seid Ihr eigentlich root? Ob das sone gute Idee is? Gilt wenigstens für mich, bei Lincoln bin ich nicht sicher! Bin auf meinem Windows auch immer als root unterwegs Naja, auf Windows bin ich auch immer Admin, aber da weiß ich auch, was ich tue, das kann ich von Linux nich wirklich behaupten, da würd ich mich nich trauen, alles als root zu machen, würd mit an Sicherheit grenzender Wahrscheinlichkeit schiefgehn.
|
|
|
|
|
|