Zum Hauptinhalt springen
Übersetzte Seite

Diese Seite wurde mit KI-Unterstützung aus dem Englischen übersetzt. Bei Abweichungen ist die englische Version maßgeblich.

Aktivitätsmonitor für Open-Source-Projekte auf Basis von StackQL

In dieser Anleitung zeigen wir, wie Sie ein Echtzeit-Überwachungs- und Benachrichtigungssystem für Maintainer von Open-Source-Software auf GitHub selbst hosten.

stackql ist ein Open-Source-Tool, mit dem Benutzer Cloud- und SaaS-Ressourcen über eine SQL-Sprache sowie Bibliotheken und Tools zur Datenvisualisierung und -analyse abfragen und mit ihnen interagieren können. Geben Sie uns einen ⭐, wenn Ihnen das gefällt!

Erhalten Sie solche Benachrichtigungen in Echtzeit in Slack und Discord:

OSS-Monitor

Getestet mit eingebettetes SQL-Backend docker linux

Überblick​

Als ich nach Tools zur Überwachung unseres Open-Source-Projekts gesucht habe, stellte ich fest, dass die meisten nicht wie beworben oder gar nicht funktionierten (im Fall von Drittanbieter-Apps in GitHub), also habe ich unser eigenes gebaut, das Sie für Ihr Open-Source-Projekt auf GitHub starten und verwenden können...

Das Projekt oss-activity-monitor verwendet stackql, um die Aktivität von Open-Source-Projekten in Echtzeit zu überwachen, einschließlich Echtzeit-Benachrichtigungen über:

  • ⭐ neue Stargazer des GitHub-Repos
  • 👀 neue Watcher des GitHub-Repos
  • 🍴 neue Forks des GitHub-Repos
  • 📊 neue Issues im GitHub-Repo
  • 🙋 neue Follower der GitHub-Organisation
  • 📦 neue Downloads von GitHub-Release-Assets
  • 🍺 neue Homebrew-Downloads

Funktionsweise​

Das Projekt wird in einem Container bereitgestellt (mit docker oder einer anderen Container-Plattform), es ist mit python und dem Paket pystackql gebaut und verwendet die Provider github und homebrew für stackql. Materialized Views und SELECT-Anweisungen werden verwendet, um den Zustand der aktuellen und der vorherigen Metriken der überwachten GitHub- und Homebrew-Endpunkte zu erfassen und zu vergleichen, wie im folgenden Diagramm beschrieben:

zum Beispiel, gegeben diese mit stackql erstellte und befüllte Materialized View:

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'

fragt die folgende stackql-Abfrage GitHub nach neuen Stargazern ab...

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'

anschließend wird der Zustand aktualisiert mit...

REFRESH MATERIALIZED VIEW mvw_github_repo_stargazers

ähnliche Muster wiederholen sich für Repo-Watcher, Issues, Organisations-Follower, Release-Asset-Downloads und Homebrew-Downloads.

Das Projekt ausführen​

Folgen Sie den nachstehenden Schritten, um das Projekt lokal oder auf der Cloud-Plattform Ihrer Wahl in Betrieb zu nehmen.

1. Das Repo klonen​

git clone https://github.com/stackql/oss-activity-monitor.git
# or
git clone git@github.com:stackql/oss-activity-monitor.git

2. Umgebungsvariablen konfigurieren​

Die folgenden Umgebungsvariablen werden zur Konfiguration des Projekts benötigt (bereitgestellt als Umgebungsvariablen, im folgenden Beispiel über eine .env-Datei):

VariableBeschreibungBeispielwert
LOG_LEVELLog-Level (INFO für allgemeine Logs; DEBUG für detaillierte Protokollierung)INFO
SLEEP_INTERVALWartezeit in Sekunden zwischen den Abfrageschleifen5
GITHUB_REPOName des GitHub-Repositorysstackql
GITHUB_REPO_OWNERName der GitHub-Organisation oder des Besitzersstackql
HOMEBREW_FORMULA_NAMEName der Homebrew-Formula, falls vorhandenstackql
STACKQL_GITHUB_USERNAMEIhr GitHub-Benutzernamejeffreyaven
STACKQL_GITHUB_PASSWORDIhr persönliches GitHub-Zugriffstokenghp_yourpersonalaccesstoken
SLACK_WEBHOOK_URLSlack-Webhook-URL zum Senden von Benachrichtigungenhttps://hooks.slack.com/services/...
DISCORD_WEBHOOK_URLDiscord-Webhook-URL zum Senden von Benachrichtigungenhttps://discord.com/api/webhooks/...

3. Den Container bauen​

docker build --no-cache -t oss-activity-monitor .

4. Den Container ausführen​

docker run --env-file .env oss-activity-monitor

das war's! Sie erhalten jetzt Echtzeit-Benachrichtigungen, sobald es Aktivität in Ihrem Open-Source-Projekt gibt. Um den Container zu stoppen, verwenden Sie:

docker stop $(docker ps -a -q --filter ancestor=oss-activity-monitor)

Geben Sie uns einen ⭐ auf GitHub