MCMMCM DocsEngineering (Internal)
HLDModulesObservability
v1.2 is unreleased — see v1.1 for the current stable release.

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

MetricUnitDescription
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 inGB/hInbound network throughput on the primary interface
Disk readIOPSRead operations per second on the primary storage device

Alert Thresholds

Alerts are generated automatically when metric values cross the following defaults:

MetricWarningCritical
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:

  1. Navigate to the resource's Observability tab in the MCM UI.
  2. Click Set Up Observability to open the SSH credentials dialog.
  3. Provide the SSH host, port (default 22), username, and private key.
  4. MCM connects to the resource, downloads the Metricbeat package, writes the configuration, and starts the service.
  5. 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.

On this page