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

# Monitor and Debug Changefeeds

export const InternalLink = ({version, path = "", children, ...props}) => {
  let detectedVersion = version || "stable";
  if (typeof window !== 'undefined' && !version) {
    const match = window.location.pathname.match(/\/docs\/([^/]+)/);
    if (match) {
      detectedVersion = match[1];
    }
  }
  const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
  return <a href={`/docs/${detectedVersion}/${normalizedPath}`} {...props}>
      {children}
    </a>;
};

Changefeeds work as jobs in CockroachDB, which allows for [monitoring](#monitor-a-changefeed) and [debugging](#debug-a-changefeed) through the <InternalLink path="ui-overview">DB Console</InternalLink> <InternalLink path="ui-jobs-page">**Jobs**</InternalLink> page and <InternalLink path="show-jobs">`SHOW JOBS`</InternalLink> SQL statements using the job ID.

<a id="changefeed-retry-errors" />

By default, changefeeds treat errors as retryable except for some specific terminal errors that are non-retryable.

* **retryable**: The changefeed will automatically retry whatever caused the error. (You may need to intervene so that the changefeed can resume.)
* **non-retryable**: The changefeed has encountered a terminal error and fails.

The following define the categories of non-retryable errors:

* When the changefeed cannot verify the target table's schema. For example, the table is offline or there are types within the table that the changefeed cannot handle.
* The changefeed cannot convert the data to the specified <InternalLink path="changefeed-messages">output format</InternalLink>. For example, there are <InternalLink path="changefeed-messages#avro">Avro</InternalLink> types that changefeeds do not support, or a <InternalLink path="cdc-queries">CDC query</InternalLink> is using an unsupported or malformed expression.
* The terminal error happens as part of established changefeed behavior. For example, you have specified the <InternalLink path="create-changefeed">`schema_change_policy=stop` option</InternalLink> and a schema change happens.

We recommend monitoring changefeeds with <InternalLink path="monitoring-and-alerting#prometheus-endpoint">Prometheus</InternalLink> to avoid accumulation of garbage after a changefeed encounters an error. See <InternalLink path="changefeed-messages#garbage-collection-and-changefeeds">Garbage collection and changefeeds</InternalLink> for more detail on how changefeeds interact with <InternalLink path="architecture/storage-layer#protected-timestamps">protected timestamps</InternalLink> and garbage collection. In addition, see the [Recommended changefeed metrics to track](#recommended-changefeed-metrics-to-track) section for the essential metrics to track on a changefeed.

## Monitor a changefeed

<Note>
  Monitoring is only available for Enterprise changefeeds.
</Note>

Changefeed progress is exposed as a high-water timestamp that advances as the changefeed progresses. This is a guarantee that all changes before or at the timestamp have been emitted. You can monitor a changefeed:

* On the <InternalLink path="ui-cdc-dashboard">**Changefeeds** dashboard</InternalLink> of the DB Console.

* On the <InternalLink path="ui-jobs-page">**Jobs** page</InternalLink> of the DB Console. Hover over the high-water timestamp to view the <InternalLink path="as-of-system-time">system time</InternalLink>.

* Using `SHOW CHANGEFEED JOB <job_id>`:

  ```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
  SHOW CHANGEFEED JOB 383870400694353921;
  ```

  ```
          job_id       |  job_type  |                              description                              | ... |      high_water_timestamp      | ... |
  +--------------------+------------+-----------------------------------------------------------------------+ ... +--------------------------------+ ... +
    383870400694353921 | CHANGEFEED | CREATE CHANGEFEED FOR TABLE office_dogs INTO 'kafka://localhost:9092' | ... | 1537279405671006870.0000000000 | ... |
  (1 row)
  ```

* Using Prometheus and Alertmanager to track and alert on changefeed metrics. See the <InternalLink path="monitor-cockroachdb-with-prometheus">Monitor CockroachDB with Prometheus</InternalLink> tutorial for steps to set up Prometheus. See the [Recommended changefeed metrics to track](#recommended-changefeed-metrics-to-track) section for the essential metrics to alert you when a changefeed encounters a retryable error, or enters a failed state.

<Note>
  You can use the high-water timestamp to <InternalLink path="create-changefeed#start-a-new-changefeed-where-another-ended">start a new changefeed where another ended</InternalLink>.
</Note>

### Recommended changefeed metrics to track

By default, changefeeds will retry errors with [some exceptions](#changefeed-retry-errors). We recommend setting up monitoring for the following metrics to track retryable errors to avoid an over-accumulation of garbage, and non-retryable errors to alert on changefeeds in a failed state:

* `changefeed.max_behind_nanos`: When a changefeed's high-water mark timestamp is at risk of falling behind the cluster's <InternalLink path="configure-replication-zones#replication-zone-variables">garbage collection window</InternalLink>.
* `changefeed.error_retries`: The total number of retryable errors encountered by all changefeeds.
* `changefeed.failures`: The total number of changefeed jobs that have failed.

If you are running more than 10 changefeeds, we recommend monitoring the CPU usage on your cluster. You can use the <InternalLink path="ui-overload-dashboard">Overload Dashboard</InternalLink> in the DB Console to track the performance of your cluster relating to CPU usage. For recommendations around how many tables a changefeed should target, refer to <InternalLink path="create-and-configure-changefeeds#system-resources-and-running-changefeeds">System resources and running changefeeds</InternalLink>.

#### Protected timestamp and garbage collection monitoring

<InternalLink path="architecture/storage-layer#protected-timestamps">Protected timestamps</InternalLink> will protect changefeed data from garbage collection in particular scenarios, but if a changefeed lags too far behind, the protected changes could cause data storage issues. See <InternalLink path="changefeed-messages#garbage-collection-and-changefeeds">Garbage collection and changefeeds</InternalLink> for detail on when changefeed data is protected from garbage collection.

New in v23.1: You can monitor changefeed jobs for <InternalLink path="architecture/storage-layer#protected-timestamps">protected timestamp</InternalLink> usage. We recommend setting up  monitoring  <InternalLink path="monitor-and-debug-changefeeds">monitoring</InternalLink> for the following metrics:

* `jobs.changefeed.protected_age_sec`: Tracks the age of the oldest <InternalLink path="architecture/storage-layer#protected-timestamps">protected timestamp</InternalLink> record protected by changefeed jobs. We recommend monitoring if `protected_age_sec` is greater than <InternalLink path="configure-replication-zones">`gc.ttlseconds`</InternalLink>. As `protected_age_sec` increases, garbage accumulation increases. <InternalLink path="architecture/storage-layer#garbage-collection">Garbage collection</InternalLink> will not progress on a table, database, or cluster if the protected timestamp record is present.
* `jobs.changefeed.currently_paused`: Tracks the number of changefeed jobs currently considered <InternalLink path="pause-job">paused</InternalLink>. Since paused changefeed jobs can accumulate garbage, it is important to <InternalLink path="pause-job#monitoring-paused-jobs">monitor the number of paused changefeeds</InternalLink>.
* `jobs.changefeed.expired_pts_records`: Tracks the number of expired <InternalLink path="architecture/storage-layer#protected-timestamps">protected timestamp</InternalLink> records owned by changefeed jobs. You can monitor this metric in conjunction with the <InternalLink path="create-changefeed">`gc_protect_expires_after` option</InternalLink>.
* `jobs.changefeed.protected_record_count`: Tracks the number of <InternalLink path="architecture/storage-layer#protected-timestamps">protected timestamp</InternalLink> records held by changefeed jobs.

#### Schema registry metrics

If you are running a changefeed with the <InternalLink path="create-changefeed">`confluent_schema_registry`</InternalLink> option, set up monitoring for the following metrics:

* `changefeed.schema_registry.retry_count`: The number of retries encountered when sending requests to the schema registry. A non-zero value could indicate incorrect configuration of the schema registry or changefeed parameters.
* `changefeed.schema_registry.registrations`: The number of registration attempts with the schema registry.

### Using changefeed metrics labels

<Note>
  **This feature is in <InternalLink path="cockroachdb-feature-availability">preview</InternalLink>** and subject to change. To share feedback and/or issues, contact [Support](https://support.cockroachlabs.com).
</Note>

<Note>
  An Enterprise license is required to use metrics labels in changefeeds.
</Note>

To measure metrics per changefeed, you can define a "metrics label" for one or multiple changefeed(s). The changefeed(s) will increment each <InternalLink path="monitor-and-debug-changefeeds#metrics">changefeed metric</InternalLink>. Metrics label information is sent with time-series metrics to `http://{host}:{http-port}/_status/vars`, viewable via the <InternalLink path="monitoring-and-alerting#prometheus-endpoint">Prometheus endpoint</InternalLink>. An aggregated metric of all changefeeds is also measured.

It is necessary to consider the following when applying metrics labels to changefeeds:

* The `server.child_metrics.enabled` <InternalLink path="cluster-settings">cluster setting</InternalLink> must be set to `true` before using the `metrics_label` option. `server.child_metrics.enabled` is enabled by default in Standard and Basic.
* Metrics label information is sent to the `_status/vars` endpoint, but will **not** show up in <InternalLink path="cockroach-debug-zip">`debug.zip`</InternalLink> or the <InternalLink path="ui-overview">DB Console</InternalLink>.
* Introducing labels to isolate a changefeed's metrics can increase cardinality significantly. There is a limit of 1024 unique labels in place to prevent cardinality explosion. That is, when labels are applied to high-cardinality data (data with a higher number of unique values), each changefeed with a label then results in more metrics data to multiply together, which will grow over time. This will have an impact on performance as the metric-series data per changefeed quickly populates against its label.
* The maximum length of a metrics label is 128 bytes.

To start a changefeed with a metrics label, set the following cluster setting to `true`:

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
SET CLUSTER SETTING server.child_metrics.enabled=true;
```

Create the changefeed, passing the `metrics_label` option with the label name as its value:

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
CREATE CHANGEFEED FOR TABLE movr.rides INTO 'kafka://host:port' WITH metrics_label=rides;
```

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
CREATE CHANGEFEED FOR TABLE movr.vehicles INTO 'kafka://host:port' WITH metrics_label=vehicles;
```

Multiple changefeeds can be added to a label:

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
CREATE CHANGEFEED FOR TABLE movr.vehicle_location_histories INTO 'kafka://host:port' WITH metrics_label=vehicles;
```

`http://{host}:{http-port}/_status/vars` shows the defined changefeed(s) by label and the aggregated metric for all changefeeds. This output also shows the `default` scope, which will include changefeeds started without a metrics label:

```
changefeed_running 4
changefeed_running{scope="default"} 1
changefeed_running{scope="rides"} 1
changefeed_running{scope="vehicles"} 2
```

```
changefeed_emitted_messages 4144
changefeed_emitted_messages{scope="default"} 0
changefeed_emitted_messages{scope="rides"} 2772
changefeed_emitted_messages{scope="vehicles"} 1372
```

```
changefeed_emitted_bytes 781591
changefeed_emitted_bytes{scope="default"} 0
changefeed_emitted_bytes{scope="rides"} 598034
changefeed_emitted_bytes{scope="vehicles"} 183557
```

<a id="amazon-cloudwatch-metrics" />

#### Metrics

| Metric                                                                                                                                                                                                                                                                                                                                                                                                    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Unit        |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| `changefeed_running`                                                                                                                                                                                                                                                                                                                                                                                      | Number of currently running changefeeds, including sinkless changefeeds.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Changefeeds |
| `emitted_messages`                                                                                                                                                                                                                                                                                                                                                                                        | Number of messages emitted, which increments when messages are flushed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Messages    |
| `emitted_bytes`                                                                                                                                                                                                                                                                                                                                                                                           | Number of bytes emitted, which increments as messages are flushed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | Bytes       |
| `flushed_bytes`                                                                                                                                                                                                                                                                                                                                                                                           | Bytes emitted by all changefeeds. This may differ from `emitted_bytes` when <InternalLink path="create-changefeed">`compression`</InternalLink> is enabled.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Bytes       |
| `changefeed_flushes`                                                                                                                                                                                                                                                                                                                                                                                      | Total number of flushes for a changefeed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Flushes     |
| New in v23.1.11: `aggregator_progress`                                                                                                                                                                                                                                                                                                                                                                    | The earliest timestamp up to which any <InternalLink path="how-does-an-enterprise-changefeed-work">aggregator</InternalLink> is guaranteed to have emitted all values for which it is responsible. **Note:** This metric may regress when a changefeed restarts due to a transient error. Consider tracking the `changefeed.checkpoint_progress` metric, which will not regress.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Timestamp   |
| New in v23.1.11: `checkpoint_progress`                                                                                                                                                                                                                                                                                                                                                                    | The earliest timestamp of any changefeed's persisted checkpoint (values prior to this timestamp will never need to be re-emitted).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | Timestamp   |
| `admit_latency`                                                                                                                                                                                                                                                                                                                                                                                           | Difference between the event's MVCC timestamp and the time the event is put into the memory buffer.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Nanoseconds |
| `commit_latency`                                                                                                                                                                                                                                                                                                                                                                                          | Difference between the event's MVCC timestamp and the time it is acknowledged by the <InternalLink path="changefeed-sinks">downstream sink</InternalLink>. If the sink is batching events, then the difference is between the oldest event and when the acknowledgment is recorded.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Nanoseconds |
| **New in v23.1.12:** `lagging_ranges`                                                                                                                                                                                                                                                                                                                                                                     | Number of ranges which are behind in a changefeed. This is calculated based on the <InternalLink path="cluster-settings">cluster settings</InternalLink>: <ul><li>`changefeed.lagging_ranges_threshold`, which is the amount of time that a range checkpoint needs to be in the past to be considered lagging.</li><li>`changefeed.lagging_ranges_polling_interval`, which is the frequency at which lagging ranges are polled and the metric is updated.</li></ul>**Note:** Ranges undergoing an <InternalLink path="create-changefeed">initial scan</InternalLink> for longer than the `lagging_ranges_threshold` duration are considered to be lagging. Starting a changefeed with an initial scan on a large table will likely increment the metric for each range in the table. As ranges complete the initial scan, the number of ranges lagging behind will decrease. | Nanoseconds |
| **Note:** Ranges undergoing an <InternalLink path="create-changefeed">initial scan</InternalLink> for longer than the `lagging_ranges_threshold` duration are considered to be lagging. Starting a changefeed with an initial scan on a large table will likely increment the metric for each range in the table. As ranges complete the initial scan, the number of ranges lagging behind will decrease. | Nanoseconds                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |             |
| `backfill_count`                                                                                                                                                                                                                                                                                                                                                                                          | Number of changefeeds currently executing a backfill (<InternalLink path="changefeed-messages#schema-changes">schema change</InternalLink> or initial scan).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Changefeeds |
| `sink_batch_hist_nanos`                                                                                                                                                                                                                                                                                                                                                                                   | Time messages spend batched in the sink buffer before being flushed and acknowledged.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Nanoseconds |
| `flush_hist_nanos`                                                                                                                                                                                                                                                                                                                                                                                        | Time spent flushing messages across all changefeeds.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Nanoseconds |
| `checkpoint_hist_nanos`                                                                                                                                                                                                                                                                                                                                                                                   | Time spent checkpointing changefeed progress.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | Nanoseconds |
| `error_retries`                                                                                                                                                                                                                                                                                                                                                                                           | Total retryable errors encountered by changefeeds.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | Errors      |
| `backfill_pending_ranges`                                                                                                                                                                                                                                                                                                                                                                                 | Number of <InternalLink path="architecture/overview">ranges</InternalLink> in an ongoing backfill that are yet to be fully emitted.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Ranges      |
| `message_size_hist`                                                                                                                                                                                                                                                                                                                                                                                       | Distribution in the size of emitted messages.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | Bytes       |
| New in v23.1.29: `total_ranges`                                                                                                                                                                                                                                                                                                                                                                           | Total number of ranges that are watched by <InternalLink path="how-does-an-enterprise-changefeed-work">aggregator processors</InternalLink> participating in the changefeed job. `changefeed.total_ranges` shares the same polling interval as the [`changefeed.lagging_ranges`](#lagging-ranges-metric) metric, which is controlled by the `changefeed.lagging_ranges_polling_interval` <InternalLink path="cluster-settings">cluster setting</InternalLink>. For more details, refer to [Lagging ranges](#lagging-ranges).                                                                                                                                                                                                                                                                                                                                                 |             |

### Monitoring and measuring changefeed latency

Changefeeds can encounter latency in events processing. This latency is the total time CockroachDB takes to:

* Commit writes to the database.
* Encode <InternalLink path="changefeed-messages">changefeed messages</InternalLink>.
* Deliver the message to the <InternalLink path="changefeed-sinks">sink</InternalLink>.

There are a couple of ways to measure if changefeeds are encountering latency or falling behind:

* [Event latency](#event-latency): Measure the difference between an event's MVCC timestamp and when it is put into the memory buffer or acknowledged at the sink.
* [Lagging ranges](#lagging-ranges): Track the number of <InternalLink path="architecture/overview#range">ranges</InternalLink> that are behind in a changefeed.

#### Event latency

To monitor for changefeeds encountering latency in how events are emitting, track the following metrics:

* `admit_latency`: The difference between the event's MVCC timestamp and the time the event is put into the memory buffer.
* `commit_latency`: The difference between the event's MVCC timestamp and the time it is acknowledged by the <InternalLink path="changefeed-sinks">downstream sink</InternalLink>. If the sink is batching events, the difference is between the oldest event and when the acknowledgment is recorded.

<Note>
  The `admit_latency` and `commit_latency` metrics do **not** update for backfills during <InternalLink path="create-changefeed">initial scans</InternalLink> or <InternalLink path="changefeed-messages#schema-changes-with-column-backfill">backfills for schema changes</InternalLink>. This is because a full table scan may contain rows that were written far in the past, which would lead to inaccurate changefeed latency measurements if the events from these scans were included in the metrics.
</Note>

Both of these metrics support [metrics labels](#using-changefeed-metrics-labels). You can set the `metrics_label` option when starting a changefeed to differentiate metrics per changefeed.

We recommend using the p99 `commit_latency` aggregation for alerting and to set SLAs for your changefeeds. You can add these metrics (e.g., `changefeed.admit_latency-p90`) to a custom chart through the <InternalLink path="ui-overview">DB Console</InternalLink>, refer to the <InternalLink path="ui-custom-chart-debug-page">Customer Chart debug page</InternalLink>. Or, you can track with <InternalLink path="monitoring-and-alerting#prometheus-endpoint">Prometheus</InternalLink>.

If your changefeed is experiencing elevated latency, you can use these metrics to:

* Review `admit_latency` versus `commit_latency` to calculate the time events are moving from the memory buffer to the downstream sink.
* Compare the `commit_latency` P99, P90, P50 latency percentiles to investigate performance over time.

#### Lagging ranges

New in v23.1.12: Use the `changefeed.lagging_ranges` metric to track the number of <InternalLink path="architecture/overview">ranges</InternalLink> that are behind in a changefeed. This is calculated based on the <InternalLink path="cluster-settings">cluster settings</InternalLink>:

* `changefeed.lagging_ranges_threshold` sets a duration from the present that determines the length of time a range is considered to be lagging behind, which will then track in the <InternalLink path="monitor-and-debug-changefeeds#using-changefeed-metrics-labels">`lagging_ranges`</InternalLink> metric. Note that ranges undergoing an <InternalLink path="create-changefeed">initial scan</InternalLink> for longer than the threshold duration are considered to be lagging. Starting a changefeed with an initial scan on a large table will likely increment the metric for each range in the table. As ranges complete the initial scan, the number of ranges lagging behind will decrease.
  * **Default:** `3m`
* `changefeed.lagging_ranges_polling_interval` sets the interval rate for when lagging ranges are checked and the `lagging_ranges` metric is updated. Polling adds latency to the `lagging_ranges` metric being updated. For example, if a range falls behind by 3 minutes, the metric may not update until an additional minute afterward.
  * **Default:** `1m`

New in v23.1.29: Use the `changefeed.total_ranges` metric to monitor the number of ranges that are watched by <InternalLink path="how-does-an-enterprise-changefeed-work">aggregator processors</InternalLink> participating in the changefeed job. If you're experiencing lagging ranges, `changefeed.total_ranges` may indicate that the number of ranges watched by aggregator processors in the job is unbalanced. You may want to try <InternalLink path="pause-job">pausing</InternalLink> the changefeed and then <InternalLink path="resume-job">resuming</InternalLink> it, so that the changefeed replans the work in the cluster. `changefeed.total_ranges` shares the same polling interval as the `changefeed.lagging_ranges` metric, which is controlled by the `changefeed.lagging_ranges_polling_interval` cluster setting.

<Tip>
  You can use the <InternalLink path="monitor-and-debug-changefeeds#using-changefeed-metrics-labels">`metrics_label`</InternalLink> option to track the `lagging_ranges` and `total_ranges` metric per changefeed.
</Tip>

## Debug a changefeed

### Using logs

For Enterprise changefeeds, <InternalLink path="logging-overview">use log information</InternalLink> to debug connection issues (i.e., `kafka: client has run out of available brokers to talk to (Is your cluster reachable?)`). Debug by looking for lines in the logs with `[kafka-producer]` in them:

```
I190312 18:56:53.535646 585 vendor/github.com/Shopify/sarama/client.go:123  [kafka-producer] Initializing new client
I190312 18:56:53.535714 585 vendor/github.com/Shopify/sarama/client.go:724  [kafka-producer] client/metadata fetching metadata for all topics from broker localhost:9092
I190312 18:56:53.536730 569 vendor/github.com/Shopify/sarama/broker.go:148  [kafka-producer] Connected to broker at localhost:9092 (unregistered)
I190312 18:56:53.537661 585 vendor/github.com/Shopify/sarama/client.go:500  [kafka-producer] client/brokers registered new broker #0 at 172.16.94.87:9092
I190312 18:56:53.537686 585 vendor/github.com/Shopify/sarama/client.go:170  [kafka-producer] Successfully initialized new client
```

### Using `SHOW CHANGEFEED JOBS`

For Enterprise changefeeds, use `SHOW CHANGEFEED JOBS` to check the status of your changefeed jobs:

```sql theme={"theme":{"light":"catppuccin-mocha","dark":"catppuccin-mocha"}}
SHOW CHANGEFEED JOBS;
```

```
        job_id       |               description                                                                                                                                      | user_name | status  |         running_status                    |          created           |          started           | finished |          modified          |      high_water_timestamp      | error |   sink_uri                                                                            |                    full_table_names                     |        topics         | format
---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+---------+-------------------------------------------+----------------------------+----------------------------+----------+----------------------------+--------------------------------+-------+---------------------------------------------------------------------------------------+---------------------------------------------------------+-----------------------+---------
786667716931878913   | CREATE CHANGEFEED FOR TABLE movr.users INTO 's3://changefeed_bucket?AWS_ACCESS_KEY_ID={ACCESS KEY}L&AWS_SECRET_ACCESS_KEY=redacted' WITH resolved              | user_name | running | running: resolved=1660144018.670219356,0  | 2022-08-10 14:38:55.098861 | 2022-08-10 14:38:55.12946  | NULL     | 2022-08-10 15:07:31.886757 | 1660144048833832849.0000000000 |       | s3://changefeed_bucket?AWS_ACCESS_KEY_ID={ACCESS KEY}&AWS_SECRET_ACCESS_KEY=redacted  | {movr.public.users}                                     | NULL                  | json
685724608744325121   | CREATE CHANGEFEED FOR TABLE mytable INTO 'kafka://localhost:9092' WITH confluent_schema_registry = 'http://localhost:8081', format = 'avro', resolved, updated | root      | running | running: resolved=1629336943.183631090,0  | 2021-08-19 01:35:43.19592  | 2021-08-19 01:35:43.225445 | NULL     | 2021-08-19 01:35:43.252318 | 1629336943183631090.0000000000 |       | kafka://localhost:9092                                                                | {defaultdb.public.mytable}                              | mytable               | avro
```

For more information, see <InternalLink path="show-jobs">`SHOW JOBS`</InternalLink>.

### Using the DB Console

On the <InternalLink path="ui-custom-chart-debug-page">**Custom Chart** debug page</InternalLink> of the DB Console:

1. To add a chart, click **Add Chart**.
2. Select `changefeed.error_retries` from the **Metric Name** dropdown menu.

   A graph of changefeed restarts due to retryable errors will display.

## See also

* <InternalLink path="ui-overview">DB Console</InternalLink>
* <InternalLink path="monitoring-and-alerting">Monitoring and Alerting</InternalLink>
* <InternalLink path="show-jobs">`SHOW JOBS`</InternalLink>
