You are browsing a read-only backup copy of Wikitech. The live site can be found at wikitech.wikimedia.org
Debmonitor
DebMonitor is a Debian package tracker website and tool developed at the Wikimedia Foundation and used to track installed and upgradable packages across the fleet. It has multiple components.
DebMonitor website
The DebMonitor website is a Django-based application installed in an active/passive setup with uwsgi
and nginx
on two dedicated Ganeti VMs and deployed via Scap. The application has two different virtual hosts, one on port 80
for Varnish and one on port 443
for the DebMonitor client (see below). The data is stored on a MySQL database hosted by the m2
cluster.
There is a weekly crontab on each host to run a garbage collection script twice a week to remove orphan objects from the database (e.g. package versions not installed anymore in any host).
DebMonitor client
The debmonitor-client
Debian package is installed on all the clients and reports the installed packages to the DebMonitor active server. It reports them in three different ways:
- A dpkg hook triggered on
Dpkg::Pre-Install-Pkgs
to report any change to packages. It doesn't block package actions on failure. - An APT hook triggered on
APT::Update::Post-Invoke
to report any upgradable packages. It doesn't blockapt-get update
on failure. - A daily crontab to report all installed and upgradable packages to reconcile the data in case any of the above failed.
The client authenticate with the DebMonitor server via mutual authentication using the Puppet certificate, and the server authorize the connecting host to modify only its own data.
Common commands
Manually remove a host from DebMonitor
From one of the cluster::management
hosts (cumin[12]001
as of Oct. 2019) run:
sudo curl -X DELETE https://debmonitor.discovery.wmnet/hosts/${HOST_FQDN} --cert /etc/debmonitor/ssl/cert.pem --key /etc/debmonitor/ssl/server.key
Manually remove an image from DebMonitor
From one of the builder
hosts (boron
as of Dec. 2019) run:
sudo curl -X DELETE https://debmonitor.discovery.wmnet/images/${IMAGE_NAME} --cert /etc/debmonitor/ssl/cert.pem --key /etc/debmonitor/ssl/server.key