Cette page a été traduite de l'anglais avec l'aide de l'IA. En cas de divergence, la version anglaise fait référence.
Moniteur d'activité de projet open source propulsé par StackQL
Dans ce guide, nous montrons comment auto-héberger un système de surveillance et d'alerte en temps réel destiné aux mainteneurs de logiciels open source sur GitHub.
stackql est un outil open source qui permet d'interroger des ressources cloud et SaaS et d'interagir avec elles à l'aide d'un langage SQL et de bibliothèques et d'outils de visualisation et d'analyse de données. Si cela vous plaît, donnez-nous une ⭐ !
Recevez des alertes comme celle-ci dans Slack et Discord en temps réel :

Testé avec backend SQL embarqué docker linux
Vue d'ensemble
Lorsque j'ai cherché des outils pour surveiller notre projet open source, j'ai constaté que la plupart ne fonctionnaient pas comme annoncé, voire pas du tout (dans le cas des applications tierces dans GitHub), alors j'ai créé le nôtre, que vous pouvez lancer et utiliser sur votre projet open source GitHub...
Le projet oss-activity-monitor utilise stackql pour surveiller en temps réel l'activité d'un projet open source, ce qui comprend la notification en temps réel des éléments suivants :
- ⭐ nouveaux stargazers du dépôt GitHub
- 👀 nouveaux watchers du dépôt GitHub
- 🍴 nouveaux forks du dépôt GitHub
- 📊 nouvelles issues du dépôt GitHub
- 🙋 nouveaux followers de l'organisation GitHub
- 📦 nouveaux téléchargements de fichiers de version GitHub
- 🍺 nouveaux téléchargements homebrew
Fonctionnement
Le projet est déployé dans un conteneur (avec docker ou une autre plateforme de déploiement de conteneurs) ; il est écrit en python avec le paquet pystackql et utilise les providers github et homebrew pour stackql. Des vues matérialisées et des instructions SELECT servent à capturer et à comparer l'état entre les métriques actuelles et précédentes des points de terminaison GitHub et Homebrew surveillés, comme le décrit le diagramme ci-dessous :
par exemple, étant donné cette vue matérialisée créée et alimentée avec stackql :
CREATE OR REPLACE MATERIALIZED VIEW mvw_github_repo_stargazers AS
SELECT login FROM github.activity.repo_stargazers
WHERE owner = 'your-org' and repo = 'your-repo'
la requête stackql suivante interroge GitHub pour détecter les nouveaux stargazers...
SELECT c.login
FROM github.activity.repo_stargazers c
LEFT JOIN mvw_github_repo_stargazers mvw
ON c.login = mvw.login
WHERE mvw.login IS NULL
AND c.owner = 'your-org' AND c.repo = 'your-repo'
puis l'état est actualisé avec...
REFRESH MATERIALIZED VIEW mvw_github_repo_stargazers
des schémas similaires sont répétés pour les watchers du dépôt, les issues, les followers de l'organisation, les téléchargements de fichiers de version et les téléchargements homebrew.
Exécuter le projet
Suivez les étapes ci-dessous pour mettre le projet en service localement ou sur la plateforme cloud de votre choix.
1. Cloner le dépôt
git clone https://github.com/stackql/oss-activity-monitor.git
# or
git clone git@github.com:stackql/oss-activity-monitor.git
2. Configurer les variables d'environnement
Les variables d'environnement suivantes sont nécessaires pour configurer le projet (fournies sous forme de variables d'environnement, dans un fichier .env dans l'exemple ci-dessous) :
| Variable | Description | Exemple de valeur |
|---|---|---|
LOG_LEVEL | Niveau de journalisation (INFO pour les journaux généraux ; DEBUG pour une journalisation détaillée) | INFO |
SLEEP_INTERVAL | Délai en secondes entre les boucles d'appels | 5 |
GITHUB_REPO | Nom du dépôt GitHub | stackql |
GITHUB_REPO_OWNER | Nom de l'organisation ou du propriétaire GitHub | stackql |
HOMEBREW_FORMULA_NAME | Nom de la formule Homebrew, le cas échéant | stackql |
STACKQL_GITHUB_USERNAME | Votre nom d'utilisateur GitHub | jeffreyaven |
STACKQL_GITHUB_PASSWORD | Votre jeton d'accès personnel GitHub | ghp_yourpersonalaccesstoken |
SLACK_WEBHOOK_URL | URL du webhook Slack pour l'envoi des notifications | https://hooks.slack.com/services/... |
DISCORD_WEBHOOK_URL | URL du webhook Discord pour l'envoi des notifications | https://discord.com/api/webhooks/... |
3. Construire le conteneur
docker build --no-cache -t oss-activity-monitor .
4. Exécuter le conteneur
docker run --env-file .env oss-activity-monitor
C'est tout ! Vous recevrez désormais des alertes en temps réel dès qu'il y a de l'activité sur votre projet open source. Pour arrêter le conteneur, utilisez :
docker stop $(docker ps -a -q --filter ancestor=oss-activity-monitor)
Donnez-nous une ⭐ sur GitHub