Telemetry

November 20, 2025 ยท View on GitHub

The CloudFormation Language Server collects anonymous usage metrics (telemetry) using OpenTelemetry, the industry-standard observability framework, to measure and maintain real-time performance. Language servers must deliver suggestions quickly to avoid interrupting your workflow.

Telemetry enablement is controlled by your LSP client via initialization options passed to the language server, see Enable or Disable Telemetry for details. The CloudFormation Language Server environment you use will determine the default telemetry collection behaviour:

  • Alpha - Telemetry is enabled by default if no initialization parameter is provided
  • Beta and Prod - Telemetry is disabled by default if no initialization parameter is provided

What We Collect

The language server collects anonymous telemetry:

  • Performance Metrics - Response time (latency) for operations
  • Usage Metrics - Invocation counts for operations
  • Error Metrics - Fault counts when operations fail, stack trace metadata: error type, file name, line number, column number
  • Response Metrics - Data type (primitives only: string, number, boolean, object, array, etc.) and size
  • System Metrics - CPU utilization, Memory utilization, process uptime
  • System Information
    • Operating system type, platform, architecture, version
    • LSP client name and version
    • Node.js and V8 engine versions
    • Process platform and architecture

Why We Collect Telemetry

Language servers must deliver suggestions in real-time to avoid interrupting your workflow. Telemetry enables us to:

  • Measure if operations meet real-time performance expectations
  • Detect performance degradations before they impact the authoring experience
  • Understand if suggestions are accurate and relevant
  • Identify if hardware or environment impacts customer experience
  • Make data-driven decisions on feature improvements

Without telemetry, we cannot objectively evaluate if the language server meets performance expectations or if suggestions help users author CloudFormation templates effectively.

Metrics Metadata

Metrics includes the following metadata:

AttributeDescriptionExample
serviceLanguage server name and versionaws-cloudformation-languageserver-1.2.3
service.envNode environment and AWS environmentproduction-prod
client.idUnique client identifier (UUID)1111-2222-3333-4444
client.typeLSP client name and versionvscode-1.85.0
machine.typeOS type, platform, architecture, versionDarwin-darwin-arm64-arm64-22.1.0
process.typeProcess platform and architecturedarwin-arm64
process.versionNode.js and V8 versionsnode=22.18.0 v8=12.4.254.21-node.27 uv=1.51.0 modules=127
OTelLibOperation nameHover, Completion, etc.
HandlerSourceRequest handler that initiated an operationDocument.Open, Stack.List, Resource.Search, etc.
RequestIdRandom unique identifier for each operation (UUID)5555-6666-7777-8888

Data Transmission

Metrics export every 60 seconds via HTTPS with TLS 1.2+ encryption using OpenTelemetry Protocol (OTLP). All metrics are stored in AWS us-east-1 region

Enable or Disable Telemetry

Your LSP client (AWS ToolKit, VSCode, JetBrains, etc.) controls telemetry enablement via initialization options. For example:

...
initializationOptions: {
    aws: {
        clientInfo: {
            ....
        },
        telemetryEnabled: true/false,
    }
}
...

Consult your LSP client's documentation for configuration options. Changes to telemetry enablement require restarting the language server to take effect.