{
  "schema_version": 1,
  "generated_at": "2026-10-23T00:00:00.000Z",
  "canonical_url": "https://openlogs.fyi/tools/grafana",
  "slug": "grafana",
  "name": "Grafana",
  "tagline": "Dashboards and alerts for metrics, logs and traces from many data sources.",
  "replaces": {
    "summary": "Paid monitoring dashboard services, such as Datadog.",
    "products": [
      {
        "slug": "datadog",
        "name": "Datadog",
        "vendor": "Datadog",
        "url": "https://openlogs.fyi/alternatives/datadog"
      }
    ]
  },
  "stack": [
    {
      "kind": "language",
      "name": "TypeScript"
    }
  ],
  "deployment_methods": [
    "docker_compose"
  ],
  "requirements": {
    "min_ram_mb": null,
    "min_cpu_cores": null,
    "source_url": null
  },
  "license": {
    "spdx": "AGPL-3.0",
    "class": "osi",
    "source_url": "https://github.com/grafana/grafana/blob/811e0c01ae4ae275755021dab1a4d54325c7eb34/LICENSE"
  },
  "business_model": {
    "value": "unknown",
    "notes": "The README at the pinned commit does not state a business model, so it stays unknown.",
    "source_url": "https://github.com/grafana/grafana/blob/811e0c01ae4ae275755021dab1a4d54325c7eb34/README.md",
    "checked_at": "2026-10-22"
  },
  "difficulty": {
    "value": "easy",
    "reason": "1 service, 0 volume mounts, no env values to set, no elevated host access. Heuristic score 0 of 11: easy."
  },
  "repository": {
    "owner": "grafana",
    "name": "grafana",
    "url": "https://github.com/grafana/grafana"
  },
  "compose_check": {
    "status": "config_ok",
    "validated_at": "2026-10-22",
    "summary": "config_ok on 2026-10-22"
  },
  "recipe": {
    "version": 1,
    "source_path": "docs/sources/setup-grafana/installation/docker/index.md",
    "source_repo": "grafana/grafana",
    "source_commit_sha": "811e0c01ae4ae275755021dab1a4d54325c7eb34",
    "source_kind": "app_repo",
    "source_url": "https://github.com/grafana/grafana/blob/811e0c01ae4ae275755021dab1a4d54325c7eb34/docs/sources/setup-grafana/installation/docker/index.md"
  },
  "install_steps": [
    {
      "order": 1,
      "kind": "prerequisite",
      "language": "text",
      "label": "Docker with the Compose plugin",
      "body": "A host with Docker and the Docker Compose plugin. This entry runs from a compose file.",
      "source_url": "https://github.com/grafana/grafana/blob/811e0c01ae4ae275755021dab1a4d54325c7eb34/docs/sources/setup-grafana/installation/docker/index.md#L228-L236",
      "validation_status": "unvalidated"
    },
    {
      "order": 2,
      "kind": "compose",
      "language": "yaml",
      "label": "Save the code block as docker-compose.yaml",
      "body": "services:\n  grafana:\n    image: grafana/grafana-enterprise\n    container_name: grafana\n    restart: unless-stopped\n    ports:\n      - '3000:3000'\n",
      "source_url": "https://github.com/grafana/grafana/blob/811e0c01ae4ae275755021dab1a4d54325c7eb34/docs/sources/setup-grafana/installation/docker/index.md",
      "validation_status": "config_ok"
    },
    {
      "order": 3,
      "kind": "note",
      "language": "text",
      "label": "What the compose file check ran with",
      "body": "This compose file is copied unchanged from the code block in https://github.com/grafana/grafana/blob/811e0c01ae4ae275755021dab1a4d54325c7eb34/docs/sources/setup-grafana/installation/docker/index.md#L228-L236. The block sits inside a list in the page, so the indent of its lines was removed, as the rendered page shows it. The check ran on that block alone. The installation guide tells the reader to create a docker-compose.yaml with this content and run docker compose up -d.",
      "source_url": "https://github.com/grafana/grafana/blob/811e0c01ae4ae275755021dab1a4d54325c7eb34/docs/sources/setup-grafana/installation/docker/index.md#L228-L236",
      "validation_status": "unvalidated"
    },
    {
      "order": 4,
      "kind": "shell",
      "language": "bash",
      "label": "Start it",
      "body": "docker compose up -d",
      "source_url": "https://github.com/grafana/grafana/blob/811e0c01ae4ae275755021dab1a4d54325c7eb34/docs/sources/setup-grafana/installation/docker/index.md",
      "validation_status": "unvalidated"
    },
    {
      "order": 5,
      "kind": "verify",
      "language": "text",
      "label": "Open the app",
      "body": "Open http://localhost:3000. The compose file publishes host port 3000 for the grafana service.",
      "source_url": "https://github.com/grafana/grafana/blob/811e0c01ae4ae275755021dab1a4d54325c7eb34/docs/sources/setup-grafana/installation/docker/index.md",
      "validation_status": "unvalidated"
    }
  ],
  "notes": [
    {
      "kind": "gotcha",
      "title": "Some images use the latest tag or no tag",
      "body": "Images without a pinned version: grafana: grafana/grafana-enterprise (no tag). A later pull can get a different version.",
      "source_url": "https://github.com/grafana/grafana/blob/811e0c01ae4ae275755021dab1a4d54325c7eb34/docs/sources/setup-grafana/installation/docker/index.md",
      "checked_at": "2026-10-22"
    },
    {
      "kind": "gotcha",
      "title": "The compose file publishes host ports",
      "body": "Host ports: 3000 (grafana). A port without a host address listens on all host network interfaces.",
      "source_url": "https://github.com/grafana/grafana/blob/811e0c01ae4ae275755021dab1a4d54325c7eb34/docs/sources/setup-grafana/installation/docker/index.md",
      "checked_at": "2026-10-22"
    }
  ],
  "signals": {
    "captured_at": "2026-10-22",
    "stars": 77426,
    "forks": 14837,
    "open_issues": 3327,
    "last_push": "2026-10-22",
    "days_since_push": 0,
    "latest_release": "v13.2.4",
    "latest_release_date": "2026-10-13",
    "days_since_release": 9
  },
  "links": {
    "html": "https://openlogs.fyi/tools/grafana",
    "markdown": "https://openlogs.fyi/tools/grafana.md",
    "json": "https://openlogs.fyi/tools/grafana.json"
  },
  "updated_at": "2026-10-22"
}
