Default data retention is 30 days. Contact support to request a different retention period.
Before you begin
- Ingestion key from Phoebe (provided during onboarding)
- Outbound HTTPS (443) allowed to
ingest.phoebe.ai - (Recommended) A secrets manager or environment variables - avoid hard-coding keys in configs
OpenTelemetry (Recommended)
Supported data types: Logs • Metrics • Traces
Important: Add the Phoebe exporter in addition to your current exporters for each pipeline so data keeps flowing to existing systems.
- Restart/reload your Collector
- Check Collector logs for export activity or errors:
- Generate test telemetry (e.g., a sample trace or log event) and review for errors in the Collector logs. Contact support to confirm the records are visible in your Context Lake
Amazon Web Services
Supported data types: Logs • Metrics
Context Lake ingestion
Stream CloudWatch data to Phoebe using Amazon Data Firehose with an HTTP endpoint destination.- CloudWatch Logs
- CloudWatch Metrics
PrerequisitesPolicy (replace the bucket name if different):Trust policy for Firehose:
- Permissions to create IAM roles/policies, Firehose delivery streams, subscription filters, and (optionally) S3 buckets
- Phoebe ingestion key
- CloudWatch Log Groups to stream
1
Create (optional) S3 bucket for failures
Use this bucket for failed deliveries to aid troubleshooting.Example name:
phoebe-log-stream-failures2
Create a minimal-scope IAM role for Firehose
Firehose can auto-create a role, but a custom role limits permissions and improves security.
3
Create a Firehose delivery stream (HTTP endpoint)
- Source: Direct PUT
- Destination: HTTP Endpoint
- HTTP endpoint URL:
https://ingest.phoebe.ai/aws/firehose/logs - Access key: your Phoebe ingestion key
- Content encoding: GZIP
- Retry duration: ~300 seconds (tune as needed)
- Mode: Failed data only
- Bucket: the one you created for failures
- Size: 1–5 MB (smaller = lower latency)
- Interval: 60–300 s
- Choose the IAM role you created for Firehose.
4
Allow CloudWatch Logs to put records into Firehose
Create an IAM role for logs.amazonaws.com to call Trust policy (CloudWatch Logs):
firehose:PutRecord* on your stream.Policy (replace REGION, ACCOUNT_ID, and stream name):5
Create CloudWatch Logs subscription filter(s)
For each Log Group you want to stream:
- Destination: Amazon Data Firehose
- Delivery stream: your Firehose stream
- Role: the CloudWatch-to-Firehose role
- Filter pattern: empty for all logs (or set a pattern to restrict)
6
Verify delivery
Generate a test event:
- In Firehose → your stream → Monitoring, verify successful deliveries increase and failures remain zero.
- Check the failure S3 bucket is empty (or inspect objects for errors).
API access
- Create IAM Role/User with
CloudWatchReadOnlyAccesspolicy - Generate access key and secret
- Enter credentials in the Integrations UI
Grafana
Supported data types: Logs • Metrics • Traces
Context Lake ingestion
- Promtail (Logs)
- Prometheus (Metrics)
ConfigurationAdd the Phoebe endpoint to the Multiple destinations (recommended)If you need to send logs to both your own Loki instance and Phoebe, list Phoebe as the last client. Promtail sends logs to clients sequentially in the order they’re defined, so this ensures your primary destination receives logs first:Verify
clients section of your Promtail configuration file (typically config.yaml or promtail.yaml).Single destinationIf you’re only sending logs to Phoebe:Headers set by Promtail itself (such as
X-Scope-OrgID) cannot be overwritten using the headers configuration.- Restart Promtail to apply the changes.
- Check Promtail logs for any connection errors.
- Contact Phoebe to confirm logs are being received in your Context Lake.
API access
-
Create service account - In Grafana, go to Administration > Service accounts, click Add service account, name it (e.g.,
phoebe-integration), and assign Viewer role -
Generate token - Click on the service account, go to Tokens tab, click Add service account token, and copy immediately (it won’t be shown again)
- Ensure the token has the required permissions for read access to Loki (logs), Prometheus/Mimir (metrics) and Tempo (traces)
-
Find service identifiers - In Grafana Explore, select Loki, expand “Label filters” and look for labels that identify your services
Service identifier examples:
Environment Identifiers Standard ["service_name"]Kubernetes ["app_kubernetes_io_name", "app"]Docker Compose ["container_name", "compose_service"]Custom ["application_name", "service_id"]Without correct service identifiers, Phoebe cannot group logs by service. Test in Grafana Explore first with a query like{your_service_identifier="your-service-name"}. - Enter credentials in the Integrations UI
| Issue | Fix |
|---|---|
| No services discovered | Check identifiers match exactly (case-sensitive) with Loki labels |
| Missing data | Verify token permissions by testing queries in Grafana |
| Connection errors | Ensure BASE_URL is accessible and includes protocol (https://) |
Datadog
Supported data types: Logs • Metrics • Traces
API access
- Create an API key in Datadog API settings
- Create an Application key in Datadog Application Keys
- Ensure the associated user/service account has these required permissions and scopes:
- Read logs (Scopes required:
logs_read_data,logs_read_index_data) - Access metrics (Scopes required:
metrics_read,timeseries_query) - View traces (Scopes required:
apm_read) - Read dashboard data (Scopes required:
dashboards_read) - Read monitor data (Scopes required:
monitors_read)
- Read logs (Scopes required:
- Enter credentials in the Integrations UI
Google Cloud Platform
Supported data types: Logs
API access
- In GCP Console, create a new service account in IAM & Admin > Service Accounts and assign it with Logs Viewer role
- Create a new JSON key
- Enter credentials in the Integrations UI
New Relic
Supported data types: Logs • Metrics • Traces
API access
- Generate a User API key
- Find the Account ID from the API keys table
- Enter credentials in the Integrations UI
Troubleshooting
Verifying ingestion
- Generate test data in the relevant system (log line, synthetic metric, or trace)
- Check sender logs (Collector/Firehose) for HTTP errors or backoffs
- Confirm with Phoebe—share the approximate timestamp and source so we can validate arrival in your Context Lake
Common issues & fixes
Authentication (401/403)- Double-check the exact header name/value:
- OpenTelemetry:
X-API-Key: <key> - Firehose HTTP destination: configure the Access key to your Phoebe key
- Promtail:
X-API-Key: <key>in theheaderssection
- OpenTelemetry:
- Ensure no extra whitespace or quotes; prefer environment variables or secrets manager.
- Allow outbound HTTPS (443) to
ingest.phoebe.aifrom the sending network (EKS/ECS nodes, VMs, etc.) - Enable compression to reduce payload size (gzip)
- Tune buffering to keep chunks ≤ 5 MB
- For Firehose, reduce buffer size/interval to lower latency
- Verify the Phoebe exporter is listed in every relevant pipeline (logs, metrics, traces)
- Ensure you added an additional exporter rather than replacing existing ones
- Confirm endpoint is exactly
https://ingest.phoebe.ai/otel(no/v1prefix) - Check Collector logs for
otlphttp/phoebeexport errors and backoff messages
- Check the S3 failure bucket for recent objects; inspect payloads and error messages
- Verify:
- Firehose stream is Active
- IAM roles & policies (both Firehose and CloudWatch Logs) are correct
- CloudWatch subscription filters show Active
- Keep buffer size under 5 MB to avoid large payload failures
- Verify the Phoebe client is listed in the
clientssection with the correct URL (https://ingest.phoebe.ai/loki/api/v1/push). - Ensure
X-API-Keyheader is set correctly with your Phoebe ingestion key. - If using multiple destinations, confirm Phoebe is listed last to avoid blocking your primary destination.
- Check Promtail logs for connection errors or 4xx/5xx responses.
- Verify outbound HTTPS (443) to
ingest.phoebe.aiis allowed from the Promtail host.
- 2xx — accepted by Phoebe
- 4xx — fix configuration (keys/headers/endpoint/payload format)
- 5xx — transient; sender should retry (ensure retries/backoff are enabled)
Getting help
When contacting support, include:- Integration method (OpenTelemetry, Firehose, Promtail, or Prometheus)
- Sender logs with error snippets
- Approximate timestamp(s) and source (service name, Log Group, etc.)
- Confirmation that your ingestion key is configured and how it’s stored (env/secrets)
Appendix: Security & operations best practices
- Don’t hard-code secrets. Use environment variables or a secrets manager and restrict read access
- TLS in transit. All endpoints use HTTPS. Ensure outbound proxies (if any) don’t downgrade TLS
- Right-sized batching. Smaller batches reduce latency and make retries cheaper; larger batches are more efficient for high-throughput logs. Start with 1–5 MB buffers
- Resource attributes matter. Ensure
service.name,deployment.environment, and (optionally)service.versionare present so investigations group data correctly - Backpressure & retries. Keep retries enabled with exponential backoff to ride out transient network hiccups