Generated banner for Private Connectivity
Generated logo for Private Connectivity

Private Connectivity

Grafana LabsOfficialPublished by Grafana Labs

  • Skill
  • Tool integration
  • Cloud and DevOps
  • Apache-2.0
  • No issues found

From the author

Set up private network connectivity to Grafana Cloud — AWS PrivateLink, Azure Private Link, GCP Private Service Connect, and Private Data Source Connect (PDC). Provisions VPC endpoints, private endpoints, or PSC forwarding rules per signal type (metrics / logs / traces / profiles); wires Alloy to push to the private DNS endpoint instead of the public one; verifies private DNS resolution + endpoint approval state. Use when sending telemetry to Grafana Cloud without traversing the public internet, eliminating cloud egress costs, meeting PCI-DSS / HIPAA / data-residency compliance, configuring PDC for private data-source queries, or connecting AWS / Azure / GCP workloads to Grafana — even when the user says "stop paying egress", "keep our telemetry off the public internet", or "PCI compliance for Grafana" without naming PrivateLink.
— the description by Grafana Labs

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a structured approach to establishing private network connectivity between major cloud providers (AWS, Azure, GCP) and Grafana Cloud. By utilizing native cloud services like AWS PrivateLink, Azure Private Link, and GCP Private Service Connect, users can route telemetry data—such as metrics, logs, traces, and profiles—over a private backbone. This process eliminates public internet exposure, reduces cloud egress costs, and assists in meeting data residency and security compliance requirements like PCI-DSS and HIPAA. The guide also covers the configuration of Private Data Source Connect (PDC) for secure, reverse-direction data queries.

What it does

  • Provisions VPC endpoints, private endpoints, or PSC forwarding rules for telemetry signals.
  • Configures Alloy to route traffic through private DNS endpoints instead of public ones.
  • Provides verification steps to ensure private DNS resolution and endpoint approval.
  • Supports AWS PrivateLink, Azure Private Link, and GCP Private Service Connect.
  • Includes setup instructions for Private Data Source Connect (PDC) for secure data-source queries.
  • Offers Terraform and CLI examples for automated infrastructure deployment.

When to use it

  • When you need to eliminate cloud egress costs for telemetry data.
  • To meet strict security and compliance standards like PCI-DSS or HIPAA.
  • When organizational policy prohibits sending telemetry data over the public internet.
  • To enable Grafana Cloud to query private data sources within your internal network.
  • When connecting workloads in AWS, Azure, or GCP to Grafana Cloud securely.

Advantages

  • Bypasses the public internet for improved security and data privacy.
  • Reduces or eliminates cloud egress charges.
  • Ensures compliance with data residency and security regulations.
  • Provides a consistent, provider-native approach to private networking.
  • Includes built-in verification steps to prevent accidental public traffic leakage.

Usage examples

“How do I stop paying egress fees when sending metrics to Grafana Cloud from AWS?”
The agent guides you through creating an Interface VPC Endpoint for metrics using AWS PrivateLink and updating your Alloy configuration to use the private endpoint URL.
“We need to meet PCI compliance for our Grafana telemetry. How do we keep it off the public internet?”
The agent provides the steps to provision private endpoints for each signal type (metrics, logs, traces) and verifies that DNS resolution is correctly pointing to private IP addresses.
“How do I set up Private Data Source Connect for my Azure-hosted database?”
The agent provides the Helm installation command and configuration steps to establish an encrypted tunnel from Grafana Cloud back into your private network.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/grafana/private-connectivity/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip private-connectivity.zip -d .agents/skills

Documentation by Grafana Labs

Grafana Cloud Private Connectivity

Docs: https://grafana.com/docs/grafana-cloud/send-data/

Send metrics, logs, traces, and profiles to Grafana Cloud entirely over your cloud provider's private backbone — no public internet exposure, no egress fees.

Common Workflows

  1. Find your service names. Grafana Cloud → Stack Details → "Send using AWS PrivateLink". Note one service name per signal type (metrics / logs / traces / profiles).

  2. Create an Interface VPC Endpoint per signal type:

    aws ec2 create-vpc-endpoint \
      --vpc-id vpc-12345 \
      --service-name com.amazonaws.vpce.us-east-1.vpce-svc-0abc123 \
      --vpc-endpoint-type Interface \
      --subnet-ids subnet-12345 \
      --security-group-ids sg-12345 \
      --private-dns-enabled
  3. Verify private DNS resolves (CRITICAL — if this returns a public IP, Alloy will silently keep using the public path and you'll keep paying egress):

    dig +short prometheus-private.us-east-0.grafana.net
    # Expected: a 10.x.x.x / 172.16-31.x.x / 192.168.x.x address
    # Public IP returned → check `private_dns_enabled = true` was set and the VPC has DNS hostnames enabled
  4. Update Alloy to use the private endpoint:

    prometheus.remote_write "cloud_private" {
      endpoint {
        url = "https://prometheus-private.us-east-0.grafana.net/api/prom/push"
        basic_auth {
          username = sys.env("PROM_USER")
          password = sys.env("GRAFANA_CLOUD_API_KEY")
        }
      }
    }
    
    loki.write "cloud_private" {
      endpoint {
        url = "https://logs-private.us-east-0.grafana.net/loki/api/v1/push"
        basic_auth {
          username = sys.env("LOKI_USER")
          password = sys.env("GRAFANA_CLOUD_API_KEY")
        }
      }
    }
  5. Confirm traffic is flowing over PrivateLink: check the VPC endpoint's CloudWatch metrics for BytesProcessed after Alloy starts pushing.

Full Terraform + per-signal-type endpoint resources in references/aws.md.

Different provider, same shape: create the private endpoint → wait for approval → verify private DNS → update Alloy URLs. Full CLI + verification steps in references/azure-gcp.md.

Azure-specific prereq: Pre-register your Subscription IDs with Grafana Support before starting — without this the endpoint creation hangs at "Pending".

Prerequisites (all providers)

  • Grafana Cloud stack must be hosted on the same cloud provider (check: My Account → Stack → Details)

  • Create separate private endpoints for each signal type (metrics / logs / traces / profiles) — they have distinct service names

  • Same region only for AWS PrivateLink. Cross-region requires VPC peering first.

Choosing the right option

ScenarioSolution
Push from AWSAWS PrivateLink
Push from AzureAzure Private Link
Push from GCPGCP Private Service Connect
Query private DB / Prometheus from GrafanaPrivate Data Source Connect (PDC) — see references/azure-gcp.md § PDC

References

  • references/aws.md — full AWS PrivateLink Terraform per signal type + endpoint verification (state + DNS)

  • references/azure-gcp.md — Azure Private Link + GCP Private Service Connect setup (Portal + CLI) + verification + Private Data Source Connect (PDC) for reverse-direction private data source queries

Files

references/azure-gcp.md

Prereq: Pre-register your Subscription IDs with Grafana Support before starting.

Portal
  1. Private Endpoints → Create

  2. Resource tab → "Connect to Azure resource by resource ID or alias"

  3. Paste Service Alias from Grafana Cloud → Stack Details

  4. Select your VNet and subnet

  5. Wait for automatic approval (~10 minutes)

Azure CLI
az network private-endpoint create \
  --name grafana-metrics-endpoint \
  --resource-group myRG \
  --vnet-name myVNet \
  --subnet mySubnet \
  --connection-name grafana-metrics \
  --private-connection-resource-id "<service-alias-from-grafana-cloud>" \
  --group-ids grafana-metrics
Verification
# Confirm endpoint state is "Approved"
az network private-endpoint show \
  --name grafana-metrics-endpoint \
  --resource-group myRG \
  --query 'privateLinkServiceConnections[0].privateLinkServiceConnectionState.status'

# DNS resolution should yield a private IP
nslookup prometheus-private.eu-west-2.grafana.net

GCP Private Service Connect

gcloud compute forwarding-rules create grafana-metrics-psc \
  --region=us-east1 \
  --network=my-vpc \
  --subnet=my-subnet \
  --address=grafana-metrics-ip \
  --target-service-attachment=projects/grafana-cloud/regions/us-east1/serviceAttachments/metrics
Verification
# Confirm forwarding rule is "ACCEPTED"
gcloud compute forwarding-rules describe grafana-metrics-psc --region=us-east1 \
  --format='value(pscConnectionStatus)'

# DNS check
nslookup prometheus-private.us-east-0.grafana.net

Private Data Source Connect (PDC)

Different product — for the reverse direction (Grafana Cloud pulling FROM your private network for data-source queries, not your telemetry pushing TO Grafana Cloud).

helm install pdc grafana/grafana-agent \
  --version 0.44.2 \
  --set pdcConfig.hostedGrafanaId=<your-stack-id> \
  --set pdcConfig.token=<pdc-token>

PDC creates an encrypted tunnel from Grafana Cloud back into your private network.

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs an API key

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Grafana Labs
Publisher
Grafana Labs (Official)
Source
grafana/skills · skills/grafana-cloud/private-connectivity · commit 8fb72a5
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Grafana Labs.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download private-connectivity.zip