-
Notifications
You must be signed in to change notification settings - Fork 62
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Waku v2 canary tool #754
Comments
Something nice to have would be flag for adjusting timeout, or possible other parameters of the connection in the future. |
This comment was marked as resolved.
This comment was marked as resolved.
I think there's a confusion here. I want a canary tool, not a canary "service". The This way it can be plugged into other automations like Cabot, which we have an instance of: https://canary.infra.status.im/ |
Still waiting... |
Have added this to the next release milestone. |
Before starting with the implementation of the suggested solution, would like to discuss an alternative solution that with my limited understanding would also solve the problem and follows a pattern I've seen before. Alternative solution This would require:
Some advantages:
One can argue that the node itself can't know if a given port is open, live, and accessible from the outside. I'm unsure if this statement is true, but if it is, perhaps we can rely on other local accessible metrics to evaluate this? For example, if at least 1 peer is connected, we can be sure that that port is open and live, otherwise, that peer wouldn't be able to connect. The use of health is something I've seen prysm its some kind of convention. Also the Ethereum beacon-chain spec has something similar. Kindly let me know if you think it's worth investigating this alternative, or if I'm missing something. |
No, you are missing the point of a canary.
To summarize: The canary is intended to check availability and functionality of libp2p port, not the node running. For example, the node might be running fine, and RPC responding fine, but firewall might be blocking libp2p port effectively making the node unavailable for anyone on the internet. Such an RPC healthcheck would be useless in that case. |
Thanks, @jakubgs great explanation. Will then move forward with the suggested solution. |
@jakubgs Mind providing some nodes that should be reachable? i.e. static and store nodes? I'm currently using Edit: I can see that all three support the following protocols. I was just having some issues with
|
All the publicly available nodes should be listed on https://fleets.status.im/. If you have a problem with any specific node please tell me which one so I can investigate it. |
Problem
Currently the only built-in monitoring of a Waku v2 node relies on either:
We want a "canary" service, similar to the one created for Status-Go, that can be used to verify the Waku v2 service at a given port.
Suggested solution
A very simple canary service, would:
relay
protocolAs a next stage this can be extended with more in-depth tests, e.g.:
store
mounted and does it work on monitored node?filter
,lightpush
?etc.
In other words, this must be a separate binary (with its own
make
target) with a separate config. It could live under atools
subfolder withinnwaku
. It should be runnable with either--staticnode:
or--storenode:
config and indicate with an exit code whetherrelay
orstore
(respectively) can be negotiated on the target node. As a next stage the tool can be extended for--filternode:
andlightpush:
checks.Acceptance criteria
./build/waku-canary --staticnode:<multiaddr_to_test>
or./build/waku-canary --storenode:<multiaddr_to_test>
and exits with indication if corresponding protocol (
relay
orstore
) could be negotiated on the target.The text was updated successfully, but these errors were encountered: