Compute Engine Metrics
Overview
This document provides a detailed walkthrough on how to send Google Compute Engine metrics to SigNoz. By the end of this guide, you will have a setup that sends your Compute Engine metrics to SigNoz.
Here's a quick summary of what we will be doing in this guide
- Create and configure Compute Engine VM instance(whose metrics you want to observe in SigNoz)
- Create and configure Compute Engine VM instance to deploy OpenTelemetry Collector
- Deploy OpenTelemetry Collector to scrape the metrics from Google Cloud Monitoring
- Send and Visualize the metrics in SigNoz Cloud
Prerequisites
- Google Cloud account with administrative privilege or Compute Instance Admin privilege.
- SigNoz Cloud Account (we are using SigNoz Cloud for this demonstration, we will also need ingestion details. To get your Ingestion Key and Ingestion URL, sign-in to your SigNoz Cloud Account and go to Settings >> Ingestion Settings)
- Access to a project in GCP
Setup
Get started with Compute Engine Configuration
Create the Compute Engine instance using the following steps:
Step 1: Go to your GCP console and search for Compute Engine, go to Compute Engine service and click on CREATE INSTANCE.
Step 2: Give an apprpriate name for the Compute Engine instance. Select an appropriate region and zone. You can choose a machine as per your requirements. After choosing all the appropriate settings, click on CREATE button at the bottom of the page.
With this, the Compute Engine instance is created.
In case you want two different Compute Engine instances, one where you will be deploying your application, and another where you will be deploying Telegrah and OTel Collector, you can create one more Compute Engine instance following the same steps as above.
Deploy OpenTelemetry to scrape the metrics from Google Cloud Monitoring
Step 1: Install and configure OpenTelemetry for scraping the metrics from Google Cloud Monitoring. Follow OpenTelemetry Binary Usage in Virtual Machine guide for detailed instructions.
Note that googlecloudmonitoring
receiver is supported only from version 0.112.0 and above of opentelemetry-collector. So, ensure you download and use the appropriate release.
Step 2: Create config.yaml
.
Under the googlecloudmonitoring
receiver, you need to specify the metrics that you want to capture in the metrics_list
. You can include all the metrics that you would like to capture for Compute Engine, see the available metrics for Compute Engine.
Here is the config.yaml
file for capturing Compute Engine metrics:
receivers:
googlecloudmonitoring:
collection_interval: 5m # Can be specified in seconds (s), minutes (m), or hours (h)
project_id: my-project-id
metrics_list:
- metric_name: "compute.googleapis.com/instance/cpu/usage_time"
- metric_name: "compute.googleapis.com/instance/cpu/utilization"
- metric_name: "compute.googleapis.com/instance/disk/read_ops_count"
- metric_name: "compute.googleapis.com/instance/disk/write_ops_count"
- metric_name: "compute.googleapis.com/instance/network/received_bytes_count"
- metric_name: "compute.googleapis.com/instance/network/sent_bytes_count"
processors:
resource/env:
attributes:
- key: deployment.environment
value: prod
action: upsert
batch: {}
exporters:
otlp:
endpoint: "ingest.{region}.signoz.cloud:443"
tls:
insecure: false
headers:
"signoz-ingestion-key": "<SIGNOZ_INGESTION_KEY>"
service:
pipelines:
metrics:
receivers: [googlecloudmonitoring]
processors: [resource/env, batch]
exporters: [otlp]
Depending on the choice of your region for SigNoz cloud, the otlp endpoint will vary according to this table.
Region | Endpoint |
---|---|
US | ingest.us.signoz.cloud:443 |
IN | ingest.in.signoz.cloud:443 |
EU | ingest.eu.signoz.cloud:443 |
After successful configuration start the OTel Collector using following command:
./otelcol-contrib --config ./config.yaml &> otelcol-output.log & echo "$!" > otel-pid
Step 3: If the configurations are configured correctly, you can see the output logs from OpenTelemtry as follows:
Send and Visualize the metrics obtained by OpenTelemetry in SigNoz
Step 1: Go to the SigNoz Cloud URL and head over to the dashboard.
Step 2: If not already created, create a new dashboard. You can create the dashboard and multiple panel under it by following the instructions here.
Step 3: While creating the panel, select metric for Compute Engine.
All metrics starting with compute_googleapis_com_
have been collected from Compute Engine.
Here is the sample dashboard for Compute Engine:
Troubleshooting
If you run into any problems while setting up monitoring for your Compute Engine's metrics with SigNoz, consider these troubleshooting steps:
- Verify Configuration: Double-check your
config.yaml
file to ensure all settings, including the ingestion key and endpoint, are correct. - Review Logs: Look at the logs of both Compute Engine and the OpenTelemetry Collector to identify any error messages or warnings that might provide insights into what’s going wrong.
- Update Dependencies: Ensure all relevant packages and dependencies are up-to-date to avoid compatibility issues.
- Consult Documentation: Review the SigNoz and OpenTelemetry documentation for any additional troubleshooting of the common issues.