GCP

This page describes steps to follow to setup real-time visualization of GCP Assets (vpc, subnet and virtual server).

Real-time visualization is only supported for vpc, subnet and virtual server resource types as of today (Feb 08, 2024).

Changelog

Feb 8, 2024

  • Created initial version descripting steps for setting up real-time visualization of GCP assets (vpc, subnet and vm).

Feb 10, 2024

  • Updated instructions.

Steps for setting up real-time updates

1. Create a topic

  • Go to console -> topics (use search bar to jump to this).

  • Add a topic with mc-mgmt-events id (see below screenshot for other details)

  • Click on newly created topic in the list of topics and then click on TRIGGER CLOUD FUNCTION link.

  • Create a function with details as follows -

    • Basics

      • Environment - 2nd gen

      • Function name - process-mc-events

      • Region - Choose a region of your choice

    • Trigger - Leave it unchanged ( make sure it is having topic created in the previous step selected under Cloud Pub/Sub topic field.

    • Runtime, build, connections and security settings (Choose other settings as per your convenience)

      • Runtime

        • Timeout - 30 seconds

        • Runtime environment variables -

          • TEAM_ID - d65e32d2-e18f-49a7-8cbf-e19205772ea0

          • CLOUD_ACCOUNT_ID - You can get this from MechCloud console -> Infrastructure -> Cloud Accounts page.

          • ACCESS_TOKEN - Once you are logged into MechCloud, simply open a new tab, and enter https://portal-preview.mechcloud.io/oauth2/auth1 url in the address bar. It will print your access/jwt token.

      • Connections

        • Ingress Settings - Allow internal traffic only

    • Source code

      • Runtime - Python 3.12

      • Entry point - process_event

      • Source code - Inline editor

    • Make sure requirements.txt has following additional modules -

      • requests==2.31.0

    • Add following code under main.py file-

2. Create log routing sinks

To visualize GCP resource in real-time, we will need to create one log routing sink per resource type (e.g. vpc). You can add a log routing sink by going to console -> logging (use search bar to jump to this) -> Log router and click on Create sink link to add a sink. Make sure you have following log routing sinks created -

Sink Name
Sink Destination
Logs to include in sink

mc-vpc-mgmt-events

Service - Cloud Pub/Sub topic Topic - projects/<project_name>/topics/mc-mgmt-events

resource.type="gce_network" protoPayload.methodName="beta.compute.networks.insert" OR protoPayload.methodName="v1.compute.networks.insert" OR protoPayload.methodName="beta.compute.networks.delete" OR protoPayload.methodName="v1.compute.networks.delete"

mc-subnet-mgmt-events

Service - Cloud Pub/Sub topic Topic - projects/<project_name>/topics/mc-mgmt-events

resource.type="gce_subnetwork" protoPayload.methodName="beta.compute.subnetworks.insert" OR protoPayload.methodName="v1.compute.subnetworks.insert" OR protoPayload.methodName="beta.compute.subnetworks.delete" OR protoPayload.methodName="v1.compute.subnetworks.delete"

mc-vm-mgmt-events

Service - Cloud Pub/Sub topic Topic - projects/<project_name>/topics/mc-mgmt-events

resource.type="gce_instance" protoPayload.methodName="beta.compute.subnetworks.insert" OR protoPayload.methodName="v1.compute.instances.insert" OR protoPayload.methodName="beta.compute.instances.delete" OR protoPayload.methodName="v1.compute.instances.delete" OR protoPayload.methodName="beta.compute.instances.start" OR protoPayload.methodName="v1.compute.instances.start" OR protoPayload.methodName="beta.compute.instances.stop" OR protoPayload.methodName="v1.compute.instances.stop"

Last updated

Was this helpful?