# monitor-agent **Repository Path**: SoulBGM/monitor-agent ## Basic Information - **Project Name**: monitor-agent - **Description**: 通过http接口的方式来收集服务器的运行状态(CPU、内存、磁盘、jvm、Bps)以及查询程序是否活着的功能 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 4 - **Created**: 2020-10-28 - **Last Updated**: 2025-08-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 说明 端口 9300 ## 接口列表 * [心跳](#心跳) * [获取硬件状态信息](#获取硬件状态信息) * [获取时间同步的信息](#获取时间同步的信息) * [执行命令](#执行命令) * [是否存活](#是否存活) ## 心跳 #### 简要描述: - 获取监控代理是否存活 #### 请求URL: - http://127.0.0.1:9300/heartbeat #### 请求方式: - GET #### 请求示例: - curl http://10.1.7.200:9300/heartbeat #### 返回示例: ``` up ``` ## 获取硬件状态信息 #### 简要描述: - 获取服务器的CPU、内存、磁盘、JVM、网络流量信息 #### 请求URL: - http://127.0.0.1:9300/info #### 请求方式: - GET #### 请求示例: - curl http://10.1.7.200:9300/info #### 返回示例: ```json { "cpu": { "cpuNum": 8, "used": 0.14735772356666665 }, "mem": { "total": 16707833856, "used": 13442658304, "free": 3265175552 }, "sys": { "computerName": "node", "computerIp": "10.1.7.200", "userDir": "/home", "projectPath": "/home", "osName": "Linux", "osArch": "amd64" }, "sysFiles": [ { "dirName": "/", "sysTypeName": "xfs", "typeName": "/", "total": 246815928320, "free": 222230429696, "used": 24585498624, "usage": 0.0996106645 }, { "dirName": "/boot", "sysTypeName": "xfs", "typeName": "/dev/nvme0n1p2", "total": 520794112, "free": 378834944, "used": 141959168, "usage": 0.2725821293 }, { "dirName": "/boot/efi", "sysTypeName": "vfat", "typeName": "/dev/nvme0n1p1", "total": 209489920, "free": 197607424, "used": 11882496, "usage": 0.0567210871 }, { "dirName": "/opt", "sysTypeName": "xfs", "typeName": "/dev/sda1", "total": 999715459072, "free": 994474778624, "used": 5240680448, "usage": 0.0052421721 } ], "network": { "name": "eno1", "mac": "04:0e:3c:d1:af:47", "ip": "10.1.7.200", "recvBytes": 8785, "sendBytes": 9924, "recvPackets": 102, "sendPackets": 99 } } ``` #### 返回参数说明: |参数名|类型|说明| |:----- |:-----|-----| |cpu.logicalCpuCount |int |逻辑CPU数 | |cpu.physicalCpuCount |int |物理CPU数 | |cpu.totalUsed |double |CPU总的使用率 | |cpu.sysUsed |double |CPU系统使用率 | |cpu.userUsed |double |CPU用户使用率 | |cpu.wait |double |CPU当前等待率 | |cpu.idle |double |CPU当前空闲率 | |mem.total |double |内存总量 单位字节 | |mem.used |double |已用内存 单位字节 | |mem.free |double |剩余内存 单位字节 | |jvm.memoryTotal |double |当前JVM占用的内存总数 单位字节 | |jvm.maxAvailableMemory |double |JVM最大可用内存总数 单位字节 | |jvm.freeMemory |double |JVM空闲内存 单位字节 | |jvm.usageMemory |double |JVM已用内存 单位字节 | |jvm.jdkVersion |String |JDK版本 | |jvm.jreHome |String |JRE路径 | |jvm.startTime |long |启动时间 单位毫秒 | |jvm.runTime |long |运行时长 单位毫秒 | |sys.computerName |String |服务器名称 | |sys.computerIp |String |服务器IP | |sys.userDir |String |程序运行时的工作目录 | |sys.projectPath |String |项目路径 | |sys.osName |String |操作系统 | |sys.osArch |String |系统架构/系统位数 | |sysFiles[0].dirName |String |盘符路径 | |sysFiles[0].sysTypeName |String |盘符类型 | |sysFiles[0].typeName |String |盘符名称 | |sysFiles[0].total |long |总磁盘大小 单位字节 | |sysFiles[0].free |long |剩余磁盘大小 单位字节 | |sysFiles[0].used |long |已经使用量 单位字节 | |sysFiles[0].usage |double |磁盘使用率 | |network.name |String |网络接口名称 | |network.mac |String |MAC地址 | |network.ip |String |IP地址 | |network.recvBytes |long |每秒接收到的字节数 | |network.sendBytes |long |每秒发送的字节数 | |network.recvPackets |long |每秒接收到的数据包 | |network.sendPackets |long |每秒发送的数据包 | ## 获取时间同步的信息 #### 简要描述: - 获取服务器最近一次的时间同步的信息 #### 请求URL: - http://127.0.0.1:9300/ntpdate #### 请求方式: - GET #### 请求示例: - curl http://10.1.7.200:9300/ntpdate #### 返回示例: ```json { "ntpIp": "10.200.16.200", "offsetSeconds": -0.00018, "status": 2 } ``` #### 返回参数说明: |参数名|类型|说明| |:----- |:-----|-----| |ntpIp |String |ntp服务器地址 | |offsetSeconds |double |偏移秒数 | |status |int |状态 2 成功对准 1 没有对准 0 服务器不可用 | ## 执行命令 #### 简要描述: - 执行命令并返回执行结果 #### 请求URL: - http://127.0.0.1:9300/exec #### 请求参数说明: |参数名|类型|说明| |:----- |:-----|-----| |command |String |执行命令 | #### 请求方式: - POST #### 请求示例: - curl -X POST http://10.1.7.200:9300/exec -d 'command=ifconfig' #### 返回示例: ```shell eno1: flags=4163 mtu 1500 inet 10.1.7.200 netmask 255.255.255.0 broadcast 10.1.7.255 inet6 fe80::60e:3cff:fed1:af47 prefixlen 64 scopeid 0x20 ether 04:0e:3c:d1:af:47 txqueuelen 1000 (Ethernet) RX packets 802289819 bytes 625727714237 (582.7 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 582854343 bytes 110184289200 (102.6 GiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 0 (Local Loopback) RX packets 1731491776 bytes 14149810698953 (12.8 TiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1731491776 bytes 14149810698953 (12.8 TiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099 mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:1a:be:20 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ``` ## 是否存活 #### 简要描述: - 查看某个软件是否存活 #### 请求URL: - http://127.0.0.1:9300/isAlive #### 请求参数说明: |参数名|类型|说明| |:----- |:-----|-----| |processNames |String |软件进程名称和端口号 软件进程名称和端口用:隔开 多个以,隔开 | #### 请求方式: - GET #### 请求示例: - curl http://10.1.7.200:9300/isAlive?processNames=QuorumPeerMain:2181,namenode.NameNode,datanode.DataNode,HMaster,HRegionServer #### 返回示例: ```json [ { "name": "QuorumPeerMain:2181", "status": true }, { "name": "namenode.NameNode", "status": true }, { "name": "datanode.DataNode", "status": true }, { "name": "HMaster", "status": true }, { "name": "HRegionServer", "status": true } ] ``` #### 返回参数说明: |参数名|类型|说明| |:----- |:-----|-----| |name |String |软件进程名称和端口号 | |status |boolean |存活状态 true存活反之down掉了 |