add web page to Introducer, with client lists/counts #309
Labels
No Label
0.2.0
0.3.0
0.4.0
0.5.0
0.5.1
0.6.0
0.6.1
0.7.0
0.8.0
0.9.0
1.0.0
1.1.0
1.10.0
1.10.1
1.10.2
1.10a2
1.11.0
1.12.0
1.12.1
1.13.0
1.14.0
1.15.0
1.15.1
1.2.0
1.3.0
1.4.1
1.5.0
1.6.0
1.6.1
1.7.0
1.7.1
1.7β
1.8.0
1.8.1
1.8.2
1.8.3
1.8β
1.9.0
1.9.0-s3branch
1.9.0a1
1.9.0a2
1.9.0b1
1.9.1
1.9.2
1.9.2a1
LeastAuthority.com automation
blocker
cannot reproduce
cloud-branch
code
code-dirnodes
code-encoding
code-frontend
code-frontend-cli
code-frontend-ftp-sftp
code-frontend-magic-folder
code-frontend-web
code-mutable
code-network
code-nodeadmin
code-peerselection
code-storage
contrib
critical
defect
dev-infrastructure
documentation
duplicate
enhancement
fixed
invalid
major
minor
n/a
normal
operational
packaging
somebody else's problem
supercritical
task
trivial
unknown
was already fixed
website
wontfix
worksforme
No Milestone
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Reference: tahoe-lafs/trac-2024-07-25#309
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
It would be useful if we had a way to look at the Introducer's state, to find
out how many clients are subscribed to hear about storage services, and how
many storage servers are publishing their contact information. The summarized
stats from this data would be particularly useful to graph over time.
Things like:
I've added a basic page to the introducer. It is enabled with the same 'webport' file as the regular client node. The introducer writes its resulting URL to 'node.url' just like the regular client (basically this just prepends an http prefix to the portnumber you picked).
The page currently shows all service announcements in a table: basically the list of storage servers. For each one it shows version numbers, listening IP addresses, and when the first announcement was heard. (it would probably be a good idea to change this to last announcement instead of first. note that we do not forget about announcements until the introducer is bounced).
The page also shows all subscribers (clients). For each one, it shows their nodeid and connecting IP address. If the client is new enough (0.8.0-r2303 or later) then it can also display the nickname and version.
Clients now announce a stub service called 'stub_client'. This is an empty service (subscribers can't actually make the client do anything), but it does serve to get a nickname and version into the introducer's tables. Clients running code older than about 0.8.0-r2303 will not announce this service and will not have nickname/version data displayed.
Tomorrow I'll add a ?t=json variant, and a munin plugin to read the data. This will provide the first item from that list above: how many clients are currently connected. The other items will take more work, but this might be the right place to do it.
The t=json form is now in. It returns a JSON-encoded dictionary. Two keys are
currently defined: "subscription_summary", which contains a dictionary
mapping service name (like "storage") to an integer counting how many nodes
are subscribed to hear about that service, and "announcement_summary", which
contains a dictionary mapping service name to an integer counting how many
nodes have announced that they provide that service.
Remaining things that we'd like to observe: