{"_id":"@alerthq/provider-grafana","_rev":"2-ef4367492139712d26e036877df529f9","name":"@alerthq/provider-grafana","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"@alerthq/provider-grafana","version":"0.0.1","keywords":["alerthq","provider","grafana","alerts","monitoring"],"license":"MIT","_id":"@alerthq/provider-grafana@0.0.1","maintainers":[{"name":"rsafaya","email":"rsafaya@edrv.io"}],"homepage":"https://github.com/ai-software-agency/alerthq#readme","bugs":{"url":"https://github.com/ai-software-agency/alerthq/issues"},"dist":{"shasum":"e7e156cd1a4fc4a23e0fd227f7a6fc480aa58101","tarball":"https://registry.npmjs.org/@alerthq/provider-grafana/-/provider-grafana-0.0.1.tgz","fileCount":5,"integrity":"sha512-GQfYaLD4C2TzRYyu/PqPFeOeiD5nW+u8LlptifoU5p7EAGTSadx8ZqgTO3s90tElTkKpieVtPP56tSa/OUEQsQ==","signatures":[{"sig":"MEUCIFBS0PYtvep+02sO3lg/fV2wMRC2h3Mh8LnRPJEAZQJVAiEA1isAOhGwL+jYvfFqXFxbS0gpYGkOOPz6lvtiyeriaUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13255},"main":"./dist/index.js","type":"module","_from":"file:alerthq-provider-grafana-0.0.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"eslint src/","test":"vitest run --passWithNoTests","build":"tsup src/index.ts --format esm --dts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"rsafaya","email":"rsafaya@edrv.io"},"_resolved":"/private/var/folders/y_/sbbsfnm54k310t77b7c43cdm0000gn/T/38e52784ac2a17737193743d75e97678/alerthq-provider-grafana-0.0.1.tgz","_integrity":"sha512-GQfYaLD4C2TzRYyu/PqPFeOeiD5nW+u8LlptifoU5p7EAGTSadx8ZqgTO3s90tElTkKpieVtPP56tSa/OUEQsQ==","repository":{"url":"git+https://github.com/ai-software-agency/alerthq.git","type":"git","directory":"packages/provider-grafana"},"_npmVersion":"11.7.0","description":"Grafana alert provider for alerthq","directories":{},"_nodeVersion":"25.4.0","dependencies":{"zod":"^3.24.0"},"_hasShrinkwrap":false,"peerDependencies":{"@alerthq/core":"0.0.1"},"_npmOperationalInternal":{"tmp":"tmp/provider-grafana_0.0.1_1775722593549_0.005559112588204629","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-04-09T08:16:33.434Z","modified":"2026-04-09T09:10:05.874Z","0.0.1":"2026-04-09T08:16:33.681Z"},"bugs":{"url":"https://github.com/ai-software-agency/alerthq/issues"},"license":"MIT","homepage":"https://github.com/ai-software-agency/alerthq#readme","keywords":["alerthq","provider","grafana","alerts","monitoring"],"repository":{"url":"git+https://github.com/ai-software-agency/alerthq.git","type":"git","directory":"packages/provider-grafana"},"description":"Grafana alert provider for alerthq","maintainers":[{"email":"dpipalia@edrv.io","name":"dhruvin-edrv"},{"email":"rsafaya@edrv.io","name":"rsafaya"}],"readme":"# @alerthq/provider-grafana\n\nGrafana alert provider for [alerthq](https://github.com/edrv/alerthq).\n\n## Supported Alert Types\n\n| Alert Type | API Source | Notes |\n|------------|-----------|-------|\n| Grafana-managed alert rules | `GET /api/v1/provisioning/alert-rules` | Unified alerting (Grafana 9+) |\n\n## Authentication\n\nThree authentication modes are supported:\n\n- **API key / Service account token** — sent as `Authorization: Bearer <token>`\n- **Basic auth** — sent as `Authorization: Basic base64(username:password)`\n- **No auth** — for unauthenticated local Grafana instances\n\n## Configuration\n\nAdd to your `alerthq.yaml`:\n\n```yaml\nproviders:\n  grafana:\n    enabled: true\n    url: https://grafana.example.com\n    apiKey: glsa_xxxxxxxxxxxxxxxxxxxx\n    # Or use basic auth:\n    # basicAuth:\n    #   username: admin\n    #   password: changeme\n```\n\n| Field | Type | Required | Default | Description |\n|-------|------|----------|---------|-------------|\n| `url` | `string` | Yes | — | Grafana instance base URL |\n| `apiKey` | `string` | No | — | API key or service account token |\n| `basicAuth.username` | `string` | No | — | Basic auth username |\n| `basicAuth.password` | `string` | No | — | Basic auth password |\n\n## Required Permissions\n\nThe API key or service account needs the `alert.rules:read` RBAC scope to fetch alert rule definitions.\n\nFor contact point resolution, `alert.notifications:read` is also recommended.\n\n## Field Mapping\n\n| AlertDefinition Field | Source |\n|-----------------------|--------|\n| `id` | `generateAlertId('grafana', uid)` |\n| `source` | `'grafana'` |\n| `sourceId` | `uid` |\n| `name` | `title` |\n| `description` | `annotations.description` (fallback: `annotations.summary`) |\n| `enabled` | `!isPaused` |\n| `severity` | `labels.severity` (critical/warning/info, fallback: unknown) |\n| `conditionSummary` | Built from `condition` + `data` + `for` duration |\n| `notificationTargets` | `notification_settings.receiver` |\n| `tags` | `labels` |\n| `owner` | Empty string (not available from Grafana API) |\n| `lastModifiedAt` | `updated` |\n\n## Limitations\n\n- Only fetches **Grafana-managed** alert rules. Data source-managed rules (Mimir/Loki/Cortex ruler rules) are not included.\n- **No creator information** — the Grafana provisioning API does not expose who created or last modified a rule, so `owner` is always empty.\n- **Severity is inferred from labels** — Grafana has no native severity field; the provider looks for a `severity` label and maps known values (critical, warning, info), defaulting to `unknown`.\n- **No pagination** — the provisioning API returns all rules in a single response; very large rule sets may be slow.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}