# Lotus 集群监控

# 数据收集声明

为了给用户提供更高质量的服务,原语云需要收集服务所需一些必要的信息,并且仅在为用户提供服务时合理合法使用这些数据。 运行 Lotus-Monitor 需要收集 Lotus 集群的健康状态信息,以便于给用户提供 Lotus 集群预警服务,该应用为可选安装,用户可以自主选择是否安装。

Lotus-Monitor 收集的数据结构如下:

{
	"Miner": "t01000",
	"Owner": "t3qzjkeoswgaeoyxioxxxx", // Owner 钱包地址
	"Worker": "t3qzjkeoswgaeoyxiobyyyy", // Worker 钱包地址
	"Post": "t3qzjkeoswgaeoyxioju73t3xtzzzzz", // Post 钱包地址
	"MinerBalance": "419274.60663", // Owner 钱包余额
	"OwnerBalance": "49998999.82114", // Worker 钱包余额
	"WorkerBalance": "49998999.82114", // Post 钱包余额
	"PostBalance": "99.13355",
	"PreCommitBalance": "0.00000",
	"PledgeBalance": "0.09717",
	"VestingBalance": "311941.70067",
	"AvailableBalance": "107332.80879",
	"Committed": 400,
	"Proving": 400, // Proving 扇区数量
	"Active": 400,
	"Faulty": 0, // 错误扇区数量
	"TotalPower": "3506438144", // 全网总 SL
	"MinerPower": "3506438144", // 当前 Miner 有效 SL
	"SectorSize": 8388608, // 扇区大小
	"SyncState": {}, // 同步信息
	"StorageInfos": [], // Miner 存储设备列表
	"SealingJobs": [], // 封装任务列表
	"SealingWorkers": [], // 封装 Worker 列表
	"ProverWorkers": [], // 证明 Worker 列表
	"ProverJobs": [], // 证明任务列表
	"Version": 20220310, // 数据版本
	"Online": true // Miner 是否离线
}
查看一个完整的数据包
{
    "Miner": "t01000",
    "Owner": "t3qzjkeoswgaeoyxiobhhp5xtkiv2ju73t3xje7x3kst3ze2mmg5wlv5cciksc3nlfshwnx224pgnq6nkac5aa",
    "Worker": "t3qzjkeoswgaeoyxiobhhp5xtkiv2ju73t3xje7x3kst3ze2mmg5wlv5cciksc3nlfshwnx224pgnq6nkac5aa",
    "Post": "t3qzjkeoswgaeoyxiobhhp5xtkiv2ju73t3xje7x3kst3ze2mmg5wlv5cciksc3nlfshwnx224pgnq6nkac5aa",
    "MinerBalance": "419274.60663",
    "OwnerBalance": "49998999.82114",
    "WorkerBalance": "49998999.82114",
    "PostBalance": "49998999.82114",
    "PreCommitBalance": "0.00000",
    "PledgeBalance": "0.09717",
    "VestingBalance": "311941.70067",
    "AvailableBalance": "107332.80879",
    "Committed": 400,
    "Proving": 400,
    "Active": 400,
    "Faulty": 0,
    "TotalPower": "3506438144",
    "MinerPower": "3506438144",
    "SectorSize": 8388608,
    "SyncState": {
        "Base": 0,
        "Target": 0,
        "Stage": 0,
        "Height": 0,
        "Message": ""
    },
    "StorageInfos": [
        {
            "Path": "/home/rock/.genesis-sectors",
            "Cache": {
                "Path": "/home/rock/.genesis-sectors/cache",
                "Size": 2047408050176,
                "Avail": 1491209994240,
                "Used": 556198055936,
                "State": {
                    "Writable": true,
                    "Readable": true,
                    "WSuccess": false,
                    "RSuccess": true
                },
                "ErrNo": 0,
                "ErrMsg": ""
            },
            "Sealed": {
                "Path": "/home/rock/.genesis-sectors/sealed",
                "Size": 2047408050176,
                "Avail": 1491209994240,
                "Used": 556198055936,
                "State": {
                    "Writable": true,
                    "Readable": true,
                    "WSuccess": false,
                    "RSuccess": true
                },
                "ErrNo": 0,
                "ErrMsg": ""
            }
        },
        {
            "Path": "/data/miner",
            "Cache": {
                "Path": "/data/miner/cache",
                "Size": 511860137984,
                "Avail": 189605126144,
                "Used": 322255011840,
                "State": {
                    "Writable": true,
                    "Readable": true,
                    "WSuccess": true,
                    "RSuccess": true
                },
                "ErrNo": 0,
                "ErrMsg": ""
            },
            "Sealed": {
                "Path": "/data/miner/sealed",
                "Size": 511860137984,
                "Avail": 189605126144,
                "Used": 322255011840,
                "State": {
                    "Writable": true,
                    "Readable": true,
                    "WSuccess": true,
                    "RSuccess": true
                },
                "ErrNo": 0,
                "ErrMsg": ""
            }
        }
    ],
    "SealingJobs": [],
    "SealingWorkers": [
        {
            "ID": "089a4db5-a806-40ef-888a-39989fc77546",
            "NodeId": "6996989310733648150",
            "Hostname": "c2-yyyun-3950x",
            "Address": "192.168.2.201:4567",
            "Disabled": true,
            "Status": "running",
            "TaskStats": {
                "C1": " 0, 0, 0,-1",
                "C2": " 0, 0, 0, 1",
                "FIN": " 0, 0, 0,-1",
                "FRU": " 0, 0, 0,-1",
                "GET": " 0, 0, 0,-1",
                "PR1": " 0, 0, 0,-1",
                "PR2": " 0, 0, 0, 1",
                "STR": "0, 0, 0,-1"
            }
        },
        {
            "ID": "4ce6652c-1a17-4219-9e90-1c65e0668397",
            "NodeId": "7052187154916835606",
            "Hostname": "p1-RockYang",
            "Address": "192.168.2.100:3457",
            "Disabled": false,
            "Status": "running",
            "TaskStats": {
                "C1": " 0, 0, 0,-1",
                "FIN": " 0, 0, 0,-1",
                "FRU": " 0, 0, 0,-1",
                "GET": " 0, 0, 0,-1",
                "GSK": " 0, 0, 0, 3",
                "PC1": " 0, 0, 0, 3",
                "PR1": " 0, 0, 0,-1",
                "RU": " 0, 0, 0,-1",
                "STR": "0, 0, 1,-1",
                "UNS": " 0, 0, 0,-1"
            }
        },
        {
            "ID": "57bd76a6-8c63-4f6e-a578-537fbd411a87",
            "NodeId": "7052187154916835606",
            "Hostname": "p2-RockYang",
            "Address": "192.168.2.100:3458",
            "Disabled": false,
            "Status": "running",
            "TaskStats": {
                "C1": " 0, 0, 0,-1",
                "FIN": " 0, 0, 0,-1",
                "FRU": " 0, 0, 0,-1",
                "GET": " 0, 0, 0,-1",
                "PC2": " 0, 0, 0, 1",
                "PR1": " 0, 0, 0,-1",
                "STR": "0, 0, 0,-1",
                "UNS": " 0, 0, 0,-1"
            }
        },
        {
            "ID": "b3d8675a-9a99-42c3-9599-484f53e69c87",
            "NodeId": "7052187154916835606",
            "Hostname": "RockYang",
            "Address": "192.168.2.100:2345",
            "Disabled": false,
            "Status": "running",
            "TaskStats": {
                "C1": " 0, 0, 0,-1",
                "FIN": " 0, 0, 0, 3",
                "FRU": " 0, 0, 0,-1",
                "GET": " 0, 0, 0, 3",
                "PR1": " 0, 0, 0,-1",
                "STR": "0, 0,400,-1"
            }
        },
        {
            "ID": "df26adc4-6c5e-417e-aa0a-23d51bd8a120",
            "NodeId": "7052187154916835606",
            "Hostname": "ap-RockYang",
            "Address": "192.168.2.100:4568",
            "Disabled": false,
            "Status": "running",
            "TaskStats": {
                "AP": " 0, 0, 0, 2",
                "C1": " 0, 0, 0,-1",
                "FIN": " 0, 0, 0,-1",
                "FRU": " 0, 0, 0,-1",
                "GET": " 0, 0, 0,-1",
                "PR1": " 0, 0, 0,-1",
                "STR": "0, 0, 0,-1"
            }
        }
    ],
    "ProverWorkers": [
        {
            "ID": "ec936cb9-9b9c-4ca4-ad64-50b88397a6a0",
            "Hostname": "local-prover",
            "NodeId": "7052187154916835606",
            "Address": "192.168.2.100:2345",
            "WinningPost": true,
            "WinningWorker": 1,
            "WindowPost": true,
            "WindowWorker": 1,
            "BatchPartitions": 7,
            "SealingMgr": true,
            "SectorStore": true,
            "DealsMgr": true,
            "Status": "running",
            "Disabled": true,
            "Locked": true
        }
    ],
    "ProverJobs": [
        {
            "Id": "755029e0",
            "TaskType": "WinningPoSt",
            "Args": "{Sector: [192]}",
            "Timeout": 9,
            "Status": "running",
            "Start": 1647339539,
            "WorkerId": "ec936cb9-9b9c-4ca4-ad64-50b88397a6a0",
            "WorkerName": "local-prover",
            "WorkerAddr": "192.168.2.100:2345",
            "Took": "1.3s"
        }
    ],
    "Version": 20220310,
    "Online": true
}

# 安装 lotus-monitor 应用

  1. 到应用中心添加 lotus-monitor 应用到桌面。

  2. 下载 lotus-monitor 最新版程序到 Miner 节点 /var/www/html/monitor 目录下(请根据您 Miner CPU 类型下载指定的版本)。

    mkdir /var/www/html/monitor
    # amd 版本下载地址
    wget http://mirrors.yyyun.pro/lotus/1.15.1/20220506/amd/lotus-monitor -O /var/www/html/monitor/lotus-monitor-1.15.1
    # intel 版本下载地址
    wget http://mirrors.yyyun.pro/lotus/1.15.1/20220506/intel/lotus-monitor -O /var/www/html/monitor/lotus-monitor-1.15.1
    
  3. 修改 lotus-monitor 应用,将 AMD版本下载地址Intel版本下载地址 下载地址都改成你局域网的下载地址:

    http://127.0.0.1:17181/monitor/lotus-monitor-1.15.1
    
  4. 双击桌面 lotus-monitor 图标,点击 节点预览 -> 点此一键安装,选择 Miner 节点,lotus-monitor 必须安装在 Miner 节点上。

  5. 启动 lotus-monitor 应用。

# lotus-monitor 功能介绍

当前版本主要做了一些集群基本信息的监控,包括账户信息监控,存储监控,以及任务调度监控等。

  1. 集群基本信息预览,这个功能跟区块浏览器的存储账户面板类似。

  2. 存储信息面板,显示 Miner 上的所有的存储设备的使用状况,以及读写是否正常。

  3. 封装任务列表面板,显示当前正在运行的任务列表,以及各类任务(AP/PC1/PC2/C2等)的数量。从该页面你可以快速判断是否有异常任务。

  4. 封装 Worker 列表面板,从该页面你可以快速了解当前 worker 的任务调度情况,大概判断出 Miner 的任务调度是否合理。

  5. 证明任务列表面板,显示当前正在运行的时空证明和爆块证明任务的信息。

  6. 证明 Worker 列表面板,显示当前所有的证明 Worker 列表。

# 集群预警信息推送

对于集群的预警信息,目前我们仅提供了微信推送渠道。您需要绑定微信账号,并且关注原语云微信公众号才可以接收到集群预警信息。

您在原语云打开集群监控页面的时候,系统会提示您绑定微信账号以及关注原语云公众号才可以使用原语云的 Lotus 集群监控功能以及消息推送。

预警消息将以微信模板消息的方式推送到您的微信上面:

上次更新: 2022/5/7 12:58:14