Skip to main content
Multi-Cloud Manager provides comprehensive VM monitoring through Azure Monitor and Google Cloud Monitoring. Track performance metrics, install monitoring agents, and query historical data.

Azure VM Monitoring

Query Metrics

Retrieve performance metrics for an Azure VM.

Endpoint

GET /api/azure/vms/<vm_name>/metrics

Available Metrics

Percentage CPU
float
Average CPU utilization percentage across all coresUnit: Percent
Aggregation: Average
Interval: 5 minutes
CPU Credits Consumed
float
CPU credits used (B-series burstable VMs only)Unit: Count
Aggregation: Average

Response

{
  "vm": "my-vm",
  "subscriptionId": "12345678-1234-1234-1234-123456789012",
  "resourceGroup": "my-resource-group",
  "location": "eastus",
  "resourceId": "/subscriptions/.../virtualMachines/my-vm",
  "metrics": [
    {
      "name": "Percentage CPU",
      "unit": "Percent",
      "data": [
        {
          "timestamp": "2026-03-05T12:00:00Z",
          "average": 45.32
        },
        {
          "timestamp": "2026-03-05T12:05:00Z",
          "average": 52.18
        }
      ]
    },
    {
      "name": "Available Memory Bytes",
      "unit": "Bytes",
      "data": [
        {
          "timestamp": "2026-03-05T12:00:00Z",
          "average": 2147483648.0
        }
      ]
    }
  ]
}

Query Configuration

timespan
duration
default:"1 hour"
Metrics are queried for the last hour from the current timeStart Time: datetime.utcnow() - timedelta(hours=1)
End Time: datetime.utcnow()
interval
duration
default:"PT5M"
Data aggregation interval (5 minutes)Format: ISO 8601 duration
aggregations
array
default:"[AVERAGE]"
Statistical aggregation applied to metrics
  • AVERAGE - Mean value over the interval
  • MINIMUM - Lowest value in the interval
  • MAXIMUM - Highest value in the interval
  • TOTAL - Sum of all values

Check Agent Status

Verify if Azure Monitor Agent (AMA) or legacy MMA is installed.

Endpoint

GET /api/azure/vms/<vm_name>/agent

Response

{
  "vm": "my-vm",
  "subscriptionId": "12345678-1234-1234-1234-123456789012",
  "resourceGroup": "my-resource-group",
  "extensions": [
    "AzureMonitorLinuxAgent",
    "CustomScript"
  ],
  "hasMMA": false,
  "hasAMA_Linux": true,
  "hasAMA_Windows": false
}
Azure Monitor Agent (AMA) is the modern replacement for MMA (Microsoft Monitoring Agent). Use AMA for new deployments.

Install Azure Monitor Agent

Automatically install the appropriate monitoring agent.

Endpoint

POST /api/azure/vms/<vm_name>/agent/install

Agent Selection

The system automatically detects the OS type and installs the correct agent:
Extension: AzureMonitorLinuxAgent
Publisher: Microsoft.Azure.Monitor
Version: 1.0
Auto-upgrade: Enabled
Installed on VMs without windows_configuration in OS profile.

Response

{
  "message": "AMA installed",
  "extension": "AzureMonitorLinuxAgent"
}
If the agent is already installed, the API returns a 200 status with message “AMA already installed”.

GCP VM Monitoring

Find VM for Monitoring

Locate a VM instance across all projects and zones.

Endpoint

GET /api/gcp/vms/find/<vm_name>

Response

{
  "projectId": "my-project-id",
  "zone": "us-central1-a",
  "vmName": "my-instance",
  "instanceId": "1234567890123456789",
  "status": "RUNNING",
  "machineType": "e2-medium",
  "resourceId": "projects/my-project-id/zones/us-central1-a/instances/my-instance"
}

Available Metrics

Query available metrics for a GCP VM instance.

Endpoint

GET /api/gcp/vms/<project_id>/<instance_id>/metrics

Response

{
  "metrics": [
    {
      "type": "compute.googleapis.com/instance/cpu/utilization",
      "displayName": "Użycie CPU",
      "unit": "%"
    },
    {
      "type": "compute.googleapis.com/instance/network/received_bytes_count",
      "displayName": "Sieć (Odebrane)",
      "unit": "bajty"
    },
    {
      "type": "compute.googleapis.com/instance/network/sent_bytes_count",
      "displayName": "Sieć (Wysłane)",
      "unit": "bajty"
    },
    {
      "type": "compute.googleapis.com/instance/disk/read_bytes_count",
      "displayName": "Dysk (Odczyt)",
      "unit": "bajty"
    },
    {
      "type": "compute.googleapis.com/instance/disk/write_bytes_count",
      "displayName": "Dysk (Zapis)",
      "unit": "bajty"
    },
    {
      "type": "agent.googleapis.com/memory/percent_used",
      "displayName": "Użycie pamięci (Agent)",
      "unit": "%"
    },
    {
      "type": "agent.googleapis.com/disk/percent_used",
      "displayName": "Użycie dysku (Agent)",
      "unit": "%"
    }
  ]
}
Available without installing Ops Agent:
  • CPU utilization
  • Network bytes (sent/received)
  • Disk operations (read/write bytes)
Require Google Cloud Ops Agent:
  • Memory usage percentage
  • Disk usage percentage
  • Custom application metrics

Query Metric Time Series

Retrieve historical metric data.

Endpoint

POST /api/gcp/vms/<project_id>/<instance_id>/metrics/query

Request Parameters

metricType
string
required
Metric type to query (e.g., compute.googleapis.com/instance/cpu/utilization)
timespanMinutes
integer
default:60
Time window for the query in minutes

Request Example

{
  "metricType": "compute.googleapis.com/instance/cpu/utilization",
  "timespanMinutes": 60
}

Response

{
  "data": [
    {
      "timestamp": "2026-03-05T12:00:00+00:00",
      "average": 0.4532
    },
    {
      "timestamp": "2026-03-05T12:05:00+00:00",
      "average": 0.5218
    }
  ]
}

Aggregation Configuration

alignment_period
duration
default:"300 seconds"
Time interval for data aggregation (5 minutes)
per_series_aligner
string
default:"ALIGN_MEAN"
Aggregation function applied to time series data
  • ALIGN_MEAN - Average value
  • ALIGN_MIN - Minimum value
  • ALIGN_MAX - Maximum value
  • ALIGN_SUM - Sum of values

Check Ops Agent Status

Verify if Google Cloud Ops Agent is installed and active.

Endpoint

GET /api/gcp/vms/<project_id>/<instance_id>/agent

Response

{
  "hasOpsAgent": true,
  "message": "Ops Agent jest aktywny."
}

Detection Method

The system checks for the agent.googleapis.com/agent/uptime metric in the last 10 minutes:
  • Active: Metric data exists → Agent is running
  • Inactive: No metric data → Agent not installed or not reporting

Install Ops Agent

Automatically install Google Cloud Ops Agent on a VM.

Endpoint

POST /api/gcp/vms/<project_id>/<instance_id>/agent/install

Response

{
  "message": "Zainicjowano instalację Ops Agent (LINUX) na VM 'my-instance'.",
  "operation_name": "projects/my-project-id/locations/us-central1-a/guestOperations/..."
}

Installation Scripts

curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh && \
sudo bash add-google-cloud-ops-agent-repo.sh --also-install
Executed via OS Config API with SHELL command type.
The installation is asynchronous. Check agent status after 2-3 minutes to verify successful installation.

Required Permissions

To install Ops Agent, the service account needs:
  • compute.instances.get
  • osconfig.guestPolicies.create (or use roles/osconfig.guestPolicyAdmin)

Query VM Logs (GCP)

Execute custom log queries using Cloud Logging.

Endpoint

POST /api/gcp/vms/<project_id>/<instance_id>/logs

Request Parameters

lqlQuery
string
required
Log Query Language (LQL) filter expressionMust include: resource.labels.instance_id="<instance_id>"

Request Example

{
  "lqlQuery": "resource.type=\"gce_instance\" AND resource.labels.instance_id=\"1234567890123456789\" AND severity>=WARNING"
}

Response

{
  "columns": ["timestamp", "severity", "logName", "message"],
  "rows": [
    [
      "2026-03-05T12:34:56.789Z",
      "WARNING",
      "syslog",
      "Disk usage above 80%"
    ],
    [
      "2026-03-05T12:35:12.345Z",
      "ERROR",
      "application",
      "Connection timeout"
    ]
  ]
}

Query Configuration

order_by
string
default:"DESCENDING"
Sort order by timestamp (newest first)
page_size
integer
default:100
Maximum number of log entries to return

Monitoring Comparison

Features

  • Agent: Azure Monitor Agent (AMA)
  • Metrics Interval: 5 minutes
  • Default Retention: 30 days
  • Memory Metrics: Requires agent
  • Log Analytics: Azure Monitor Logs

Metrics Source

  • Platform metrics (agentless): CPU, network, disk
  • Guest metrics (AMA required): Memory, processes

Code Reference

backend/azure_modules/vmmonitor.py:14-208

Next Steps

Configure Alerts

Set up alert policies for metrics

Azure VMs

Learn more about Azure VM management

GCP VMs

Explore GCP VM operations

Build docs developers (and LLMs) love