Integrations
Integration

Monitor Google Cloud with Sazabi

By Sazabi Team

Last verified on Nov 8, 2026.

Google Cloud writes two kinds of records you care about. The first is what your workloads print: Cloud Run requests, Cloud Functions output, GKE container logs. The second is what happened to the cloud itself: who changed an IAM policy, which service account created a VM, which request was denied. Both go to Cloud Logging, and neither is much use when it sits in a project nobody is looking at.

Sazabi is AI-native observability and security. It reads Cloud Logging entries through Pub/Sub, so application logs and audit logs from several projects land in one place you can ask questions of.

What each source sends

Logs travel one way: a Cloud Logging sink routes entries to a Pub/Sub topic, and a pull subscription feeds Sazabi. The connected-account path provisions that for you with a service account key. Each project stream forwards every log entry in the project, Cloud Audit Logs included. The manual path has you build the sink and topic and run an OpenTelemetry Collector using the googlecloudpubsub receiver with the googlecloudlogentry_encoding extension. Neither path forwards Cloud Monitoring metrics or traces.

Audit logs get their own stream type. An organization or folder stream creates one aggregated sink with the children included, routing only Cloud Audit Logs: Admin Activity, Data Access, System Event and Policy Denied. Google documents the same four types for every project, folder and organization, and says an audit entry is a LogEntry whose protoPayload holds an AuditLog object (Google Cloud: Audit logs). Sazabi exposes these as searchable attributes:

  • gcp.audit.method_name, gcp.audit.service_name and gcp.audit.resource_name
  • gcp.audit.principal_email, gcp.audit.caller_ip and gcp.audit.user_agent
  • gcp.audit.authorization_granted and gcp.audit.status_code
  • gcp.log_name and gcp.insert_id

The agent has two more routes in. The MCP connector points at Google's per-product servers, with Cloud Logging as the default and Cloud Monitoring and BigQuery as alternatives, using a short-lived OAuth 2.0 access token. The gcloud CLI connection adds gcloud, gsutil and bq to the sandbox.

Questions it answers

  • Who changed this IAM policy, from which address, and was it authorized?
  • Which service account created or deleted resources in the last day?
  • Did a Cloud Run revision start logging errors right after a deploy?
  • Which requests were denied by policy, and for which principal?
  • Which projects are forwarding, and which have gone quiet?

A worked example: tracing an IAM change

Say a service account gained a role it should not have. The audit entry for it is an Admin Activity record, and Sazabi keeps the fields you need as attributes. A made-up example of what you would read:

{
  "gcp.log_name": "projects/example-prod/logs/cloudaudit.googleapis.com%2Factivity",
  "gcp.audit.service_name": "cloudresourcemanager.googleapis.com",
  "gcp.audit.method_name": "SetIamPolicy",
  "gcp.audit.principal_email": "deploy-bot@example-prod.iam.gserviceaccount.com",
  "gcp.audit.caller_ip": "203.0.113.57",
  "gcp.audit.resource_name": "projects/example-prod",
  "gcp.audit.authorization_granted": true,
  "gcp.audit.status_code": 0
}

The last part of gcp.log_name says this is an Admin Activity entry, so it records a configuration change and not a read. The principal is a service account, and authorization_granted is true, so IAM allowed it. Ask the agent for the surrounding story:

sazabi logs ask "Show gcp.audit.method_name SetIamPolicy entries in the last 24 hours with principal_email, caller_ip and resource_name"

Next, look at what else that principal did in the same window. If a CI service account is calling SetIamPolicy from an address that is not your CI, that is the thing to chase. If the address is your CI and the call matches a deploy, the change was expected and you can review the role it granted.

What you pay for on the Google side

Google Cloud bills for Pub/Sub delivery and egress, and Sazabi does not. Sink filters decide the volume, and Google lets an aggregated sink filter run up to 20,000 characters, with up to 50 exclusion filters per sink (Google Cloud: Aggregated sinks). Data Access audit logs are off by default, except for BigQuery, and can be very high volume. If you add an organization stream and also project streams beneath it, Sazabi receives those projects' audit entries from both.

How it fits with other integrations

If your workloads run on another cloud, AWS covers the same role for CloudTrail and CloudWatch, and Cloudflare covers the edge in front of either. The collector route uses the OpenTelemetry integration. See cloud platforms for the full group and security for tools that produce audit data. For plans, see pricing.

Ways to connect

  • Google Cloud (GCP) (MCP connector): Give the Sazabi agent tools to query Cloud Logging, Cloud Monitoring, BigQuery, and other Google Cloud products using a Google OAuth 2.0 Bearer access token.

Log sources

  • Google Cloud (native log source, cloud platforms): Connect your Google Cloud account so Sazabi can provision a Cloud Logging sink, Pub/Sub topic, and pull subscription for each project, folder, or organization you select.
  • Google Cloud (manual log source, cloud platforms): Set up your own Cloud Logging sink, Pub/Sub topic, and OpenTelemetry Collector to forward GCP logs to Sazabi without connecting a service account.

What Sazabi detects from these logs today

These detections are on for every production project, with no monitors or alert rules to write. Sazabi opens an issue when one fires.

  • Novel event: A kind of error that has never appeared before.

Frequently Asked Questions

How do Google Cloud logs reach Sazabi?

A Cloud Logging sink routes log entries to a Pub/Sub topic, and a pull subscription feeds Sazabi. Connect your account and Sazabi creates the sink, topic and subscription for each project you pick. Or build the sink and topic yourself and run an OpenTelemetry Collector with the googlecloudpubsub receiver.

Who pays for the Pub/Sub traffic?

You do. Google Cloud bills for Pub/Sub message delivery and any egress, and Sazabi does not. Use log sink filters so only the logs you need are forwarded, and be careful with Data Access audit logs, which can be very high volume.

Are Cloud Monitoring metrics and traces forwarded?

No. The log source covers Cloud Logging entries only. The MCP connector is the way the agent reads Cloud Monitoring metrics, by pointing it at the monitoring.googleapis.com/mcp server.

How do I collect audit logs from every project in an organization?

Add an organization or folder stream. It creates one aggregated sink that includes every child project and routes only Cloud Audit Logs, with its Pub/Sub topic and subscription in the service account's own project.

Sources

  1. Native connection provisions a Cloud Logging sink, Pub/Sub topic and pull subscription per project, folder or organization; audit log attributes gcp.audit.*; IAM roles; Pub/Sub billing note (accessed Nov 8, 2026)
  2. Self-managed sink, Pub/Sub topic and OpenTelemetry Collector with the googlecloudpubsub receiver and googlecloudlogentry_encoding extension; Cloud Logging entries only (accessed Nov 8, 2026)
  3. MCP connector to Google Cloud product servers at SERVICE.googleapis.com/mcp for Cloud Logging, Cloud Monitoring and BigQuery with an OAuth 2.0 Bearer access token (accessed Nov 8, 2026)
  4. gcloud, gsutil and bq in the agent sandbox with GCLOUD_SERVICE_ACCOUNT_KEY_JSON and GCLOUD_PROJECT_ID (accessed Nov 8, 2026)
  5. Four audit log types per project, folder and organization; audit entries are LogEntry objects with a protoPayload AuditLog; log names under cloudaudit.googleapis.com; AuthenticationInfo holds the caller identity (accessed Nov 8, 2026)
  6. Aggregated sinks route organization or folder logs with --include-children; filter and exclusion limits (accessed Nov 8, 2026)