日常运维&监控告警项

1.系统硬件性能&宕机&网络故障监控告警

  • 监控项:CPU、内存、GPU、磁盘空间、磁盘I/O,宕机/网络不可达

2.钱包余额检查&余额不足告警

  • 钱包管理常用操作:
    • 列出钱包地址:lotus wallet list
    • 查询余额:lotus wallet balance <WALLET_ADDRESS>
    • 默认钱包地址:lotus wallet default
    • 设置默认钱包地址:lotus wallet set-default <WALLET_ADDRESS>
    • 从默认钱包地址发行代币:lotus send <TARGET_ADDRESS> <AMOUNT>
    • 从指定钱包地址发行代币:lotus send --from=<SENDER_ADDRESS> <TARGET_ADDRESS> <AMOUNT>
    • 导出钱包为私钥:lotus wallet export <WALLET_ADDRESS> > xxx.privatekey
    • 通过私钥导入钱包:lotus wallet import xxx.privatekey
    • 钱包月提现:lotus-miner actor withdraw <command options> <amount (FIL)>

3.lotus daemon区块同步检查,避免出现节点与主网高度不一致的情况。

  • 查看节点与主网同步差异:lotus sync wait,若diff始终大于2,则有异常,需要对lotus节点网络、连接点质量、硬盘容量等进行排查,否则会出现掉算力情况。

4.lotus-worker计算节点掉线检查

  • lotus-miner storage list
  • 查看是否有disable状态:lotus-miner sealing workers |grep hostname |sort -k4
  • 查看连接的节点:lotus net peers
  • 查看节点连接状态:lotus sync status
  • 启动lotus节点:lotus daemon  ·
  • 停止lotus节点:lotus daemon stop

5.消息堵塞检查与告警

  • 查看消息堵塞数量:lotus mpool pending --local |wc -l ,若不为0,则需手动清理消息。

6.调度程序工作问题检查

  • lotus-miner sealing jobs 
  • lotus-miner sealing workers | grep hostname
  • ##出现下面3种的任何一种情况,都表示调度节点worker不接收任何工作任务。
  • cat miner.log |grep -a "didn't receive heartbeats for"|awk '{print $8}'|sort -rn|uniq -c

  • cat miner.log |grep -a "out of space "|awk '{print $8}'|sort -rn|uniq -c

  • cat miner.log |grep -a "trySchedMine skipping disabled worker "|awk '{print $9}'|sort -rn|uniq -c

7.时空证明日常检查

  • Miner机器证明文件(证明文件目录中文件是否存在)
  • 时空证明的账户是否有消息堵塞
  • 节点机器使用lotus sync wait,查看是否同步到最新高度
  • 检查显卡驱动,nvidia-smi看一下驱动是否正常
  • 查看Miner进程(lotus-miner sealing job看进程在不在)

8.异常状态扇区检查处理

  • 扇区是filecoin网络中的数据存储单元,目前主网的扇区大小有32GiB,64GiB。主要是通过PC1/PC2/C2的计算过程后,最终得到将要存储入扇区内的数据,存入扇区内,该扇区就属于区块链上的存储。
  • 扇区sectors主要状态包括:PreCommit1(PC1)、PreCommit2(PC2)、Committing2(C2)、FinalizeSector
  • 列出所有扇区信息:lotus-storage-miner sectors list
  • 查看所有扇区的当前状态:lotus-storage-miner sectors status {SectorID}
  • 查看某个扇区的历史状态:lotus-storage-miner sectors status --log {SectorID}
  • 更新扇区状态:lotus-miner sectors update-state --really-do-it <sectorID> <newstate>。
    • 例如将CommitFailed状态改为Commiting状态:lotus-miner sectors update-state --really-do-it <sectorsID> Committing
  • 删除扇区:PreCommitFailed和SealPreCommitFailed状态扇区还没有质押,可以直接通过命令删除该状态的扇区
    • lotus-miner sectors remove --really-do-it <sectorID>

FILECOIN矿机项目日常监控维护_FILECOIN

9.掉算力问题排查与恢复

  • windowpost是指每隔一段时间对已提交的sector扇区数据提供存储证明。windowpost的周期是一天,分48个window,证明时会在每个分区partition的所有扇区sector中抽取10个sector进行验证计算,所以windowpost对集群网络、存储性能、lotus节点状态、lotus-miner存放硬盘的性能要求高,都会影响算力。
  • 掉算力主要从以下几点排查:集群网络、存储性能、lotus节点状态、节点同步

10.任务超时告警

    louts-miner sealing jobs |awk '{print $7}' |head -n 2 |tail -n 1

11.爆块通知告警

    lotus chain list --count {0} |grep {1} |wc -l

12.miner lifecycle矿工程序生命周期内,安全的重启矿工进程

  • 停止矿工程序前,先确认是否有正在接收客户的数据和正在检索客户的数据

          lotus-miner storage-deals list

          lotus-miner retrieval-deals list

          lotus-miner data-transfers list

  • ##等待截止日期deadline之前完成新交易时,可以暂时禁止存储交易和检索交易,可以确保关闭时矿工程序时不会又有新的交易过来。

           lotus-miner storage-deals selection reject --online --offline

           lotus-miner retrieval-deals selection reject --online --offline

  • ##检查当前扇区状态,重启矿工程序之前应检查正在进行的密封操作,并等待各阶段完成。

           lotus-miner sectors list

  • ##检查是否有未完成的操作,通过比较current epoch和deadline,如果current epoch早于deadline,此时不能关闭矿工程序。

    $ lotus-miner proving info

    Miner: t01000
    Current Epoch: 497                                              ##当前时间所处的位置
    Proving Period Boundary: 658
    Proving Period Start: 658 (in 1h20m30s)
    Next Period Start: 3538 (in 25h20m30s)
    Faults: 0 (0.00%)
    Recovering: 0
    Deadline Index: 0
    Deadline Sectors: 768                                          
    Deadline Open: 658 (in 1h20m30s)                     ##deadline时的位置和具体间隔时间
    Deadline Close: 718 (in 1h50m30s)
    Deadline Challenge: 638 (in 1h10m30s)               
    Deadline FaultCutoff: 588 (in 45m30s)                   ##需要45分钟故障申明

  • 重启矿工程序

           lotus-miner stop  或者systemctl stop lotus-miner

          ##重新启动后miner会自动连接到该矿机。但关闭矿机并升级节点,则需要手动启动机器。

  • ##重启完矿工程序后重置交易

            lotus-miner storage-deals selection reset

            lotus-miner retrieval-deals selection reset