Heroku Log Ingestion :: Kloudfuse Docs

Heroku Log Ingestion

Kloudfuse integrates with Heroku to collect and ingest logs from Heroku applications using HTTPS log drains. Heroku’s log draining feature allows you to stream application and system logs to Kloudfuse for centralized monitoring and analysis.

For more information on Heroku logging, see Heroku Log Drains.

Prerequisites

Get Kloudfuse Endpoint

  1. Obtain the Kloudfuse ingress endpoint URL.
Use the external ingress IP or DNS name.
  1. Note the endpoint URL format for Heroku log drains:
   https://<kfuse-ingress-external-ip>/ingester/heroku/logs

Configure Heroku Log Drain

Using Heroku CLI

  1. Log in to Heroku CLI:

    heroku login
    
  2. Add the Kloudfuse log drain to your Heroku application:

    heroku drains:add "https://<kfuse-ingress-external-ip>/ingester/heroku/logs" --app <app-name>
    

Replace:

  1. Verify the log drain was created successfully:
    heroku drains --app <app-name>
    
    You should see output similar to:
    https://<kfuse-ingress-external-ip>/ingester/heroku/logs (d.12345678-90ab-cdef-1234-567890abcdef)
    
    The drain ID specified in () will be added as a label in kloudfuse for easier filtering and organization.

Authentication

For information on configuring ingestion authentication, see Ingestion Authentication with API Key.

If authentication is enabled, append the encoded API key or token to the drain URL with the label kf-api-key:

heroku drains:add "https://<kfuse-ingress-external-ip>/ingester/heroku/logs?kf-api-key=YOUR_API_KEY" --app <app-name>

Log Format and Metadata

Heroku sends logs in the Logplex format. Kloudfuse automatically extracts metadata from Heroku logs, including:

Field Description
source source for all logs will be labeled as Heroku
drain_token Drain token (e.g., d.12345678-90ab-cdef-1234-567890abcdef)
timestamp Log timestamp (e.g., 2022-01-01T00:00:00.000Z)
log_level Log level (e.g., info, error)
log_type Log type (e.g., heroku, app)

Configuration

Add Custom Labels

To add custom labels for filtering and organization, you can add them as parameters to the drain URL:

heroku drains:add "https://<kfuse-ingress-external-ip>/ingester/heroku/logs?label1=value1&label2=value2" --app <app-name>

You can use both custom labels and Authentication API keys in the parameters. If the API key parameter is present, it will not be added as a label.

Troubleshooting

Logs Not Appearing

  1. Verify the log drain is active:

    heroku drains --app <app-name>
    
  2. Auth Config If Auth Config is enabled, confirm that ingest secret is base 64 encoded, and that the param label is kf-api-key

  3. Review Heroku logs for drain errors:

    heroku logs --tail --app <app-name>
    

Authentication Failures

  1. Verify your API key is valid and has ingestion permissions.
  2. Ensure the API key is properly URL-encoded in the drain URL.
  3. Check Kloudfuse authentication configuration.

Remove Log Drain

To remove the Kloudfuse log drain from your Heroku application use the drain URL from the add step:

heroku drains:remove "https://<kfuse-ingress-external-ip>/ingester/heroku/logs" --app <app-name>

You can also view all drain URLs for a Heroku application via the console:

heroku drains --app <app-name>