Grant Proposal: hostd monitoring service

Introduction

Project Name: Sia heartbeat

Name of the organization or individual submitting the proposal: Michał Maj (individual)

Describe your project.
The goal of the project is to create portal allowing users to register for notification when their hostd node goes down. I am planning on creating the following monitoring channels:

  • two independent watchdogs (1 in EU and 1 in US), which will contact nodes via RHPv2 and RHPv3 to check if they are reachable
  • optional software to be run on the same machine as hostd, that will send ping messages to these watchdog satellites, allowing for quicker debugging (is the whole machine down or just RHP communication issue?)

Users should be able to register for the following ways of notification:

  • E-mail notification
  • SMS message

This service is meant to be free. All costs should be covered by grants.

This grant is just for creation of the service and first few weeks of operation. If it succeeds, I will open next grant to secure funds for the service to remain free in long-run.

Who benefits from your project?
Anyone who is running hostd.

How does the project serve the Foundation’s mission of user-owned data?
Self-hosting such watchdogs makes hostd unnecessarily expensive and requires technical knowledge. Providing such portal for free should increase interest in Sia compared to its competitors (who have this feature built-in btw).

Grant Specifics

I estimate project can be up and running for around 2-3 months given I receive total amount of 2500$. This includes:

  • VPS for 4 months
  • Pack of around 1000 SMS worldwide (we will se how quickly it gets eaten up before next grant)
  • Salary for me

Timeline is as follows:

  • August - examine what can be extracted from RHP and what’s the best way of doing it (running hostd locally and querying it or maybe custom partial implementation of RHP)
  • September - by the end of the month portal should be up and runnning
  • October - getting feedback on how it works, improvements. If everything works out - applying for next grant with longer timeframe.

Potential risks that will affect the outcome of the project:
Well, there are only three things that might harm the project:

  • My potential lack of time (I am heavily involved into non-technical voluntary work) - the product will be delivered, it just might be a month later.
  • Lack of interest from the community
  • I am not front-end developer by any means, so portal may come out a little unintuitive. But I will do my best.

Development Information

Will all of your project’s code be open-source? Yes, but I don’t promise there will be documentation on how to run/self-host it (there obviously will be documentation on how to set up additional local watchdog).

Leave a link where code will be accessible for review. GitHub - majudev/hostd-mon

Do you agree to submit monthly progress reports? Yes

Contact info

Email: mimaj@agh.edu.pl

1 Like

It would be very cool to have another service to provide this for hosts.

You can find an example of scanning a host over RHP2 and RHP3 here: https://github.com/SiaFoundation/host-bench/blob/1019366cee8ea65ef8fcfa675d2be6394548887c/benchmark/benchmark.go#L156-L199

Thank you for code sample, I will definitely use it.

Also one more thing: if anyone has ideas on what methods of notification should be implemented, please let me know in this thread. I will consider it.

I’m currently using UptimeRobot (for over a year) which has an app for my iphone. I get alerts within 5 min of a problem on the server and it’s currently free for up to 50 servers.


It would be nice to have an additional backup but I think the above service works well and costs the foundation nothing.

Just my 2 cents

Hello @maju,

Thanks for your proposal! After seeing the value in another tool for host reliability and stability, the committee was happy to approve this grant request.

We’ll reach out via email with onboarding instructions.

Regards,
Kino on behalf of the Sia Foundation and Grants Committee

Glad to hear that! I’ve replied to your email.

Progress Report

This month no progress has been done, except completing onboarding and signing agreement. The whole schedule is going to be shifted by two weeks (it’s already included in the agreement). Additionally my friend decided to help me make project happen and he will be responsible for front-end.

Additionally, our plan is:

  • Using React for front-end
  • Prisma + MySQL/MariaDB as database
  • ExpressJS as backend framework
  • satellites written in Go (because of existing codebase for RHP)
  • satellites connected to main instance via wireguard

This month I will be working on:

  • Checking what can be extracted from RHP
  • Specifying what technologies we will be using
  • Maybe setting up VPS? We’ll see
  • Writing front-end and maybe some mock-up for back-end
  • Buying domain
  • Starting work on satellite

I hope there will be no more delays.

1 Like

Progress Report

Updates on our plan:

  • we are currently using Prisma + PostgreSQL but I am not sure if it’s better than MySQL or not - any advices?
  • Caching some data in redis (volatile cache, empties on restart)
  • ExpressJS as backend framework
  • satellite for RHP written in Go, satellite for extra app written in JS
  • extra app written in C++ and GTK3

We have:

  • written substantial part of the backend, including syncing data from extra app to the database (WIP)
  • created basic frontend, but there’s lots of work to be done (WIP)
  • created skeleton for extra app and tested that it works both with Windows and Linux, and data gets synced into backend
  • bought domain
  • bought VPS
  • completed RHP satellite (but not tested yet)

This month I will be working on:

  • Finishing frontend
  • Finishing backend
  • Implementing e-mail and SMS alerts
  • Finishing sign-on using Google and Microsoft
  • Finishing RHP satellite
  • Closed alpha tests for users that are willing to participate

Next month I will be working on:

  • Finishing and packing up extra app to be easily usable
  • UI/UX improvements
  • Maybe collecting more data than just heartbeat? Like HDD temperatures, SMART status etc.
  • Open beta
  • Writing new grant for keeping the project alive during 2024

All of the code is available in our main repo.

You can see some of the UI at https://sia.watch using login nobody@all and empty password until Monday (2.10.2023). We will be removing local log-in functionality in upcoming week and replacing it with Google/Microsoft sign-on, which will allow only trusted members to log-in until open beta begins.

Progress report

Hi all! Bad news… We are having a delay.

We have:

  • Open beta ready front-end
  • Mostly ready backend with few bugs
  • Untested but finished RHP satellite
  • Finished SSO using Google
  • Admin panel! We completely forgot we will have to create it…

This month we will be working on:

  • Implementing e-mail and SMS alerts
  • Running closed-alpha
  • Finishing and packing up extra app to be easily usable
  • UI/UX improvements
  • Fixing bug in backend which makes hearbeat data unreadable
  • Maybe collecting more data than just heartbeat? Like HDD temperatures, SMART status etc.

If you are willing to participate in closed alpha, please email me at mimaj@agh.edu.pl

Hope we’ll catch up with everything and release open beta during this month.

Hello @maju,

You posted to us in November that you experienced delays with your grant project and have not received additional information from you this month regarding progress on your previously posted goals. Please provide an update soon.

Regards,
Kino on behalf of the Sia Foundation and Grants Committee

Hi! Sorry for the delay, I had a busy time lately.

Website is ready for open beta, I have opened registration posibility. You can add your hostd node and receive SMS and/or e-mail notification when it dies. It will be pinged via RHP v2/v3.

Bug reports are welcome: support@sia.watch

Log in using Google: https://sia.watch

At this point I consider the grant to be finished. Interest seems to be low, nobody signed up for closed alpha… I will try to make extra monitoring app production-ready (packaged with installer etc) on the best-effort basis, but if there will be less than 10 people using the app I consider adding extra features like HDD temperatures/SMART status pointless.

I can’t guarantee website is bug free, since noone besides me participated in closed alpha. If any bugs arise, I will surely fix them (if reported via email I given above).

Cheers!

Hi @maju, I tried accessing and after logging in with my google account, get a success message then a server unavailable message. I can see a 401 on /api/user/me but you said registration should be open?

Hi,
If I understand logs correctly, you are using Chrome. I tested page using Chromium on my PC and it worked fine. I will try to debug it, however could you tell me if it works when you use Firefox?

EDIT: I think the bug has been fixed. It should now work on Chrome too.

Cheers!

Yes I can access the host setup now. I might recommend some tooltips or grey’ed out examples in the fields to assist with the setup. How should the all fields be defined? What is extramon?

Good point. We’ll add them, but after Christmas. For now there’s some hints on how to set it up:

  1. Open dialog for adding new host
  2. Enable RHP and disable Extramon
  3. Open your hostd dashboard, and copy details from here
    screenshot
  4. Set deadtime. After this much time without proper ping response, host will be considered dead and notification will be sent.
    I would actually love to hear back if things work as expected. If not, please send me screenshots and description of what went wrong to support@sia.watch.

I’m not quite sure, but I think that the Sia logo is discouraged from being used directly in 3rd-party projects:

This is screenshot from Sia hostd app, not from my website. It is showing where to find values needed for setting up host on my website. Sia logo is not used on my website anywhere.

1 Like

I’ve emailed as it’s not working as expected.

Just a suggestion, but you might want to add login with email (with verification process) rather than just google. Not everyone has or wants a google account.

That’s deliberate decision to delegate log-in process to 3rd party. I really don’t want to deal with it. You can suggest another 3rd party if you want. Github seems to be fairly popular in tech community, but if you have Github then you probably have Gmail too.

@tizzputt’s issue regarding bad reported status in GUI has been resolved