Aller au contenu principal
Page traduite

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 :

Moniteur OSS

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) :

VariableDescriptionExemple de valeur
LOG_LEVELNiveau de journalisation (INFO pour les journaux généraux ; DEBUG pour une journalisation détaillée)INFO
SLEEP_INTERVALDélai en secondes entre les boucles d'appels5
GITHUB_REPONom du dépôt GitHubstackql
GITHUB_REPO_OWNERNom de l'organisation ou du propriétaire GitHubstackql
HOMEBREW_FORMULA_NAMENom de la formule Homebrew, le cas échéantstackql
STACKQL_GITHUB_USERNAMEVotre nom d'utilisateur GitHubjeffreyaven
STACKQL_GITHUB_PASSWORDVotre jeton d'accès personnel GitHubghp_yourpersonalaccesstoken
SLACK_WEBHOOK_URLURL du webhook Slack pour l'envoi des notificationshttps://hooks.slack.com/services/...
DISCORD_WEBHOOK_URLURL du webhook Discord pour l'envoi des notificationshttps://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