Git Product home page Git Product logo

resbeat's Introduction

🔊resbeat

codecov

resbeat is a container agent that can expose container's resource usage via HTTP or websocket API:

  • /ws/ - a websocket endpoint
  • GET /usage/ - an HTTP polling endpoint

resbeat should be installed into the container's image and run along with the main container process. Then, you should expose resbeat's port to let the rest of your system to scrape/consume container's/pod's utilization. This is useful for building functionality around the usage reports like showing the user's env utilization somewhere in your UI.

resbeat could watch the following resources:

  • general system resources via cgroup v1 or v2 (CPU and memory usage)
  • NVIDIA GPU support

Installation

curl -fSL https://github.com/roma-glushko/resbeat/releases/download/1.0.4-dev5/resbeat_Linux_x86_64.tar.gz -o "./resbeat_Linux_x86_64.tar.gz" \
    && tar -vxf resbeat_Linux_x86_64.tar.gz \
    && chmod +x ./resbeat

Usage Report

{
  "collectedAt": "2023-10-15T16:18:43.870139213Z",
  "system": {
    "cpu": {
      "usageInNanos": 67748000,
      "limitInCors": 2,
      "usagePercentage": 0.011306116551813019
    },
    "memory": {
      "usagePercentage": 0.054570711576021634,
      "limitInBytes": 13958643712,
      "usageInBytes": 761733120
    }
  },
  "gpus": {
    "GPU-2f5095ab-d1d7-5b23-3599-1693e0a18016": {
      "usagePercentage": 0,
      "memoryUsedInBytes": 0,
      "totalMemoryInBytes": 17071734784
    }
  }
}

Plans

resbeat is intended to support more resource types like:

  • disk or volume utilization

resbeat's People

Contributors

roma-glushko avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

resbeat's Issues

error during collecting CPU stats: open cpu.cfs_quota_us: no such file or directory

The content of the /proc/mounts file was the following:

overlay / overlay rw,relatime,lowerdir=/var/lib/docker/overlay2/l/FBOJLV7YTERPDYQNQIT4J556VY:/var/lib/docker/overlay2/l/Q5HIEHUH6YTT7SKF6OBYGVFSQH:/var/lib/docker/overlay2/l/GVJQ6X33LKTKCVMSZ5ZVV2HEZ6:/var/lib/docker/overlay2/l/LOP2BDN5VQSQVKEU5FDJ7HV3LE:/var/lib/docker/overlay2/l/5TCM43CMS2PHSE7PEDMOVHQOYP:/var/lib/docker/overlay2/l/HSTQO6YS56YYXWBOW6DH2TRGF7:/var/lib/docker/overlay2/l/SRIH6XTOPK4P7ZH5V2ZMMALPMT:/var/lib/docker/overlay2/l/G5NPWIKSAKVIKDSD2QRUGCMRSG:/var/lib/docker/overlay2/l/27ENOMHRTSGSTZTCHTELPIFYB6:/var/lib/docker/overlay2/l/OKLOWMTCEMJSLC3AJUCGEBPUIB:/var/lib/docker/overlay2/l/CZDQGZGZRLM42RD5VD6TIJVI67:/var/lib/docker/overlay2/l/LKB5EC2X7YTEUAOOLQGZLEYU7W:/var/lib/docker/overlay2/l/UJDHONJ4XIQ52266DTPDKHIZMK:/var/lib/docker/overlay2/l/BOCYTGGXPZJR6OE6K76IK7XRXP:/var/lib/docker/overlay2/l/THB5H3CY3WUY2IVZHHDHQPWMZK:/var/lib/docker/overlay2/l/3OHISJ47OCZ4IJBFK352NRMG5L:/var/lib/docker/overlay2/l/M2CCOPMCJYWUZ5JSI4V4JSCF43:/var/lib/docker/overlay2/l/PWEKRJVG4MTQKVNJECPCNGNXCQ:/var/lib/docker/overlay2/l/OODBULCA3MUVB2L2HXCRAX3L4O:/var/lib/docker/overlay2/l/GDRMBR3UBEXNGAFXHVWLY56DUC:/var/lib/docker/overlay2/l/2NQS3LRTBDR5F42Y7QL52THCP2:/var/lib/docker/overlay2/l/4LUSFEMMEFJFBOHR2SYWZ4MG7U:/var/lib/docker/overlay2/l/2OK426C3F2SVABP7PKECQUEEGA,upperdir=/var/lib/docker/overlay2/4f6636b912991e2e17d47cfd543ef13b3f7c5a1ec3a99f10ad9d94b15301dae5/diff,workdir=/var/lib/docker/overlay2/4f6636b912991e2e17d47cfd543ef13b3f7c5a1ec3a99f10ad9d94b15301dae5/work 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,size=65536k,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666 0 0
sysfs /sys sysfs ro,nosuid,nodev,noexec,relatime 0 0
tmpfs /sys/fs/cgroup tmpfs rw,nosuid,nodev,noexec,relatime,mode=755 0 0
cgroup /sys/fs/cgroup/systemd cgroup ro,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup ro,nosuid,nodev,noexec,relatime,cpu,cpuacct 0 0
cgroup /sys/fs/cgroup/devices cgroup ro,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup ro,nosuid,nodev,noexec,relatime,hugetlb 0 0
cgroup /sys/fs/cgroup/blkio cgroup ro,nosuid,nodev,noexec,relatime,blkio 0 0
cgroup /sys/fs/cgroup/net_cls,net_prio cgroup ro,nosuid,nodev,noexec,relatime,net_cls,net_prio 0 0
cgroup /sys/fs/cgroup/perf_event cgroup ro,nosuid,nodev,noexec,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/pids cgroup ro,nosuid,nodev,noexec,relatime,pids 0 0
cgroup /sys/fs/cgroup/freezer cgroup ro,nosuid,nodev,noexec,relatime,freezer 0 0
cgroup /sys/fs/cgroup/memory cgroup ro,nosuid,nodev,noexec,relatime,memory 0 0
cgroup /sys/fs/cgroup/cpuset cgroup ro,nosuid,nodev,noexec,relatime,cpuset 0 0
mqueue /dev/mqueue mqueue rw,nosuid,nodev,noexec,relatime 0 0
proc /proc/bus proc ro,nosuid,nodev,noexec,relatime 0 0
proc /proc/fs proc ro,nosuid,nodev,noexec,relatime 0 0
proc /proc/irq proc ro,nosuid,nodev,noexec,relatime 0 0
proc /proc/sys proc ro,nosuid,nodev,noexec,relatime 0 0
proc /proc/sysrq-trigger proc ro,nosuid,nodev,noexec,relatime 0 0
tmpfs /proc/acpi tmpfs ro,relatime 0 0
tmpfs /proc/kcore tmpfs rw,nosuid,size=65536k,mode=755 0 0
tmpfs /proc/keys tmpfs rw,nosuid,size=65536k,mode=755 0 0
tmpfs /proc/latency_stats tmpfs rw,nosuid,size=65536k,mode=755 0 0
tmpfs /proc/timer_list tmpfs rw,nosuid,size=65536k,mode=755 0 0
tmpfs /proc/sched_debug tmpfs rw,nosuid,size=65536k,mode=755 0 0
tmpfs /sys/firmware tmpfs ro,relatime 0 0

error while flushing log buffer: sync /dev/stdout: invalid argument

2023-06-23T13:50:18.196Z	INFO	resbeat/handlers.go:48	resbeat is starting
2023-06-23T13:50:18.196Z	INFO	resbeat/handlers.go:133	resbeat is up and running 
 • Websocket API: ws://127.0.0.1:8000/ws/ 
 • HTTP Polling API: http://127.0.0.1:8000/usage/
^C
2023-06-23T13:50:26.663Z	INFO	resbeat/signals.go:31	resbeat received signal (interrupt), terminating
2023-06-23T13:50:26.664Z	INFO	resbeat/monitor.go:43	resource monitor is shutting down
2023-06-23T13:50:26.664Z	INFO	resbeat/handlers.go:144	resbeat is shutting down
2023-06-23T13:50:26.664Z	ERROR	resbeat/main.go:71	error while flushing log buffer: sync /dev/stdout: invalid argument

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.