zoukankan      html  css  js  c++  java
  • BHD钱包部署【生态池/合作池】

    前序

    BHD网址:https://btchd.org/#wallet

    注:我这里是centos7, 所以我选linuxPC

    部署

    解压与配置

    tar -zxf bhd-v1.3.4.0-d909c0e-x86_64-linux-gnu.tar.gz

    注: 大概就长这个样子, 生态池和合作池是一样的, 端口不同而已。

    启动之前记得把data目录替换(如果有原数据的话), 添加配置文件btchd.conf

     启动

    /opt/bhd-wallet/bin/btchdd -datadir=/opt/bhd-wallet/data/
    

    直接nohup也行, supervisord也行, 下面扔个supervisord维护的配置过来

    [program:btchdd_co]
    user=root
    directory=/opt/bhd-wallet/
    environment=LD_LIBRARY_PATH="/opt/bhd-wallet/lib"
    command=/opt/bhd-wallet/bin/btchdd -datadir=/opt/bhd-wallet/data/
    numprocs=1
    startsecs=3
    startretries=3
    autostart=true
    autorestart=true
    process_name=%(program_name)s
    

    就这样的启动成功了

    验证

    1.查看区块

    https://btchd.org/explorer/block

    对比与自己钱包的块值

    /opt/bhd-wallet/btchd-cli.sh getMiningInfo
    

     对比线上最新的+1

     下面还有两条出数据代表正常

    /opt/bhd-wallet/btchd-cli.sh getblockchaininfo
    /opt/bhd-wallet/btchd-cli.sh listsignaddresses
    

    告警shell

    注:发现钱包掉线马上告警, 主要使用的是getMininfo去获取每个字段中的值, 然后判断非空, 如果有空, 证明钱包挂了, 这是异常情况, 告警。当告警完之后, 获取到数据代表正常,

    这个时候再发一条恢复告警提示管理员或者开发人员, 当无挂掉得时候正常显示, 可以使用nohup指定重定向日志。

    #*************************************************************************
    #         > File Name: btchddProcess.sh
    #         > Author: chenglee
    #         > Main : chengkenlee@sina.com
    #         > Blog : http://www.cnblogs.com/chenglee/
    #         > Created Time : 2019年08月22日 星期一 14时28分49秒
    #*************************************************************************
    #!/bin/bash
    
    hostname=`hostname`
    NetWorkIP=`ip addr |grep inet |grep -v inet6 |grep eth0|awk '{print $2}' |awk -F "/" '{print $1}'`
    
    BtchddProcess="btchdd_co"
    count=0
    #online
    webhook="这里填写你的钉钉机器人告警url"
    #test
    
    function BTCHDDERROR(){
        currTime1=`echo $(date +"%Y-%m-%d.%T")`
        currchengtime=`echo $(date +"%Y-%m-%d %T")`
        SsPid="$$"
        curl ''$webhook'' 
       -H 'Content-Type: application/json' 
       -d '{"msgtype": "text", 
            "text": {
                 "content": "
    服务器:'$hostname' 发生: '$BtchddProcess'活性故障!
    
    [
    告警主机:'$hostname'
    告警地址:'$NetWorkIP'
    监控项目:'$BtchddProcess'
    告警等级:高
    当前状态:中断
    告警信息:'$BtchddProcess' is down
    告警时间:'$currTime1'
    事件ID:'$SsPid'
    ]
    "
            }
          }'
    }
    function BTCHDDRESTART(){
        currTime2=`echo $(date +"%Y-%m-%d.%T")`
        currchengtime2=`echo $(date +"%Y-%m-%d %T")`
        SsPid="$$"
        continueTime=$(($(date +%s -d "$currchengtime2") - $(date +%s -d "$currchengtime")));
        curl ''$webhook'' 
       -H 'Content-Type: application/json' 
       -d '{"msgtype": "text", 
            "text": {
                 "content": "
    服务器:'$hostname' 发生: 进程'$BtchddProcess'活性恢复!
    
    [
    告警主机:'$hostname'
    告警地址:'$NetWorkIP'
    监控项目:'$BtchddProcess'
    告警等级:中
    当前状态:运行
    告警信息:'$processname' restart success
    告警时间:'$currTime1'
    恢复时间:'$currTime2'
    持续时间:'$continueTime' s
    事件ID:'$SsPid'
    ]
    "
            }
          }'
    }
    
    :<<cheng
    function BTCHDDRESTARTOFF(){
        curl ''$webhook'' 
       -H 'Content-Type: application/json' 
       -d '{"msgtype": "text", 
            "text": {
                 "content": "高级告警:[主机:'$hostname' - 进程:'$BtchddProcess' - 操作:活性检测异常 - 状态:重启失败]"
            }
          }'
    }
    cheng
    
    function BTCHDDSUCC(){
        curl ''$webhook'' 
       -H 'Content-Type: application/json' 
       -d '{"msgtype": "text", 
            "text": {
                 "content": "高级告警:[主机:'$hostname' - 进程:'$BtchddProcess' - 操作:活性检测异常 - 状态:恢复]"
            }
          }'
    }
    
    function btstatus(){
        #curl -v -X POST 'http://127.0.0.1:8732/burst?requestType=getMiningInfo' > status
        curl -X POST 'http://localhost:8911/burst?requestType=getMiningInfo' > status
        sleep 2;
        Height=`cat status | awk -F ',' '{print$1}' | awk -F ':' '{print$2}'`
        GenerationSignature=`cat status | awk -F ',' '{print$2}' | awk -F ':' '{print$2}' | awk -F '"' '{print$2}'`
        BaseTarget=`cat status | awk -F ',' '{print$3}' | awk -F ':' '{print$2}' | awk -F '"' '{print$2}'`
        TargetDeadline=`cat status | awk -F ',' '{print$4}' | awk -F ':' '{print$2}'`
        RequestProcessingTime=`cat status | awk -F ',' '{print$5}' | sed 's/}//' | awk -F ':' '{print$2}'`
    }
    function SKill(){
        Pid=`ps aux | grep "btchdd" | grep -v grep | wc -l`
        if [ $Pid > 0 ];then
            ps aux | grep "btchdd" | grep -v grep | awk -F ' ' '{print$2}' | xargs kill -9
            BTCHDDRESTART
            if [ -z "$Height" -o -z "$GenerationSignature" -o -z "$BaseTarget" -o -z "$TargetDeadline" -o -z "$RequestProcessingTime" ];then
                echo;
            else
                BTCHDDSUCC
            fi
        fi
    }
    function check(){
    	btstatus
        if [ -z "$Height" -o -z "$GenerationSignature" -o -z "$BaseTarget" -o -z "$TargetDeadline" -o -z "$RequestProcessingTime" ];then
            BTCHDDERROR
            sleep 5;
            count=$[count+1]
            echo "[suspend:$count]"
            echo "#####1:[$Height],2:[$GenerationSignature],3:[$BaseTarget],4:[$TargetDeadline],5:[$RequestProcessingTime]####"
        else
            echo "Success"
            echo "#####1:[$Height],2:[$GenerationSignature],3:[$BaseTarget],4:[$TargetDeadline],5:[$RequestProcessingTime]####"
            sleep 1;
    
            if [ $count -gt 0 ];then
                BTCHDDRESTART
                count=0
                echo "[suspend:$count]"
            fi
        fi
    }
    function main(){
        while :
        do
            currTime=$(date +"%Y-%m-%d %T")
            echo $currTime
            check
            echo;
            sleep 60;
        done
    }
    main
    

     

    因为配置了supervisord自动拉起, 所以每次中断的时候就会自动重启。

  • 相关阅读:
    MySQL ------ 触发器(TRIGGER)(二十七)
    MySQL ------ 游标(CURSOR)(二十六)
    小程序:ajax(页面跳转方式、http、ajax的应用)
    小程序:phpStudy(下载与安装、创建数据库)
    redis:key(常用命令、命名规范)
    redis:基础(内存维护策略、redis的开启与退出、RedisDesktopManager的安装与使用)
    小程序:列表(获取json中的数据)
    svn:IDEA与SVN(IDEA删除、检出、更新项目、解决冲突、恢复历史版本)
    svn:IDEA与SVN(配置SVN、IDEA添加项目到SVN)
    java:面向接口编程(解耦)
  • 原文地址:https://www.cnblogs.com/chenglee/p/11494926.html
Copyright © 2011-2022 走看看