Fedora Hubs SOP
Contact Information
- Owner
-
Fedora Infrastructure Team
- Contact
-
#fedora-admin, sysadmin-main, sysadmin-tools, sysadmin-hosted
- Location
-
?
- Servers
-
<prod-srv-hostname>, <stg-srv-hostname>, hubs-dev.fedorainfracloud.org
- Purpose
-
Contributor and team portal.
Description
Fedora Hubs aggregates user and team activity throughout the Fedora infrastructure (and elsewhere) to show what a user or a team is doing. It helps new people find a place to contribute.
Components
Fedora Hubs has the following components:
-
a SQL database like PostgreSQL (in the Fedora infra we’re using the shared database).
-
a Redis server that is used as a message bus (it is not critical if the content is lost). System service:
redis
. -
a MongoDB server used to store the contents of the activity feeds. It’s JSON data, limited to 100 entries per user or group. Service:
mongod
. -
a Flask-based WSGI app served by Apache + mod_wsgi, that will also serve the JS front end as static files. System service:
httpd
. -
a Fedmsg listener that receives messages from the fedmsg bus and puts them in Redis. System service:
fedmsg-hub
. -
a set of "triage" workers that pull the raw messages from Redis, process them using SQL queries and puts work items in another Redis queue. System service:
fedora-hubs-triage@
. -
a set of "worker" daemons that pull from this other Redis queue, work on the items by making SQL queries and external HTTP requests (to Github for example), and put reload notifications in the SSE Redis queue. They also access the caching system, which can be local files or memcached. System service:
fedora-hubs-worker@
. -
The SSE server (Twisted-based) that pulls from that Redis queue and sends reload notifications to the connected browsers. It handles long-lived HTTP connection but there is little activity: only the notifications and a "keepalive ping" message every 30 seconds to every connected browser. System service:
fedora-hubs-sse
. Apache is configured to proxy the/sse
path to this server.
Managing the services
Restarting all the services:
systemctl restart fedmsg-hub fedora-hubs-\*
By default, 4 triage
daemons and 4 worker
daemons are enabled. To
add another triage
daemon and another worker
daemon, you can run:
systemctl enable --now fedora-hubs-triage@5.service systemctl enable --now fedora-hubs-worker@5.service
It is not necessary to have the same number of triage
and worker
daemons, in fact it is expected that more worker
than triage
daemons
will be necessary, as they do more time-consuming work.
Hubs-specific operations
Other Hubs-specific operations are done using the fedora-hubs command:
$ fedora-hubs Usage: fedora-hubs [OPTIONS] COMMAND [ARGS]... Options: --help Show this message and exit. Commands: cache Cache-related operations. db Database-related operations. fas FAS-related operations. run Run daemon processes.
Manipulating the cache
The cache
subcommand is used to do cache-related operations:
$ fedora-hubs cache Usage: fedora-hubs cache [OPTIONS] COMMAND [ARGS]... Cache-related operations. Options: --help Show this message and exit. Commands: clean Clean the specified WIDGETs (id or name). coverage Check the cache coverage. list List widgets for which there is cached data.
For example, to check the cache coverage:
$ fedora-hubs cache coverage 107 cached values found, 95 are missing. 52.97 percent cache coverage.
The cache coverage value is an interesting metric that could be used in a Nagios check. A value below 50% could be considered as significant of application slowdowns and could thus generate a warning.
Interacting with FAS
The fas
subcommand is used to get information from FAS:
$ fedora-hubs fas Usage: fedora-hubs fas [OPTIONS] COMMAND [ARGS]... FAS-related operations. Options: --help Show this message and exit. Commands: create-team Create the team hub NAME from FAS. sync-teams Sync all the team hubs NAMEs from FAS.
To add a new team hub for a FAS group, run:
$ fedora-hubs fas create-team <fas-group-name>