April 2023 GMC Call for Grant Applications - Deadline is April 15th

Grants Application

Project

What is the work being proposed?

A docker image which may optionally added to the rocketpool service stack to provide UPS (Uninterrupted Power Supply) monitoring metrics to prometheus to allow for alerting and monitoring of your UPS within Grafana.

Is there any related work this builds off of?

I published this docker image in September of 2022 and have been using it since to import metrics on my CyberPower UPS to Grafana. This implementation uses the CyberPower pwrstat cli to retrieve data from any CyberPower UPS. This grant exists to extend this docker image to also make use of apcupsd to be able to monitor APC UPS’ and create documentation to clarify how a node operator can integrate this image into their rocket pool stack. By providing support for both APC and CyberPower UPS’ I believe this image will be of use to a large percentage of node operators who have a backup power solution.

Will the results of this project be entirely open source (MIT, GPL, Apache, CC BY license or similar)? If not, which parts will not be, why, and under what license will they be published?

This project will be entirely open source under the GPL3 license.

Benefits - enter N/A where appropriate

How does this help people looking to stake ETH for rETH?

N/A

How does this help rETH holders?

By creating tools to help node operators monitor and improve their validator’s uptime, additional value will accrue to rETH holders via increased staking rewards from fewer missed proposals.

How does this help people looking to run a Rocket Pool node for the first time?

N/A

How does this help people already running a Rocket Pool node?

This project helps those running a Rocket Pool node by notifying node operators when their node is at risk of going offline due to a power outage. Many node operators rely on BeaconCha.in to notify them when their validator begins missing attestations, however those with a UPS won’t receive any notification until their UPS’ battery is depleted. This project creates a mechanism for them to be alerted before their node goes offline and implement their contigency plan sooner.

How does this help the Rocket Pool community?

N/A

How does this help RPL holders?

N/A

What other non-RPL protocols, DAOs, projects, or individuals, would stand to benefit from this grant?

The docker image will be general purpose so it can be of use to anyone who wishes to monitor their UPS using Grafana and Prometheus.

Will the resulting project be open source?

Yes.

Team

Who is doing the work?

I will be completing this work (killjoy#9896)

What is the background of the person(s) doing the work? What experience do they have with such projects in the past?

I am a software engineer / founder and have 10+ years of experience in application development and dev ops using tools such as Docker and NodeJS. In the past I have worked in a founding role as a technical lead and full stack developer for several start ups in healthcare and freight tech.

What is the breakdown of the proposed work, in terms of milestones and/or deadlines?

  • Extend the docker image (or create a second variant) which makes use of apcupsd to interface with prometheus in the same manner as the existing docker image: ~ 1 week
  • Test the setup using an APC UPS: ~ 2/3 days
  • Develop documentation to guide node operators on how to add this tool to their stack: ~ 0.5 days
  • Aid in updating the official Rocket Pool documentation.: ~ 1 day

How is the work being tested? Is testing included in the schedule?

The work will be tested by acquiring both a CyberPower and APC device and simulating power outage conditions to ensure proper functioning. This testing time has been accounted for in the project schedule.

How will the work be maintained after delivery?

Both the apcupsd and pwrstat cli applications have not seen major updates in the last 5 years. It is therefore unlikely that this project will require significant ongoing maintainance. However in the case that it does, minor updates may be implemented by myself or community members. If a major change is required a future grant could be submitted.

Payment and Verification

What is the acceptance criteria?

  • Community members are able to successfully integrate the docker image into their rocket pool stack
  • Community members are able to view UPS metrics within Grafana
  • Community members correctly receive alerts when they simulate a power outage (given their internet service is uninterrupted by the outage)

What is the proposed payment schedule for the grant? How much RPL and over what period of time is the applicant requesting?

RPL can be granted within 2 weeks of meeting the acceptance criteria outlined above. I am requesting 5 RPL to cover the cost of the purchase of an APC UPS for testing, and an additional 10 RPL as compensation for development work.

How will the GMC verify that the work’s deliveries match the proposed cadence?

Will communicate with GMC liaison on a regular basis. They may monitor the GitHub repository to view work in progress.

What alternatives or options have been considered in order to save costs for the proposed project?

I could get help from a community member to test the APC UPS rather than purchasing one myself, but for long term support I think it is ideal if I personally have access to both supported types of UPS.

Conflict of Interest

Does the person or persons proposing the grant have any conflicts of interest to disclose? (Please disclose here if you are a member of the GMC or if any member of the GMC would benefit directly financially from the grant).

Nothing to disclose other than the fact that I operate a node and hold RPL.

Will the recipient of the grant, or any protocol or project in which the recipient has a vested interest (other than Rocket Pool), benefit financially if the grant is successful?

No.