Overview
The SYNQ Google Cloud Pub/Sub integration automatically discovers all Pub/Sub topics and subscriptions in your Google Cloud project and creates custom entities in SYNQ for centralized asset management, governance, and cross-platform data lineage. This integration can also serve as a reference implementation for building custom integrations using the SYNQ Public API. Source code: github.com/getsynq/synq-google-cloud-pubsubWhat It Does
The integration:- Discovers all Pub/Sub topics and subscriptions in your GCP project
- Creates custom entities in SYNQ for each resource
- Tracks relationships between topics and their subscriptions (optional)
- Automatically cleans up entities when resources are deleted
- Supports flexible filtering with include/exclude patterns
Use Cases
- Data Catalog Management: Track all messaging infrastructure in one place
- Resource Discovery: Automatically maintain an up-to-date inventory
- Compliance Tracking: Monitor messaging configurations and subscriptions
- Cross-Platform Lineage: Connect Pub/Sub topics with data pipelines, BigQuery tables, and other systems
Installation
Download Pre-built Binaries
Download the latest release for your platform from the releases page.macOS
macOS
Intel:Apple Silicon:
Linux
Linux
AMD64:ARM64:
Windows
Windows
Download the
.zip file from the releases page and extract it.Build from Source
Build from Source
Requires Go 1.24 or later:
Configuration
Required: SYNQ API Credentials
Create a.env file with your SYNQ API credentials:
The GCP project ID can be auto-detected from:
- Environment variables (
GCP_PROJECT_ID,GOOGLE_CLOUD_PROJECT,GCLOUD_PROJECT) gcloudCLI configuration- GCP metadata server (when running on GCP)
Optional: Advanced Configuration
For advanced customization, create aconfig.yaml file:
Configuration precedence: defaults → config.yaml → environment variables → CLI flags
Network Requirements
If your GCP project has firewall rules that restrict outbound connections, whitelist SYNQ’s egress IP addresses:- EU Region (Default)
- US Region
- App: https://app.synq.io
- API: https://developer.synq.io
- Egress IP:
34.105.135.39
Running the Integration
Basic Usage
Enabling Relationships
To track relationships between topics and subscriptions:Dry-Run Mode
Preview what entities would be created without making API calls:In dry-run mode, the integration scans Pub/Sub resources and shows what would be created, but does not call the SYNQ API or require credentials.
Command-Line Options
Common flags:--dry-run- Preview changes without calling SYNQ API--gcp.project-id- Specify GCP project ID--relationships.enabled- Enable topic-to-subscription relationships--filter.topics.include- Topic name patterns to include--filter.topics.exclude- Topic name patterns to exclude--filter.subscriptions.include- Subscription name patterns to include--filter.subscriptions.exclude- Subscription name patterns to exclude--types.topic-type-id- Custom entity type ID for topics (default: 20)--types.subscription-type-id- Custom entity type ID for subscriptions (default: 21)--synq.endpoint- SYNQ API endpoint (EU or US region)
./synq-google-cloud-pubsub --help for all available options.
How It Works
- Authenticates with SYNQ API using OAuth2 client credentials
- Creates/updates custom entity types for topics and subscriptions
- Discovers all Pub/Sub topics and subscriptions in your project
- Creates entities in SYNQ for each resource
- Manages relationships between topics and subscriptions (if enabled)
- Uses entity groups to enable automatic cleanup of deleted resources
Entity Groups
The integration uses entity groups to track all entities created in each run. When the group is updated, SYNQ automatically removes entities that were in the previous group but not in the current one, enabling automatic cleanup of deleted resources.Relationship Management
When enabled, the integration creates relationships between topics and their subscriptions. The system:- Deduplicates relationships to avoid recreating existing ones
- Cleans up relationships that no longer exist
- Supports filtering with include/exclude patterns
Custom Identifiers
All entities use custom identifiers withpubsub:: prefix for namespace isolation. Subscriptions use composite identifiers: pubsub::<topic_id>::<subscription_id>.
Scheduling with Cron
To keep your Pub/Sub inventory up-to-date, schedule the integration to run periodically:Using as a Public API Example
This integration demonstrates best practices for using the SYNQ Public API:- OAuth2 authentication with client credentials
- Creating and managing multiple custom entity types
- Using entity groups for automatic cleanup
- Managing relationships between entities
- Implementing filtering and dry-run modes
- Handling regional deployments
Troubleshooting
Authentication errors
Authentication errors
Verify your SYNQ credentials are correct in the
.env file. Ensure you’re using the correct endpoint for your region (EU or US).GCP project not detected
GCP project not detected
Set the
GCP_PROJECT_ID environment variable explicitly or configure gcloud CLI with your project:Permission denied errors
Permission denied errors
Ensure your GCP credentials have the following permissions:
pubsub.topics.listpubsub.subscriptions.list
Too many auto-generated subscriptions
Too many auto-generated subscriptions
Use the default filter to exclude auto-generated per-pod subscriptions, or customize the filter patterns:
Network connectivity issues
Network connectivity issues
If running behind a firewall, verify that outbound connections to the SYNQ API endpoint are allowed. Check your network configuration and firewall rules.
Support
For issues or questions:- GitHub Issues: github.com/getsynq/synq-google-cloud-pubsub/issues
- SYNQ Support: support