Skip to main content

A Python library for xmov systemmonitor

Project description

xmovsystemmonitor

一个用于监测系统CPU和内存使用率的工具,提供HTTP API接口,可以用于监控系统性能(内存、CPU)。

Features

安装

# 本地
pip install xmovsystemmonitor -i https://pypi.org/simple/
# 阿里云
pip install xmovsystemmonitor -i http://pypi.aliyun.com/simple/

用法

# 服务端,被监测端运行此命令
python -m xmovsystemmonitor 
# 指定主机和端口, 并指定最大记录数量
python -m xmovsystemmonitor --host 0.0.0.0 --port 8000 --max-num 3000

测试代码,可以运行在本地,也可以运行在远程服务器上。

from xmovsystemmonitor.client.client import Client
import time

client = Client()
client.start()  # 启动监控, 启动后会立即开始采集数据, 每次start会清空之前采集的数据
time.sleep(10)  # 睡眠10秒
client.stop()  # 停止监控, 停止后会立即停止采集数据, 并抓取统计信息
cpu_min = client.cpu.min
cpu_max = client.cpu.max
cpu_avg = client.cpu.avg
memory_min = client.memory.min
memory_max = client.memory.max
memory_avg = client.memory.avg

# gpu 显存占用量(MB), 多块卡时计算总和。
gpu_min = client.gpu.min
gpu_max = client.gpu.max
gpu_avg = client.gpu.avg

开发测试

export MONITOR_SERVER=http://192.168.88.50:8001
HOME_URL=$MONITOR_SERVER$
VERSION_URL="$MONITOR_SERVER/version"
START_URL="$MONITOR_SERVER/start-monitoring"
STAT_URL="$MONITOR_SERVER/statistic"
STOP_URL="$MONITOR_SERVER/stop-monitoring"

# 打开回显
set -x

cur $VERSION_URL
sleep 1s
curl $HOME_URL
sleep 1s

curl $START_URL
sleep 2s
curl $STAT_URL
sleep 1s
curl $STOP_URL




```python
import pytest
import requests
import json
from functools import partial

json_dump = partial(json.dumps, indent=4, ensure_ascii=False)


def test_get_system_info():
    response = requests.get("http://localhost:8000/")
    print(response.json())
    assert response.status_code == 200
    assert "cpu_percent" in response.json()
    assert "memory_percent" in response.json()

def test_start_monitoring():
    response = requests.get("http://localhost:8000/start-monitoring")
    print(response.json())
    assert response.status_code == 200
    assert "message" in response.json()
    assert response.json()["message"] == "监控已启动"

def test_stop_monitoring():
    response = requests.get("http://localhost:8000/stop-monitoring")
    print(response.json())
    assert response.status_code == 200
    assert "message" in response.json()
    assert response.json()["message"] == "监控已停止"

def test_statistic():
    response = requests.get("http://localhost:8000/statistic")
    print(json_dump(response.json()))
    assert response.status_code == 200
    assert "cpu_percent" in response.json()
    assert "memory_percent" in response.json()
    assert "data_list" in response.json()

开发配置

# 克隆仓库
git clone git@github.com:atanx/xmovsystemmonitor.git
cd xmovsystemmonitor

# 安装开发依赖
pip install -e ".[dev]"

# 手动修改修改__init__.py中的__version__, 然后打包
make build

# 上传到xmov-pypi, 需要安装twine, 配置~/.pypirc
make upload

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xmovsystemmonitor-1.4.7.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xmovsystemmonitor-1.4.7-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file xmovsystemmonitor-1.4.7.tar.gz.

File metadata

  • Download URL: xmovsystemmonitor-1.4.7.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.19

File hashes

Hashes for xmovsystemmonitor-1.4.7.tar.gz
Algorithm Hash digest
SHA256 5fb7ec1de79c7742d8363589f1b37884e98de1606d13c9e75ec992d454725831
MD5 e082ac4607d078761c79dd48e75c9819
BLAKE2b-256 2073109d337b397c822021b93616d1c120b0871083671f08bc830f78d976cbf7

See more details on using hashes here.

File details

Details for the file xmovsystemmonitor-1.4.7-py3-none-any.whl.

File metadata

File hashes

Hashes for xmovsystemmonitor-1.4.7-py3-none-any.whl
Algorithm Hash digest
SHA256 217b1ad5109eeb8f21ae8d933d5cf2f47e38f56a78bf500e664365243b38bf93
MD5 3cbfa6c14bfc2e24ac3aa267eee4409e
BLAKE2b-256 3d0b83df602551a19038b30e2dfc9dd39c1a07468275c4d5fdd8f93d3555c405

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page