Some checks are pending
CI / Build og unit tests (push) Waiting to run
CI / Integration (mcr.microsoft.com/mssql/server:2017-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2019-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2022-latest) (push) Blocked by required conditions
CI / Integration (mcr.microsoft.com/mssql/server:2025-latest) (push) Blocked by required conditions
Read-only JSON API (/api/v1/instances, /api/v1/findings) and a Prometheus endpoint (/metrics) in the web UI, with bearer tokens for machines (only their SHA-256 is configured; a token only opens the API, never the pages; sensitive evidence left out unless enabled). A Grafana dashboard and Prometheus scrape example. A Windows Event Log notification channel with fixed event ids for SCOM, exempt from the hourly cap. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E3EExwndy8Z22EK2Qpt6BK
105 lines
4.6 KiB
Markdown
105 lines
4.6 KiB
Markdown
# Integration med eksisterende overvågning
|
|
|
|
SQLInsight Pro kan levere data til de værktøjer, driften allerede bruger:
|
|
|
|
| Værktøj | Sådan |
|
|
|---|---|
|
|
| Prometheus og Grafana | `/metrics` i webbrugerfladen, og et færdigt Grafana-dashboard |
|
|
| Scripts, ITSM, egne dashboards | JSON-API under `/api/v1/` |
|
|
| System Center Operations Manager (SCOM) og andre, der læser Windows' hændelseslog | Agenten skriver hændelser med faste event-id'er |
|
|
| Teams, mail og webhooks | Se notifikationer i [installation.md](installation.md) |
|
|
|
|
Alt er skrivebeskyttet: intet af det kan ændre noget i SQLInsight Pro eller på jeres SQL Servere.
|
|
|
|
## API-tokens
|
|
|
|
Brugere logger ind i webbrugerfladen med Windows-login. Maskiner som Prometheus kan i stedet bruge et token:
|
|
|
|
```powershell
|
|
& "C:\Program Files\SQLInsight\Web\SQLInsight.Web.exe" new-api-token prometheus
|
|
```
|
|
|
|
Kommandoen skriver selve tokenet (gem det i Prometheus) og en linje til `appsettings.json`:
|
|
|
|
```json
|
|
"SQLInsight": {
|
|
"Web": {
|
|
"ApiTokens": { "prometheus": "sha256:4F1C…" }
|
|
}
|
|
}
|
|
```
|
|
|
|
Kun tokenets SHA-256 gemmes i konfigurationen. Et token giver kun adgang til `/api/` og `/metrics`, aldrig til websiderne. Fjern linjen for at tilbagekalde tokenet. Windows-login virker også på API'et.
|
|
|
|
## Prometheus og Grafana
|
|
|
|
`deploy/prometheus/prometheus.yml` viser scrape-konfigurationen. Tokenet lægges i en fil, som `credentials_file` peger på. Hent data højst hvert minut; agenten måler selv med sine egne intervaller.
|
|
|
|
| Metric | Labels | Betydning |
|
|
|---|---|---|
|
|
| `sqlinsight_instance_up` | instance | 1, hvis seneste kontakt lykkedes inden for 10 minutter |
|
|
| `sqlinsight_instance_last_seen_timestamp_seconds` | instance | Tidspunkt for seneste vellykkede kontakt |
|
|
| `sqlinsight_instance_info` | instance, version, level, edition | Version og CU-niveau (værdi 1) |
|
|
| `sqlinsight_findings` | instance, severity | Antal aktive fund pr. alvor |
|
|
| `sqlinsight_rule_findings` | instance, rule, severity | Antal aktive fund pr. regel |
|
|
| `sqlinsight_rules_not_measurable` | instance | Regler, der ikke kunne vurderes |
|
|
| `sqlinsight_metric` | instance, metric | Seneste måling: `cpu.sqlserver`, `cpu.other` (%), `memory.ple` (s), `memory.grants_pending`, `workload.batch_requests`, `workload.compilations` (pr. s), `connections.user`, `blocking.processes` |
|
|
| `sqlinsight_build_info` | version, rulepack | SQLInsight Pro-version og regelpakke |
|
|
|
|
Eksempel på alarm i Prometheus:
|
|
|
|
```yaml
|
|
- alert: SqlInsightCriticalFinding
|
|
expr: sqlinsight_findings{severity="critical"} > 0
|
|
for: 5m
|
|
annotations:
|
|
summary: "{{ $labels.instance }} har {{ $value }} kritiske fund i SQLInsight Pro"
|
|
```
|
|
|
|
**Grafana:** importér `deploy/grafana/sqlinsight-dashboard.json` (Dashboards → New → Import) og vælg jeres Prometheus-datakilde. Dashboardet viser instanser, der er nede, fund pr. alvor, CPU, page life expectancy, batch requests, fund pr. regel og versioner.
|
|
|
|
## JSON-API
|
|
|
|
| Kald | Svar |
|
|
|---|---|
|
|
| `GET /api/v1/instances` | Instanser med version, seneste kontakt, `up` og antal fund pr. alvor |
|
|
| `GET /api/v1/findings?instance=prod-sql01&minSeverity=High` | Aktive fund med forklaring, anbefaling og målinger |
|
|
| `GET /metrics` | Prometheus-format |
|
|
|
|
```powershell
|
|
Invoke-RestMethod https://sqlinsight.domæne.local/api/v1/findings?minSeverity=High -Headers @{ Authorization = "Bearer $token" }
|
|
```
|
|
|
|
Følsomme målinger (forespørgselstekst, logins, værtsnavne) vises som `[udeladt]` i API'et. Sæt `SQLInsight:Web:ApiIncludesSensitiveEvidence` til `true` for at få dem med.
|
|
|
|
## SCOM og Windows' hændelseslog
|
|
|
|
Slå kanalen til i agentens `appsettings.json`:
|
|
|
|
```json
|
|
"SQLInsight": {
|
|
"Notifications": {
|
|
"EventLog": { "Enabled": true, "Source": "SQLInsight Pro", "MinSeverity": "Medium" }
|
|
}
|
|
}
|
|
```
|
|
|
|
Kilden registreres én gang som administrator:
|
|
|
|
```powershell
|
|
New-EventLog -LogName Application -Source "SQLInsight Pro"
|
|
```
|
|
|
|
Hændelserne skrives i loggen **Application**:
|
|
|
|
| Event-id | Niveau | Hændelse |
|
|
|---|---|---|
|
|
| 1004 | Error | Nyt kritisk fund |
|
|
| 1003 | Error | Nyt fund med høj alvor |
|
|
| 1002 | Warning | Nyt fund med middel alvor |
|
|
| 1001 / 1000 | Information | Nyt fund med lav alvor / info |
|
|
| 2000 | Information | Fund løst |
|
|
| 3000 | Error | Instansen kan ikke nås |
|
|
| 3001 | Information | Instansen svarer igen |
|
|
|
|
Beskeden starter med en overskrift og har derefter én linje pr. felt (`Instans:`, `Regel:`, `Emne:`, `Alvor:`, `Beskrivelse:`, `Link:`). I SCOM oprettes en regel eller monitor af typen *Windows Event* på kilden `SQLInsight Pro` med de event-id'er, der skal give alarm. Brug fx 1004 og 3000 til alarm og 2000 og 3001 til at lukke den igen. Hændelsesloggen er ikke omfattet af loftet over notifikationer pr. time, så ingen hændelser går tabt.
|