sqlinsight-pro/docs/integration.md
Claude 0e2146ef6d
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
Fase 4: integration with Prometheus, Grafana, SCOM and scripts
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
2026-09-29 09:56:01 +00:00

4.6 KiB

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

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:

& "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:

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

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

"SQLInsight": {
  "Notifications": {
    "EventLog": { "Enabled": true, "Source": "SQLInsight Pro", "MinSeverity": "Medium" }
  }
}

Kilden registreres én gang som administrator:

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.