Metrics
System-level metrics collection via Metricbeat — CPU, memory, network, and disk across all supported resource types.
Metrics
Metricbeat runs on each monitored resource and ships system-level performance data to Elasticsearch on a configurable interval (default 10 seconds). The MCM UI reads from Elasticsearch to display real-time KPI cards, time-series sparklines, and fleet-level aggregates.
Data Flow
Collected Metrics
| Metric | Unit | Description |
|---|---|---|
| CPU utilization | % | Overall CPU usage across all cores, averaged over the collection interval |
| Memory usage | % | Used physical memory (RSS) as a percentage of total installed RAM |
| Network in | GB/h | Inbound network throughput on the primary interface |
| Disk read | IOPS | Read operations per second on the primary storage device |
Alert Thresholds
Alerts are generated automatically when metric values cross the following defaults:
| Metric | Warning | Critical |
|---|---|---|
| CPU utilization | ≥ 60% | ≥ 80% |
| Memory usage | ≥ 60% | ≥ 80% |
Alerts appear in the Active Alerts KPI card on both the all-accounts and per-account Observability dashboards. Critical alerts are displayed in red; warnings in amber.
SSH Setup Flow
For resource types that require SSH access (AWS EC2, Azure VM, GCP Compute Engine), MCM installs the Metricbeat agent remotely via the following flow:
- Navigate to the resource's Observability tab in the MCM UI.
- Click Set Up Observability to open the SSH credentials dialog.
- Provide the SSH host, port (default 22), username, and private key.
- MCM connects to the resource, downloads the Metricbeat package, writes the configuration, and starts the service.
- The Observability tab transitions to the live metrics view once the first batch of data arrives (typically within 30 seconds).
Ubuntu Hosts, Docker Containers, and Kubernetes resources do not require this step — Metricbeat is configured automatically during onboarding.
Metricbeat Configuration Reference
MCM writes the following minimal configuration to each managed resource:
metricbeat.modules:
- module: system
metricsets:
- cpu
- memory
- network
- diskio
period: 10s
cpu.metrics: ["percentages"]
core.metrics: ["percentages"]
output.elasticsearch:
hosts: ["${ELASTICSEARCH_HOST}:9200"]
index: "metricbeat-%{[agent.version]}-%{+yyyy.MM.dd}"For Docker resources, the docker module is enabled alongside system. For Kubernetes resources, the kubernetes module replaces system.