Skip to content

[Azure] Add AMQP-over-WebSockets support to Event Hub integrations - #20559

Open
zmoog wants to merge 5 commits into
mainfrom
issue-973-amqp-websocket-proxy
Open

[Azure] Add AMQP-over-WebSockets support to Event Hub integrations#20559
zmoog wants to merge 5 commits into
mainfrom
issue-973-amqp-websocket-proxy

Conversation

@zmoog

@zmoog zmoog commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Proposed commit message

Add AMQP-over-WebSockets transport support to the Azure Event Hub integrations (Azure OpenAI, Azure Functions, Microsoft Foundry, Azure App Service, and Custom Azure Logs).

transport defaults to amqp; websocket tunnels AMQP over HTTPS port 443, enabling Event Hubs traffic through restrictive firewalls and HTTPS_PROXY proxies.

Because transport is a processor v2 option, this also exposes the processor v2 settings in the four packages that lacked them and flips their default processor version from v1 to v2 (matching azure, #16955). On upgrade, migrate_checkpoint (default true) migrates v1 checkpoints once, so consumption resumes where v1 left off.

This was requested for exactly these five integrations: Azure OpenAI, Azure Functions, Microsoft Foundry, Azure App Service, and Custom Azure Logs (which already used processor v2). Existing kibana constraints already require a stack supporting transport (8.19.10 / 9.1.10 / 9.2.4+, per package), so no constraint changes are needed.

Changes

  • Add and render a hidden transport selector (amqp default; websocket on port 443) in each azure-eventhub input.
  • Expose the processor v2 settings (processor_version, migrate_checkpoint, processor_update_interval, processor_start_position, partition_receive_timeout, partition_receive_count) and default to v2 for Azure OpenAI, Azure Functions, Microsoft Foundry, and Azure App Service; Custom Azure Logs already had them.
  • Document firewall and AMQP-over-WebSockets requirements, plus proxy setup: how to enable optional proxy support via the HTTPS_PROXY environment variable and that it requires websocket transport.
  • Bump package minors and add changelog entries.

Impact on existing installations

The four packages above move from processor v1 to v2 on upgrade; the automatic v1→v2 checkpoint migration preserves the consumer position.

Verification

  • elastic-package build and elastic-package check for all five packages.
  • git diff --check.
  • Azure OpenAI reports the pre-existing skipped dashboard validation SVR00002; that dashboard is unchanged.

Related issues

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Elastic Docs Style Checker (Vale)

Summary: 10 warnings found

⚠️ Warnings (10): Fix when the suggestion improves clarity or correctness.
File Line Rule Message
packages/azure_ai_foundry/data_stream/logs/manifest.yml 174 Elastic.QuotesPunctuation Place punctuation inside closing quotation marks.
packages/azure_ai_foundry/data_stream/logs/manifest.yml 187 Elastic.QuotesPunctuation Place punctuation inside closing quotation marks.
packages/azure_app_service/manifest.yml 192 Elastic.QuotesPunctuation Place punctuation inside closing quotation marks.
packages/azure_app_service/manifest.yml 205 Elastic.QuotesPunctuation Place punctuation inside closing quotation marks.
packages/azure_functions/_dev/build/docs/README.md 178 Elastic.QuotesPunctuation Place punctuation inside closing quotation marks.
packages/azure_functions/_dev/build/docs/README.md 182 Elastic.QuotesPunctuation Place punctuation inside closing quotation marks.
packages/azure_functions/data_stream/functionapplogs/manifest.yml 175 Elastic.QuotesPunctuation Place punctuation inside closing quotation marks.
packages/azure_functions/data_stream/functionapplogs/manifest.yml 188 Elastic.QuotesPunctuation Place punctuation inside closing quotation marks.
packages/azure_openai/data_stream/logs/manifest.yml 174 Elastic.QuotesPunctuation Place punctuation inside closing quotation marks.
packages/azure_openai/data_stream/logs/manifest.yml 187 Elastic.QuotesPunctuation Place punctuation inside closing quotation marks.

The Vale linter checks documentation changes against the Elastic Docs style guide. To use Vale locally or report issues, refer to Elastic style guide for Vale.

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

TL;DR

Check integrations azure_ai_foundry failed because the generated package README is out of sync with the committed one. Rebuild packages/azure_ai_foundry docs (elastic-package build) and commit the regenerated docs/README.md output.

Remediation

  • Regenerate docs for this package and commit the result:
    • cd packages/azure_ai_foundry && elastic-package build
    • commit the updated packages/azure_ai_foundry/docs/README.md (and README.md if generated in your local workflow)
  • Re-run CI for this PR after committing the regenerated docs.
Investigation details

Root Cause

This is a configuration/docs sync failure (not a runtime code bug). The lint step compares generated README content against the committed file and detected drift.

In this PR, the template and rendered docs changed near the file end, including EOF/newline handling:

  • packages/azure_ai_foundry/_dev/build/docs/README.md (@@ -115,4 +121,4)
  • packages/azure_ai_foundry/docs/README.md (@@ -503,4 +509,3)

The Buildkite check reports the generated output wants extra trailing lines that are not present in the committed README.

Evidence

README.md is outdated. Rebuild the package with 'elastic-package build'
--- want
+++ got
@@ -512 +512,3 @@
+
+
Error: checking package failed: checking readme files are up-to-date failed: files do not match

Verification

  • Not run in this environment (elastic-package binary is unavailable here), but the Buildkite log above is definitive for this failure mode.

Follow-up

If this exact mismatch reappears after regeneration, compare end-of-file newline/trailing blank-line handling between _dev/build/docs/README.md and docs/README.md for azure_ai_foundry.


What is this? | From workflow: PR Buildkite Detective

Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not.

zmoog and others added 2 commits August 6, 2026 18:48
The new `transport` option is read only by the v2 Event Hub processor
(`CreateEventHubConsumerClient` is called exclusively from `v2_input.go`;
the v1 input uses the legacy azure-event-hubs-go SDK and ignores it).

azure_ai_foundry, azure_openai, azure_functions and azure_app_service
never emitted `processor_version`, so Beats applied its default, which
is v1 on 8.19, 9.1 and 9.2. Selecting AMQP-over-WebSockets on those
versions silently kept dialing AMQP on 5671/5672.

Add a `processor_version` var defaulting to v2 and emit it from the
agent templates, matching azure and azure_logs.

Also fix the docs: name the processor version requirement explicitly and
correct the supported agent versions per package (azure_ai_foundry
cannot be installed before 9.2.4, azure_openai has no 9.1.x).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Bring azure_ai_foundry, azure_openai, azure_functions and azure_app_service
in line with azure and azure_logs by exposing the rest of the processor v2
settings: processor_update_interval, processor_start_position,
partition_receive_timeout, partition_receive_count and migrate_checkpoint.

migrate_checkpoint is emitted unconditionally rather than behind an
`{{#if}}` guard so that setting it to false is honoured; a guarded bool
renders nothing when false and the Beats default (true) would apply.

endpoint_suffix is deliberately left out: it is not an input option, only
a fragment of the storage_account_connection_string that azure and
azure_logs assemble by hand. These packages let Beats build that string,
and Beats derives the suffix from authority_host, which they already
expose.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@zmoog
zmoog marked this pull request as ready for review August 6, 2026 17:09
@zmoog
zmoog requested a review from a team as a code owner August 6, 2026 17:09
@elastic-vault-github-plugin-prod

elastic-vault-github-plugin-prod Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

🚀 Benchmarks report

Package azure_openai 👍(0) 💚(1) 💔(1)

Expand to view
Data stream Previous EPS New EPS Diff (%) Result
logs 1709.4 1308.9 -400.5 (-23.43%) 💔

To see the full report comment with /test benchmark fullreport

@elastic-vault-github-plugin-prod

Copy link
Copy Markdown
Contributor

✅ All changelog entries have the correct PR link.

@infra-vault-gh-plugin-prod

Copy link
Copy Markdown

💚 Build Succeeded

History

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant