OpenTelemetry Collector
Overview
The OpenTelemetry Collector is the vendor-neutral way to receive, process and export telemetry (metrics, logs and traces) from a single agent. It is part of the OpenTelemetry project, a Cloud Native Computing Foundation (CNCF) incubating project and the de-facto standard for application observability.
This SecureAnyCloud image installs the official otelcol-contrib distribution, the contrib build with the broadest set of receivers and exporters, as /usr/bin/otelcol-contrib. It ships a ready-to-run sample pipeline and enables the health_check and zPages extensions, so you can confirm health and inspect the running pipeline from the moment the VM boots.
What you get:
- The OpenTelemetry Collector (
otelcol-contrib, Apache-2.0) from the official OpenTelemetry releases - The package's
otelcol-contrib.servicesystemd unit, enabled and running on boot - A sample pipeline at
/etc/otelcol-contrib/config.yaml: ahostmetricsreceiver (cpu/memory/disk/filesystem/load every 10s) and anotlpreceiver (gRPC127.0.0.1:4317, HTTP127.0.0.1:4318) for local apps to push to, withmemory_limiter,resourcedetectionandbatchprocessors, fanning out to adebugexporter and aprometheusexporter on127.0.0.1:8889 - The
health_checkextension on127.0.0.1:13133and thezPagesextension on127.0.0.1:55679 - 24/7 SecureAnyCloud support
This is a headless service product. Every endpoint binds to 127.0.0.1 only, so no inbound application port is needed beyond SSH.
Prerequisites
You need an active Azure subscription, an SSH key pair, and a VNet with a subnet in the target region.
Standard_B2s (2 vCPU / 4 GiB RAM) is a good starting size.
Configure the network security group (NSG) to allow inbound 22/tcp from your management network. No inbound application ports are required.
Step 1 - Deploy from the Azure Marketplace
Sign in to the Azure Portal, choose Create a resource, search the Marketplace for OpenTelemetry Collector by SecureAnyCloud, and select Create.
On the Basics tab, pick your subscription, resource group, region and size. Under Administrator account, choose SSH public key and paste your key. Under Inbound port rules, allow SSH (22).
Select Review + create, then Create.
Step 2 - Deploy from the Azure CLI
# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:opentelemetry-collector-ubuntu-24-04:default:latest
az vm create \
--resource-group <your-rg> \
--name otelcol \
--image sac1647283583153:opentelemetry-collector-ubuntu-24-04:default:latest \
--size Standard_B2s \
--admin-username azureuser \
--ssh-key-values ~/.ssh/id_ed25519.pub \
--vnet-name <your-vnet> --subnet <your-subnet> \
--public-ip-sku StandardStep 3 - Connect to your VM over SSH
ssh azureuser@<vm-public-ip>Step 4 - Confirm the Collector is installed and running
Check the version and confirm that the service is active:
otelcol-contrib --version systemctl is-active otelcol-contribotelcol-contrib --version reports otelcol-contrib version 0.154.0. systemctl is-active otelcol-contrib prints active.
Step 5 - Review the sample pipeline
The ready-to-run pipeline lives at /etc/otelcol-contrib/config.yaml. It scrapes host metrics every 10 seconds and accepts OTLP pushes from local applications on loopback. It applies the memory_limiter, resourcedetection and batch processors, then exports to both the debug logger and the Prometheus exporter. Print the file to review it:
cat /etc/otelcol-contrib/config.yamlStep 6 - Check the Collector health
The health_check extension exposes a liveness endpoint. When the Collector is healthy, the endpoint returns 200 with a JSON body of {"status":"Server available"}. Query it:
curl -s http://127.0.0.1:13133/The output looks like {"status":"Server available",...}.
Step 7 - Inspect the running pipeline with zPages
The zPages extension serves live, in-process diagnostics. The service page lists every active pipeline, receiver, processor and exporter. Check that it responds:
curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:55679/debug/servicezThe command returns 200. To browse the pages in detail, open http://127.0.0.1:55679/debug/servicez (and /debug/pipelinez, /debug/tracez) over an SSH tunnel.
Step 8 - View live host metrics through the Prometheus exporter
The prometheus exporter publishes every scraped series on 127.0.0.1:8889/metrics in the Prometheus text format. The hostmetrics receiver emits system_* series for CPU, memory, disk and filesystem usage. List the first few:
curl -s http://127.0.0.1:8889/metrics | grep -E '^system_' | head -n 12 || trueThe output includes system_cpu_time, system_memory_usage, system_disk_io and related series. Each series is labelled and carries a live value.
Step 9 - Push your own telemetry over OTLP
The sample pipeline accepts OTLP on loopback: gRPC on 127.0.0.1:4317 and HTTP on 127.0.0.1:4318. An application or SDK running on the same VM can send metrics, logs and traces straight into the Collector with no extra wiring.
Point your OpenTelemetry SDK exporter at one of these endpoints:
# OTLP/gRPC OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4317
# OTLP/HTTP OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4318Everything you push appears in the debug exporter's journald output. Metrics also appear on the Prometheus exporter.
Step 10 - Customise the pipeline
Edit /etc/otelcol-contrib/config.yaml to add your own receivers, processors and exporters, then restart the service. The contrib distribution ships hundreds of components. These examples show a few common building blocks:
# Scrape Prometheus targets receivers: prometheus: config: scrape_configs: - job_name: my-app static_configs: - targets: [localhost:9100]
# Export to an OTLP backend (Grafana, Honeycomb, Datadog, Jaeger, Tempo, ...) exporters: otlphttp: endpoint: https://otlp.my-backend.example:4318
# Add the exporter to a pipeline under service.pipelines.metrics.exportersAfter editing, validate the configuration and apply your changes:
otelcol-contrib validate --config /etc/otelcol-contrib/config.yaml
sudo systemctl restart otelcol-contribSee the OpenTelemetry Collector documentation for the full component catalogue.
Maintenance
- Service: systemd manages it. Use
systemctl status otelcol-contribandjournalctl -u otelcol-contrib. - Configuration:
/etc/otelcol-contrib/config.yaml. Restart the service after edits, and validate first withotelcol-contrib validate --config .... - Health and introspection:
health_checkon127.0.0.1:13133,zPageson127.0.0.1:55679, and the Prometheus exporter on127.0.0.1:8889/metrics. - Upgrades: download the newer
otelcol-contrib.debfrom the OpenTelemetry releases and install it withsudo dpkg -i. - Security patches: unattended-upgrades remains enabled, so the OS continues to receive security updates automatically.
Support
SecureAnyCloud provides 24/7 expert support for this image. Contact sales@secureanycloud.com.
OpenTelemetry and the OpenTelemetry Collector are trademarks of the OpenTelemetry project, a project of the Cloud Native Computing Foundation. SecureAnyCloud is not affiliated with or endorsed by the OpenTelemetry project or the CNCF.
Deploy on Azure
Launch OpenTelemetry Collector on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.
View this image
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com