> ## Documentation Index
> Fetch the complete documentation index at: https://otel.fyi/llms.txt
> Use this file to discover all available pages before exploring further.

# Azurefunctions

> OpenTelemetry receiver for Azurefunctions

# Azurefunctions Receiver

![Status](https://img.shields.io/badge/status-development-orange)

**Maintainers:** [@jmacd](https://github.com/jmacd), [@MichaelKatsoulis](https://github.com/MichaelKatsoulis), [@constanca-m](https://github.com/constanca-m)

**Source:** [opentelemetry-collector-contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/azurefunctionsreceiver)

## Supported Telemetry

![Logs](https://img.shields.io/badge/logs-development-blue)

## Overview

## Overview

The Azure Functions receiver is an OpenTelemetry Collector receiver that integrates with Azure Functions as a custom handler. It receives logs from Azure Event Hubs via the Azure Functions runtime and converts them to OpenTelemetry format for further processing and export. The receiver is structured by trigger type (e.g. Event Hub); each trigger can expose multiple log bindings with different encodings.

## How It Works

The receiver is designed to operate as part of an Azure Functions custom handler:

1. Azure Functions runtime consumes events from Azure Event Hubs (e.g. separate hubs for logs and metrics).
2. The runtime sends HTTP POST requests to the receiver's endpoints (e.g. `/logs`, `/raw_logs`) according to the configured bindings.
3. The receiver decodes Azure Functions invoke requests containing Event Hub messages.
4. Messages are converted to OpenTelemetry format using the encoding extension configured per binding.
5. Data is forwarded to the configured pipeline consumers.

## Configuration

The following receiver configuration parameters are supported.

| Name                                  | Type                    | Description                                                                                                                                     |
| ------------------------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `http`                                | confighttp.ServerConfig | **Required.** HTTP server settings (e.g. `endpoint: :9090`). Typically use `FUNCTIONS_CUSTOMHANDLER_PORT`.                                      |
| `auth`                                | component.ID            | Optional. Component ID of the extension that provides Azure authentication (e.g. token credential).                                             |
| `triggers`                            | object                  | **Required.** Trigger configuration (e.g. Event Hub). At least one trigger with at least one log binding is required.                           |
| `triggers.event_hub`                  | object                  | Event Hub trigger configuration. Defines log bindings and metadata behavior.                                                                    |
| `triggers.event_hub.logs`             | list                    | List of log bindings. Each entry has `name` (binding name; maps to path `/<name>`) and `encoding` (component.ID). Binding names must be unique. |
| `triggers.event_hub.include_metadata` | bool                    | Optional. When true, add Azure Functions invoke metadata (e.g. Event Hub partition context) to resource attributes. Default: false.             |

The `triggers` section and at least one trigger with at least one log binding are required for the receiver to register endpoints. Required fields must be set for the receiver to start.

### Example configuration

```yaml theme={null}
receivers:
  azure_functions:
    # HTTP server configuration
    http:
      endpoint: :${env:FUNCTIONS_CUSTOMHANDLER_PORT:-9090}

    # Optional: Azure auth extension
    auth: azureauth

    # Triggers: Event Hub with multiple log bindings, each with its own encoding
    triggers:
      event_hub:
        logs:
          - name: logs
            encoding: azure_encoding
          - name: raw_logs
            encoding: azureresourcelogs_encoding
        include_metadata: true

extensions:
  azureauth:
    # Azure auth extension configuration
  azure_encoding:
    # Encoding extension configuration
  azureresourcelogs_encoding:
    # Encoding extension configuration

service:
  extensions: [azureauth, azure_encoding, azureresourcelogs_encoding]
  pipelines:
    logs:
      receivers: [azure_functions]
      exporters: [otlp]
```

## Supported Signal Decoders

* **Logs** (Primary support) — Logs are decoded using an encoding extension per binding (e.g. `azure_encoding`) that converts the binding payload to OpenTelemetry logs.
* **Metrics** (Future consideration)

## Requirements

* Deployed as an Azure Functions custom handler.
* Azure Functions host configuration (`host.json`) with custom handler settings.
* Event Hub trigger bindings configured in `function.json`; binding names should match the `triggers.event_hub.logs[].name` values (e.g. `logs`, `raw_logs`).

## Configuration

### Example Configuration

```yaml theme={null}
azure_functions:
  http:
    endpoint: test:123
  auth: azureauth
  triggers:
    event_hub:
      logs:
        - name: logs
          encoding: azure_encoding
        - name: raw_logs
          encoding: azureresourcelogs_encoding
      include_metadata: true

azure_functions/no_auth:
  http:
    endpoint: test:123
  triggers:
    event_hub:
      logs:
        - name: logs
          encoding: azure_encoding

azure_functions/no_http_config:
  auth: azureauth
  triggers:
    event_hub:
      logs:
        - name: logs
          encoding: azure_encoding

azure_functions/no_triggers:
  http:
    endpoint: test:123
  auth: azureauth

azure_functions/no_event_hub:
  http:
    endpoint: test:123
  auth: azureauth
  triggers: {}

azure_functions/empty_event_hub_logs:
  http:
    endpoint: test:123
  auth: azureauth
  triggers:
    event_hub:
      logs: []

azure_functions/missing_binding_name:
  http:
    endpoint: test:123
  auth: azureauth
  triggers:
    event_hub:
      logs:
        - encoding: azure_encoding

azure_functions/missing_binding_encoding:
  http:
    endpoint: test:123
  auth: azureauth
  triggers:
    event_hub:
      logs:
        - name: logs

azure_functions/duplicate_binding_name:
  http:
    endpoint: test:123
  auth: azureauth
  triggers:
    event_hub:
      logs:
        - name: logs
          encoding: azure_encoding
        - name: logs
          encoding: azureresourcelogs_encoding
```

***

*Last generated: 2026-07-06*
