Skip to content

Commit d5ee038

Browse files
authored
Merge pull request #2875 from odidev/otel_LP
Deploy OpenTelemetry on Google Cloud C4A Arm-based Axion VMs
2 parents 32b800a + 9fce404 commit d5ee038

16 files changed

Lines changed: 717 additions & 0 deletions
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
---
2+
title: Deploy OpenTelemetry on Google Cloud C4A Arm-based Axion VMs
3+
4+
draft: true
5+
cascade:
6+
draft: true
7+
8+
minutes_to_complete: 40
9+
10+
who_is_this_for: This learning path is designed for DevOps engineers, platform engineers, and software developers who want to deploy and observe a cloud-native microservice on Arm64-based Google Cloud C4A Axion processors using OpenTelemetry, along with industry-standard observability tools.
11+
12+
learning_objectives:
13+
- Provision a SUSE Linux Enterprise Server (SLES) virtual machine on Google Cloud C4A Arm-based Axion processors
14+
- Install and configure Docker and Docker Compose on an Arm64 environment
15+
- Build and run an Arm-native Python Flask microservice in containers
16+
- Instrument the microservice using OpenTelemetry SDK for distributed tracing and metrics
17+
- Deploy and configure OpenTelemetry Collector for telemetry processing
18+
- Integrate Prometheus for metrics collection and visualization
19+
- Integrate Jaeger for distributed tracing and service visualization
20+
- Expose and validate observability dashboards
21+
- Generate traffic to observe telemetry data flow and performance behavior
22+
- Understand observability best practices on Arm-based cloud infrastructure
23+
24+
prerequisites:
25+
- A [Google Cloud Platform (GCP)](https://cloud.google.com/free) account with billing enabled
26+
- Basic familiarity with Python and Flask
27+
- Basic understanding of containers and Kubernetes concepts
28+
29+
author: Pareena Verma
30+
31+
##### Tags
32+
skilllevels: Introductory
33+
subjects: Performance and Architecture
34+
cloud_service_providers: Google Cloud
35+
36+
armips:
37+
- Neoverse
38+
39+
tools_software_languages:
40+
- Flask
41+
- Docker
42+
- Prometheus
43+
- Jaeger
44+
45+
operatingsystems:
46+
- Linux
47+
48+
# ================================================================================
49+
# FIXED, DO NOT MODIFY
50+
# ================================================================================
51+
52+
further_reading:
53+
- resource:
54+
title: Google Cloud documentation
55+
link: https://cloud.google.com/docs
56+
type: documentation
57+
58+
- resource:
59+
title: OpenTelemetry documentation
60+
link: https://opentelemetry.io/docs/
61+
type: documentation
62+
63+
- resource:
64+
title: Prometheus documentation
65+
link: https://prometheus.io/docs/introduction/overview/
66+
type: documentation
67+
68+
- resource:
69+
title: Jaeger documentation
70+
link: https://www.jaegertracing.io/docs/
71+
type: documentation
72+
73+
- resource:
74+
title: Docker documentation
75+
link: https://docs.docker.com/
76+
type: documentation
77+
78+
weight: 1
79+
layout: "learningpathall"
80+
learning_path_main_page: yes
81+
---
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
# ================================================================================
3+
# FIXED, DO NOT MODIFY THIS FILE
4+
# ================================================================================
5+
weight: 21 # Set to always be larger than the content in this path to be at the end of the navigation.
6+
title: "Next Steps" # Always the same, html page title.
7+
layout: "learningpathall" # All files under learning paths have this same wrapper for Hugo processing.
8+
---
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
title: Get started with OpenTelemetry on Google Axion C4A
3+
4+
weight: 2
5+
6+
layout: "learningpathall"
7+
---
8+
9+
## Explore Axion C4A Arm instances in Google Cloud
10+
11+
Google Axion C4A is a family of Arm-based virtual machines built on Google’s custom Axion CPU, which is based on Arm Neoverse-V2 cores. Designed for high-performance and energy-efficient computing, these virtual machines offer strong performance for modern cloud workloads such as CI/CD pipelines, microservices, media processing, and general-purpose applications.
12+
13+
The C4A series provides a cost-effective alternative to x86 virtual machines while leveraging the scalability and performance benefits of the Arm architecture in Google Cloud.
14+
15+
To learn more, see the Google blog [Introducing Google Axion Processors, our new Arm-based CPUs](https://cloud.google.com/blog/products/compute/introducing-googles-new-arm-based-cpu).
16+
17+
18+
## Explore OpenTelemetry on Google Axion C4A (Arm Neoverse V2)
19+
20+
OpenTelemetry is an open-source observability framework that provides standardized APIs, SDKs, and tools for collecting telemetry data such as traces, metrics, and logs from cloud-native applications. It is a CNCF (Cloud Native Computing Foundation) project and is widely adopted for building vendor-neutral observability solutions.
21+
22+
OpenTelemetry enables developers to instrument applications once and export telemetry data to multiple backend systems including Prometheus, Grafana, Jaeger, Zipkin, and cloud monitoring platforms.
23+
24+
Running OpenTelemetry on Google Axion C4A Arm-based infrastructure allows you to achieve high-throughput telemetry processing with improved performance per watt and reduced infrastructure costs, making it ideal for modern distributed systems.
25+
26+
Common use cases include application performance monitoring (APM), distributed tracing, infrastructure metrics collection, log aggregation, and monitoring microservices architectures.
27+
28+
To learn more, visit the [OpenTelemetry website](https://opentelemetry.io/) and explore the [OpenTelemetry documentation](https://opentelemetry.io/docs/).
29+
30+
## What you've accomplished and what's next
31+
32+
In this section, you learned about:
33+
- Google Axion C4A Arm-based VMs and their performance characteristics
34+
- OpenTelemetry observability framework and its role in modern cloud-native monitoring
35+
- How Arm architecture enables cost-effective, high-performance telemetry processing
36+
37+
Next, you'll configure firewall rules and network access to allow external communication between your OpenTelemetry components and monitored services.
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
---
2+
title: Create a firewall rule on GCP
3+
weight: 4
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Configure GCP firewall for OpenTelemetry
10+
11+
To allow inbound traffic for the Flask application and observability components, you must create firewall rules in the Google Cloud Console.
12+
13+
{{% notice Note %}} For more information about GCP setup, see [Getting started with Google Cloud Platform](/learning-paths/servers-and-cloud-computing/csp/google/).{{% /notice %}}
14+
15+
## Required Ports
16+
17+
| Service | Port | Purpose |
18+
|--------|------|---------|
19+
| Flask Application | 8080 | Application traffic |
20+
| Jaeger UI | 16686 | Trace visualization |
21+
| Prometheus UI | 9090 | Metrics dashboard |
22+
| OTLP gRPC | 4317 | Telemetry ingestion |
23+
| OTLP HTTP | 4318 | Telemetry ingestion |
24+
| Collector Metrics | 8889 | Prometheus scrape endpoint |
25+
26+
## Create a Firewall Rule in GCP
27+
28+
To expose the Flask application (port 8080), create a firewall rule.
29+
30+
Navigate to the [Google Cloud Console](https://console.cloud.google.com/), go to **VPC Network > Firewall**, and select **Create firewall rule**.
31+
32+
![Google Cloud Console VPC Network Firewall page showing existing firewall rules and Create Firewall Rule button alt-txt#center](images/firewall-rule1.png "Create a firewall rule")
33+
34+
Next, create the firewall rule that exposes the TCP port 8080.
35+
Set the **Name** of the new rule to "allow-tcp-8080". Select your network that you intend to bind to your VM (default is "autoscaling-net", but your organization might have others).
36+
37+
Set **Direction of traffic** to "Ingress". Set **Allow on match** to "Allow" and **Targets** to "Specified target tags".
38+
39+
![Google Cloud Console firewall rule creation form showing name field, network selection, direction set to Ingress, and targets set to Specified target tags alt-txt#center](images/network-rule2.png "Creating the TCP/8080 firewall rule")
40+
41+
Next, enter "allow-tcp-8080" in the **Target tags** text field. Set **Source IPv4 ranges** to "0.0.0.0/0".
42+
43+
![Google Cloud Console firewall rule form showing target tags field with allow-tcp-8080 entered and source IPv4 ranges set to 0.0.0.0/0 alt-txt#center](images/network-rule3.png "Creating the TCP/8080 firewall rule")
44+
45+
Finally, select **Specified protocols and ports** under the **Protocols and ports** section. Select the **TCP** checkbox, enter "8080" in the **Ports" text field, and select **Create**.
46+
47+
![Google Cloud Console firewall rule form showing protocols and ports section with TCP selected and port 8080 specified alt-txt#center](images/network-port.png "Specifying the TCP port to expose")
48+
49+
{{% notice Note %}}
50+
The above steps demonstrate how to open port **8080** for the Flask application.
51+
52+
You can repeat the same workflow to create firewall rules for the following OpenTelemetry services:
53+
54+
- **16686** → Jaeger UI
55+
- **9090** → Prometheus UI
56+
- **4317** → OTLP gRPC endpoint
57+
- **4318** → OTLP HTTP endpoint
58+
- **8889** → Collector metrics endpoint
59+
60+
Change the rule name and port number accordingly (for example: `allow-tcp-16686`, `allow-tcp-9090`, etc.).
61+
{{% /notice %}}
62+
63+
You can now proceed to deploy and validate the OpenTelemetry stack.
118 KB
Loading
23.5 KB
Loading
22.3 KB
Loading
261 KB
Loading
138 KB
Loading
96.9 KB
Loading

0 commit comments

Comments
 (0)