Help me bij het ontwerpen van een GitHub-acties voor geavanceerde foutopsporing en monitoring
description
Met deze prompt kan de gebruiker een geavanceerde GitHub Actions workflow opzetten die automatisch fouten detecteert, logs analyseert en notificaties verstuurt, wat de efficiëntie van foutopsporing verhoogt en de kwaliteit van het project verbetert. Dit bespaart tijd, voorkomt productiefouten en biedt inzichtelijke rapportages, beter dan handmatige of eenvoudige workflows.
prompt
Help me een GitHub Actions workflow te ontwerpen die geavanceerde foutopsporing en monitoring in mijn project automatiseert met de volgende details:
Projectnaam: <voer je projectnaam in>
Programmeertaal: <voer de programmeertaal in>
Huidige foutopsporingsmethoden: <beschrijf hoe je momenteel fouten o ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een voorstel voor een geavanceerde GitHub Actions workflow voor jouw project "MijnWebApp" die zich richt op foutopsporing, monitoring, en automatische notificaties:
### Overzicht van de workflow
- **Detectie van runtime fouten**: Automatisch testen en logging
- **Analyse van logs**: Detecteer verdachte patronen of fouten
- **Notificaties**: Stuur directe meldingen naar je team bij kritieke fouten
- **Rapportages**: Genereer samenvatting van fouten en acties
---
### 1. Basis Workflow Structuur (.github/workflows/monitoring.yml)
```yaml
name: Geavanceerde Monitoring en Foutopsporing
on:
push:
branches:
- main
schedule:
- cron: '0 */2 * * *' # Elke 2 uur een automatische controle
workflow_dispatch: # Handmatig starten
jobs:
run-tests:
name: Uitvoeren van Tests & Logging
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Installeer dependencies
run: npm install
- name: Voer tests uit
run: npm test -- --jsonFile=results.json
continue-on-error: true
- name: Upload test resultaten
if: always()
uses: actions/upload-artifact@v3
with:
name: test-results
path: results.json
log-analyse:
name: Logbestanden Analyseren
needs: run-tests
runs-on: ubuntu-latest
steps:
- name: Download test resultaten
uses: actions/download-artifact@v3
with:
name: test-results
- name: Analyseer logs op fouten
run: |
# Voorbeeld: gebruik jq om fouten te filteren
cat results.json | jq '.tests[] | select(.status != "passed")' > errors.json
- name: Controleer op kritieke fouten
id: kritieke_fouten
run: |
if [ -s errors.json ]; then
echo "kritieke_fouten=true" >> $GITHUB_OUTPUT
else
echo "kritieke_fouten=false" >> $GITHUB_OUTPUT
fi
notify-team:
name: Notificaties versturen
needs: log-analyse
if: needs.log-analyse.outputs.kritieke_fouten == 'true'
runs-on: ubuntu-latest
steps:
- name: Verstuur Slack bericht
uses: slackapi/slack-github-action@v1.23.0
with:
slack-bot-token: ${{ secrets.SLACK_BOT_TOKEN }}
channel-id: '#fouten-monitoring'
payload: |
{
"text": "⚠️ Kritieke fouten gedetecteerd in MijnWebApp! Bekijk de logs voor details."
}
- name: Verstuur e-mail notificatie
uses: dawidd6/action-send-mail@v3
with:
server_address: smtp.example.com
server_port: 587
username: ${{ secrets.SMTP_USERNAME }}
password: ${{ secrets.SMTP_PASSWORD }}
subject: 'Foutmelding in MijnWebApp'
to: team@jouwdomein.nl
body: |
Er zijn kritieke runtime fouten gedetecteerd tijdens de laatste controle. Bekijk de logs voor meer informatie.
rapportage:
name: Genereren van Foutrapport
needs: log-analyse
runs-on: ubuntu-latest
if: always()
steps:
- name: Download test resultaten
uses: actions/download-artifact@v3
with:
name: test-results
- name: Maak rapportage
run: |
# Bijvoorbeeld een eenvoudige samenvatting
echo "Fouten rapportage" > rapport.txt
jq '.tests[] | select(.status != "passed") | {name: .name, status: .status}' results.json >> rapport.txt
- name: Upload rapport
uses: actions/upload-artifact@v3
with:
name: fouten-rapport
path: rapport.txt
```
---
### 2. Belangrijke Tips
- **Monitoring en alerts**: Overweeg integratie met tools zoals Sentry of Datadog voor diepere runtime monitoring.
- **Logs analyseren**: Pas de analyse scripts aan om specifieke foutpatronen te detecteren.
- **Notificaties**: Voeg meerdere kanalen toe (bijv. Microsoft Teams, pagers) afhankelijk van je team.
- **Rapportages**: Automatiseer het genereren van dashboards of PDFs met samenvattingen.
### 3. Secrets en Integraties
- Voeg je Slack Bot Token (`SLACK_BOT_TOKEN`), SMTP gegevens, en andere gevoelige informatie toe aan GitHub Secrets voor beveiliging.
---
Wil je dat ik je help met het verder aanpassen van deze workflow, zoals het toevoegen van meer geavanceerde analyses of integraties?
provider: deepseek
model: deepseek-chat
Zeker! Hier is een gedetailleerd ontwerp voor een GitHub Actions workflow voor geavanceerde foutopsporing en monitoring voor je JavaScript-project "MijnWebApp":
## 1. Workflow Bestandsstructuur
```yaml
name: Advanced Debugging & Monitoring
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
schedule:
- cron: '0 8 * * *' # Dagelijkse uitvoering om 08:00 UTC
env:
PROJECT_NAME: MijnWebApp
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
TEAM_EMAILS: ${{ secrets.TEAM_EMAILS }}
```
## 2. Geavanceerde Foutdetectie Workflow
```yaml
jobs:
runtime-error-detection:
runs-on: ubuntu-latest
steps:
- name: Repository uitchecken
uses: actions/checkout@v4
- name: Node.js setup
uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
- name: Dependencies installeren
run: npm ci
- name: Testsuite uitvoeren met uitgebreide logging
run: npm test -- --verbose --detectOpenHandles
env:
NODE_ENV: test
DEBUG: '*'
- name: Runtime error monitoring
uses: actions/github-script@v6
with:
script: |
const { exec } = require('child_process');
// Simuleer runtime scenario's en vang errors
exec('node --inspect-brk src/app.js', (error, stdout, stderr) => {
if (error || stderr) {
console.error('Runtime error detected:', stderr);
// Maak een issue aan bij kritieke errors
github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: `Runtime Error in ${process.env.PROJECT_NAME}`,
body: `Error details: ${stderr}\n\nBuild: ${context.runId}`,
labels: ['bug', 'runtime-error']
});
}
});
```
## 3. Geautomatiseerde Log Analyse
```yaml
log-analysis:
runs-on: ubuntu-latest
needs: runtime-error-detection
steps:
- name: Logbestanden verzamelen
run: |
find . -name "*.log" -o -name "debug.log" | head -5 > logfiles.txt
while IFS= read -r file; do
if [ -f "$file" ]; then
echo "Analyzing $file"
# Zoek naar error patronen
grep -n -i "error\|exception\|fail\|warning" "$file" >> analysis-results.txt
fi
done < logfiles.txt
- name: Log analyse uitvoeren
uses: actions/github-script@v6
with:
script: |
const fs = require('fs');
const results = fs.readFileSync('analysis-results.txt', 'utf8');
if (results.length > 0) {
console.log('⚠️ Errors detected in logs:');
console.log(results);
// Upload analysis results als artifact
await github.rest.actions.uploadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.runId,
artifact_name: 'log-analysis',
files: ['analysis-results.txt']
});
}
```
## 4. Notificatie Systeem
```yaml
notifications:
runs-on: ubuntu-latest
needs: [runtime-error-detection, log-analysis]
if: always() # Altijd uitvoeren, zelfs bij failures
steps:
- name: Slack notificatie bij errors
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
channel: '#webapp-monitoring'
webhook_url: ${{ secrets.SLACK_WEBHOOK_URL }}
fields: repo,message,commit,author,action,eventName,ref,workflow
- name: Email notificatie voor kritieke errors
if: failure()
uses: dawidd6/action-send-mail@v3
with:
server_address: smtp.gmail.com
server_port: 465
username: ${{ secrets.EMAIL_USER }}
password: ${{ secrets.EMAIL_PASSWORD }}
subject: "🚨 Critical Error in MijnWebApp"
body: |
Er is een kritieke error opgetreden in MijnWebApp.
Build ID: ${{ github.run_id }}
Workflow: ${{ github.workflow }}
Repository: ${{ github.repository }}
Bekijk de details: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
to: ${{ secrets.TEAM_EMAILS }}
from: GitHub Actions
```
## 5. Rapportage Generatie
```yaml
reporting:
runs-on: ubuntu-latest
needs: [runtime-error-detection, log-analysis]
steps:
- name: Genereer monitoring rapport
run: |
npm install -g cli-table3
node -e "
const Table = require('cli-table3');
const table = new Table({
head: ['Type', 'Count', 'Severity'],
style: { head: ['cyan'] }
});
table.push(
['Runtime Errors', '3', 'High'],
['Warnings', '12', 'Medium'],
['Deprecations', '5', 'Low']
);
console.log(table.toString());
" > report.txt
- name: Upload rapport als artifact
uses: actions/upload-artifact@v3
with:
name: monitoring-report
path: report.txt
```
## 6. Benodigde Secrets Setup
Voeg deze secrets toe in GitHub Repository Settings → Secrets:
- `SLACK_WEBHOOK_URL`: Webhook URL voor Slack channel
- `TEAM_EMAILS`: Komma-gescheiden email adressen
- `EMAIL_USER` & `EMAIL_PASSWORD`: SMTP credentials
## 7. Aanvullende Aanbevelingen
1. **Performance Monitoring**:
```yaml
- name: Performance audit
run: npx lighthouse-ci https://jouw-app.com --score=90
```
2. **Security Scanning**:
```yaml
- name: Security scan
uses: github/codeql-action/analyze@v2
```
3. **Dependency Monitoring**:
```yaml
- name: Check vulnerabilities
run: npm audit --audit-level=moderate
```
Deze workflow biedt een complete monitoring oplossing met automatische detectie, uitgebreide logging, real-time notificaties en gedetailleerde rapportage. Pas de thresholds en notificatiekanalen aan naar jouw teambehoeften!