以太坊api訪問,區塊同步監測

以太坊geth api訪問,區塊同步監測

curl查詢geth區塊高度
supervisor管理以太坊geth進程
geth進程健康檢查web

# curl訪問geth api

#使用curl訪問geth api查詢區塊高度
curl -s -X POST -H "Content-Type":application/json \
--data '{"jsonrpc":"2.0", "method":"eth_blockNumber","params":[],"id":67}' \
 localhost:8545 |awk -F'"' '{print $(NF-1)}'

#如上,查詢結果爲十六進制
#在shell終端查看十進制區塊高度
echo $((`curl -s -X POST -H "Content-Type":application/json --data \
 '{"jsonrpc":"2.0", "method":"eth_blockNumber","params":[],"id":67}' \
 localhost:8545 |awk -F'"' '{print $(NF-1)}'`))

# 使用supervisor管理以太坊geth進程

#安裝啓動supervisor(ubuntu)
apt-get install -y supervisor
systemctl start supervisor
systemctl enable supervisor

#配置geth
mkdir -p /var/log/geth
vim /etc/supervisor/conf.d/geth.conf 
#配置文件以下
[program:geth]
command=/opt/geth/geth --rpc --rpcapi web3,eth,net,db,personal --rpcaddr 0.0.0.0 --rpcport 8545
directory=/opt/geth
user=root
autostart=true
autorestart=true
startretries=9999
exitcodes=0
stopsignal=KILL
stopwaitsecs=10
redirect_stderr=true
logfile_backups=10
stdout_logfile_maxbytes=8MB
stdout_logfile=/var/log/geth/geth.log
#使用supervisor啓動geth
supervisorctl reload
supervisorctl restart geth

# 有時geth進程運行正常,區塊同步故障,須要檢查區塊高度是否增加
# 使用curl訪問api查詢區塊高度,間隔一段時間在查,對比沒增加則重啓進程
# shell分享以下:shell

#!/bin/bash
# check.geth.sh
# By Elven , 2018-11-16
#區塊高度監控

#定時任務
#check blockchain
#*/4 * * * * bash /opt/shell/check.geth.sh

#var
eth_api=localhost:8545
Stime=180
[ $1 -gt $Stime ] && { Stime=$1 ; }

H1=$((`curl -s -X POST -H "Content-Type":application/json --data '{"jsonrpc":"2.0", "method":"eth_blockNumber","params":[],"id":67}'  $eth_api |awk -F'"' '{print $(NF-1)}'`))

sleep $Stime

H2=$((`curl -s -X POST -H "Content-Type":application/json --data '{"jsonrpc":"2.0", "method":"eth_blockNumber","params":[],"id":67}'  $eth_api |awk -F'"' '{print $(NF-1)}'`))

if [[ $H1 -eq $H2 ]];then
    echo "geth restart at  $(date +%F" "%T)  block $H1" >>/tmp/geth.restart.log
    supervisorctl restart geth &>/dev/null
fi
相關文章
相關標籤/搜索