> ## Documentation Index
> Fetch the complete documentation index at: https://agenticbanking.backbase.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Monitor and troubleshoot Sync Hub

> Monitor Sync Hub producers, consumers, and topics with Grafana and Azure Service Bus tooling, and resolve common errors

Sync Hub runs as platform services (the producer and the consumer) on top of Azure Service Bus. You monitor it with the same Grafana stack you use for connectors, plus Azure Service Bus tooling for topics, subscriptions, and dead letter queues.

The following sections cover Sync Hub-specific monitoring. For connector-generic monitoring, see [Monitor](/platform/developer-guides/monitor).

## Prerequisites

Before you start, make sure you have:

* Grafana access with a role for the target environment. For role setup, see [Grafana prerequisites](/platform/developer-guides/monitor#prerequisites).
* Access to Azure Service Bus tooling for queue inspection. For more information, see [Service Bus explorer](/platform/developer-guides/run#service-bus-explorer).
* The namespace names for your runtime: `synchub-producer` for the producer and `synchub-consumer` for the consumer.

## Dashboards

Grand Central provides Grafana dashboard templates that include Sync Hub panels. The following table describes the dashboards relevant to Sync Hub.

| Dashboard | What it shows |
| :- | :- |
| Async Messaging - Connector Pipeline | Producer publish activity, including messages received and published per topic |
| Grand Central - Operations Overview | Log volume and error panels for platform jobs, including the Sync Hub producer |

Dashboard availability varies by installation. In Grafana, search for dashboards by name, or filter by the `synchub` tag (carried by the Async Messaging - Connector Pipeline dashboard). If your installation doesn't include these dashboards, contact your platform administrator.

## Logs

The producer and consumer write application logs to the same Loki data source as your connectors.

To view Sync Hub logs in Grafana:

1. Navigate to **Explore** in the left sidebar.
2. Select the logs data source for your environment, for example `{customer}-logs`.
3. Filter by namespace or service name.

The following LogQL examples query Sync Hub logs:

```logql theme={"system"}
# All producer logs
{namespace="synchub-producer"}

# All consumer logs
{namespace="synchub-consumer"}

# Producer publish activity
{service_name="asb-producer"} |= "Message published"

# Errors only
{namespace="synchub-producer"} |= "ERROR"
{namespace="synchub-consumer"} |= "ERROR"
```

## Health and metrics

The producer and consumer expose Spring Boot Actuator health endpoints, which the platform uses for Kubernetes liveness and readiness probes. If a pod restarts repeatedly, check its events and logs first:

```bash theme={"system"}
kubectl describe pod -n synchub-producer -l app=asb-producer
kubectl logs -n synchub-producer -l app=asb-producer
```

For queue-level health, use Azure Service Bus metrics in the Azure Portal:

* **Incoming messages** and **outgoing messages** per topic: confirm events flow as expected.
* **Dead letter message count** per subscription: a growing count means consumers fail to process messages.
* **Active message count** per subscription: sustained growth means consumers can't keep up with producers.

## Common errors

The following table lists common Sync Hub errors and how to resolve them.

| Symptom | Likely cause | Resolution |
| :- | :- | :- |
| Producer fails on startup | The `backbase.grandcentral.events.servicebus.activeTopics` property (from the producer Helm values) is empty or missing | Set at least one topic name |
| Consumer fails to process messages | The `sessionEnabled` value (from the consumer Helm values) doesn't match `requiresSession` on the subscription (from the `servicebus.values.yaml` file) | Align the two values and redeploy |
| Connector can't reach the producer | Missing pod labels on the connector | Add `app.gcservices.io/synchub-enabled: "true"` and `app.gcservices.io/synchub-type: "producer"` through `connector.customLabels` in the connector `values.yaml` file |
| Topics or subscriptions missing after a GitOps change | ArgoCD sync failure for the `aso-asb` app | Check the `aso-asb` app in ArgoCD for invalid YAML, missing Azure Service Operator CRDs, or insufficient permissions on the Azure Service Bus namespace |
| Publish request rejected with `422` | Request body has no top-level `data` object | Add the `data` field with the event payload. See [Event envelope](/platform/sync-hub/events-and-files-reference#event-envelope) |
| Consumer calls to Azure API Management (APIM) fail with `401` or `403` | Wrong or missing APIM subscription key in the `topicEndpoints` configuration (from the consumer Helm values) | Verify the `subscriptionkey` value for the topic and subscription |
| Messages land in the dead letter queue | Delivery attempts exceeded `maxDeliveryCount` on the subscription, or messages expired | Inspect the dead letter queue in Service Bus tooling, fix the underlying consumer error, and resubmit or discard the messages |

For deployment-level troubleshooting steps, see [Troubleshooting](/platform/sync-hub/deployment#troubleshooting).

## Get help

If you can't resolve an issue with the preceding steps:

* Collect the producer or consumer logs that show the error, plus the topic and subscription names involved.
* Create a ticket on the [Support Portal](https://support.backbase.com/) with those details.

## Next steps

* [Sync Hub events and files reference](/platform/sync-hub/events-and-files-reference): Envelope fields, headers, and delivery behavior.
* [Sync Hub go-live checklist](/platform/sync-hub/go-live-checklist): Verify monitoring is in place before production.
* [Monitor](/platform/developer-guides/monitor): Connector-generic monitoring with Grafana, Kubernetes, and APIM.
