Skip to main content
skill CX Codex

private-connectivity — Claude Code skill: private Grafana Cloud access

Sets up private network connectivity to Grafana Cloud over AWS PrivateLink, Azure Private Link, GCP Private Service Connect and PDC. Useful when telemetry must stay off the public internet.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add grafana/skills --skill private-connectivity -a claude-code
Open on GitHub

What private-connectivity does

The skill walks your agent through private connectivity to Grafana Cloud. On AWS that means finding the service name in Stack Details, creating an Interface VPC Endpoint per signal type (metrics, logs, traces, profiles) with aws ec2 create-vpc-endpoint and --private-dns-enabled, checking private DNS with dig, then repointing Alloy at the private URLs. Azure and GCP follow the same shape: create the private endpoint, wait for approval, verify DNS, update the Alloy URLs.

The DNS check is the one that matters. If dig +short prometheus-private.us-east-0.grafana.net hands back a public IP, Alloy keeps using the public path without complaining and your egress bill stays where it was. Worth confirming that private_dns_enabled = true is set and DNS hostnames are on for the VPC.

Constraints to know up front: your Grafana Cloud stack has to sit on the same cloud provider as the workload. AWS PrivateLink works within one region, and cross-region needs VPC peering first. On Azure you must pre-register Subscription IDs with Grafana Support, otherwise endpoint creation hangs at Pending. For the reverse direction — querying a private database or Prometheus from Grafana — the skill covers Private Data Source Connect.

What it helps with

  • push metrics to Grafana Cloud without touching the public internet
  • cut cloud egress charges on telemetry traffic
  • create a separate VPC endpoint for each signal type: metrics, logs, traces, profiles
  • confirm private DNS resolves to an internal address instead of a public IP
  • wire a private data source into Grafana through PDC

Example prompts for the agent

  • Set up AWS PrivateLink for our metrics and logs going to Grafana Cloud
  • Check that prometheus-private.us-east-0.grafana.net resolves to a private address
  • Switch Alloy over to the private endpoints instead of the public ones

How to install private-connectivity

1Skills CLI (Vercel)

npx skills add grafana/skills --skill private-connectivity -a claude-code

2Manually: put the files in place

~/.claude/skills/private-connectivity/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/private-connectivity/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about private-connectivity

How do I install private-connectivity in Claude?

Run npx skills add grafana/skills --skill private-connectivity -a claude-code. The skill then lives at ~/.claude/skills/private-connectivity/SKILL.md.

What does private-connectivity do?

It guides the agent through private connectivity to Grafana Cloud: provisioning VPC endpoints, private endpoints or PSC forwarding rules, updating Alloy URLs, and verifying private DNS resolution.

What has to happen before Azure Private Link setup?

Pre-register your Subscription IDs with Grafana Support. Without that step, endpoint creation hangs at Pending.

Source text

SKILL.md · Apache-2.0
---
name: private-connectivity
license: Apache-2.0
description: 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.
---

# 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

### Setting up AWS PrivateLink (most common)

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

   ```bash
   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):

   ```bash
   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:**

   ```alloy
   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](references/aws.md).

### Setting up Azure Private Link / GCP Private Service Connect

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](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

| Scenario | Solution |
|----------|----------|
| Push from AWS | AWS PrivateLink |
| Push from Azure | Azure Private Link |
| Push from GCP | GCP Private Service Connect |
| Query private DB / Prometheus from Grafana | Private Data Source Connect (PDC) — see [references/azure-gcp.md § PDC](references/azure-gcp.md#private-data-source-connect-pdc) |

## References

- [`references/aws.md`](references/aws.md) — full AWS PrivateLink Terraform per signal type + endpoint verification (state + DNS)
- [`references/azure-gcp.md`](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

© grafana · Apache-2.0 · grafana/skills

Similar skills

Everything for Cloud: AWS, Azure, GCP →

From the same set47

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor