日常运维&监控告警项
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>
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