Skip to content

Debug

Operations Summary

Method Endpoint Description
GET /api/debug/pubsub/circuit_breaker/ Get circuit breaker state
GET /api/debug/pubsub/dead_letter_queue/ Get dead letter queue status
GET /api/debug/pubsub/message_state_cache/ Get message state cache statistics
GET /api/debug/pubsub/metrics/ Get publishing metrics
GET /api/debug/pubsub/overview/ Get pubsub system health overview
GET /api/debug/pubsub/queues/ Get subscription queues overview
POST /api/debug/pubsub/circuit_breaker_reset/ Reset circuit breaker
POST /api/debug/pubsub/metrics_reset/ Reset publishing metrics

Get circuit breaker state

Get current STOMP circuit breaker state and statistics.

Returns: - state: Current state (closed/open/half_open) - failure_count: Number of consecutive failures - success_count: Successes since last state change - last_failure_time: Timestamp of last failure - last_state_change: When state last changed - config: Circuit breaker configuration - state_history: Recent state transitions

Requires staff permissions.

1
2
3
4
http \
  GET \
  https://api.example.com/api/debug/pubsub/circuit_breaker/ \
  Authorization:"Token YOUR_API_TOKEN"
1
2
3
4
5
6
7
8
9
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.debug import debug_pubsub_circuit_breaker_retrieve # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = debug_pubsub_circuit_breaker_retrieve.sync(client=client)

print(response)
  1. API Source: debug_pubsub_circuit_breaker_retrieve
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import { debugPubsubCircuitBreakerRetrieve } from 'waldur-js-client';

try {
  const response = await debugPubsubCircuitBreakerRetrieve({
  auth: "Token YOUR_API_TOKEN"
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}

200 -

Field Type Description
state string Current state: closed, open, or half_open
failure_count integer Number of consecutive failures
success_count integer Successful calls since last state change
last_failure_time number (double) Unix timestamp of last failure
last_state_change number (double) Unix timestamp of last state change
config any Circuit breaker configuration
state_history array of objects Recent state transitions (last 50)
state_history.timestamp number (double) Unix timestamp of state change
state_history.from_state string Previous state
state_history.to_state string New state
state_history.reason string Reason for state change

Get dead letter queue status

Get dead letter queue (DLQ) statistics.

The DLQ receives messages that failed to be delivered to their original destination. This endpoint shows the current DLQ status.

Note: DLQ is configured per-vhost. This endpoint checks all vhosts for queues with 'dlq' in the name.

Requires staff permissions.

1
2
3
4
http \
  GET \
  https://api.example.com/api/debug/pubsub/dead_letter_queue/ \
  Authorization:"Token YOUR_API_TOKEN"
1
2
3
4
5
6
7
8
9
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.debug import debug_pubsub_dead_letter_queue_retrieve # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = debug_pubsub_dead_letter_queue_retrieve.sync(client=client)

print(response)
  1. API Source: debug_pubsub_dead_letter_queue_retrieve
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import { debugPubsubDeadLetterQueueRetrieve } from 'waldur-js-client';

try {
  const response = await debugPubsubDeadLetterQueueRetrieve({
  auth: "Token YOUR_API_TOKEN"
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}

200 -

Field Type Description
total_dlq_messages integer Total messages across all DLQs
dlq_count integer Number of DLQ queues found
dlq_queues array of objects List of DLQ queues with their statistics
dlq_queues.vhost string Virtual host name
dlq_queues.queue_name string DLQ queue name
dlq_queues.messages integer Total messages in DLQ
dlq_queues.messages_ready integer Messages ready for delivery
dlq_queues.consumers integer Number of consumers attached
note string Informational note about DLQs

503 -

Field Type Description
error string Error message describing what went wrong

Get message state cache statistics

Get message state tracker cache statistics for idempotency.

The message state tracker prevents duplicate message sends by caching the hash of message content. This endpoint provides cache statistics.

Query params: - resource_uuid: Filter by specific resource - message_type: Filter by message type

Requires staff permissions.

1
2
3
4
http \
  GET \
  https://api.example.com/api/debug/pubsub/message_state_cache/ \
  Authorization:"Token YOUR_API_TOKEN"
1
2
3
4
5
6
7
8
9
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.debug import debug_pubsub_message_state_cache_retrieve # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = debug_pubsub_message_state_cache_retrieve.sync(client=client)

print(response)
  1. API Source: debug_pubsub_message_state_cache_retrieve
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import { debugPubsubMessageStateCacheRetrieve } from 'waldur-js-client';

try {
  const response = await debugPubsubMessageStateCacheRetrieve({
  auth: "Token YOUR_API_TOKEN"
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}

200 -

Field Type Description
cache_ttl integer Cache TTL in seconds
description string Cache description
filter any Applied filters

Get publishing metrics

Get message publishing metrics and statistics.

Returns: - messages_sent: Total messages successfully sent - messages_failed: Total failed message attempts - messages_retried: Messages that required retry - messages_skipped: Messages skipped due to circuit breaker - circuit_breaker_trips: Number of times circuit opened - rate_limiter_rejections: Messages rejected by rate limiter - avg_publish_time_ms: Average publish latency - last_publish_time: Timestamp of last publish attempt

Requires staff permissions.

1
2
3
4
http \
  GET \
  https://api.example.com/api/debug/pubsub/metrics/ \
  Authorization:"Token YOUR_API_TOKEN"
1
2
3
4
5
6
7
8
9
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.debug import debug_pubsub_metrics_retrieve # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = debug_pubsub_metrics_retrieve.sync(client=client)

print(response)
  1. API Source: debug_pubsub_metrics_retrieve
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import { debugPubsubMetricsRetrieve } from 'waldur-js-client';

try {
  const response = await debugPubsubMetricsRetrieve({
  auth: "Token YOUR_API_TOKEN"
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}

200 -

Field Type Description
messages_sent integer Total messages successfully sent
messages_failed integer Total failed message attempts
messages_retried integer Messages that required retry
messages_skipped integer Messages skipped due to circuit breaker
circuit_breaker_trips integer Number of times circuit breaker opened
rate_limiter_rejections integer Messages rejected by rate limiter
avg_publish_time_ms number (double) Average message publish latency in milliseconds
last_publish_time number (double) Unix timestamp of last publish attempt

Get pubsub system health overview

Dashboard overview of pubsub system health.

Combines circuit breaker state, publishing metrics, and health indicators into a single response suitable for monitoring dashboards.

Requires staff permissions.

1
2
3
4
http \
  GET \
  https://api.example.com/api/debug/pubsub/overview/ \
  Authorization:"Token YOUR_API_TOKEN"
1
2
3
4
5
6
7
8
9
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.debug import debug_pubsub_overview_retrieve # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = debug_pubsub_overview_retrieve.sync(client=client)

print(response)
  1. API Source: debug_pubsub_overview_retrieve
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import { debugPubsubOverviewRetrieve } from 'waldur-js-client';

try {
  const response = await debugPubsubOverviewRetrieve({
  auth: "Token YOUR_API_TOKEN"
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}

200 -

Field Type Description
health_status string Overall health: healthy, degraded, or critical
issues array of strings List of current issues affecting health
circuit_breaker any Circuit breaker summary
metrics any Publishing metrics summary
last_updated string (date-time) Timestamp when overview was generated

Get subscription queues overview

Get overview of subscription queues from RabbitMQ.

Returns summary of subscription queues across all vhosts including message counts and queue statistics.

Note: For detailed queue management, use /api/rabbitmq-stats/ endpoint.

Requires staff permissions.

1
2
3
4
http \
  GET \
  https://api.example.com/api/debug/pubsub/queues/ \
  Authorization:"Token YOUR_API_TOKEN"
1
2
3
4
5
6
7
8
9
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.debug import debug_pubsub_queues_retrieve # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = debug_pubsub_queues_retrieve.sync(client=client)

print(response)
  1. API Source: debug_pubsub_queues_retrieve
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import { debugPubsubQueuesRetrieve } from 'waldur-js-client';

try {
  const response = await debugPubsubQueuesRetrieve({
  auth: "Token YOUR_API_TOKEN"
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}

200 -

Field Type Description
total_vhosts integer Total number of vhosts with subscription queues
total_queues integer Total number of subscription queues
total_messages integer Total messages across all subscription queues
top_queues_by_messages array of objects Top 10 queues by message count
top_queues_by_messages.vhost string Virtual host name
top_queues_by_messages.name string Queue name
top_queues_by_messages.messages integer Number of messages in queue
top_queues_by_messages.consumers integer Number of consumers attached

503 -

Field Type Description
error string Error message describing what went wrong

Reset circuit breaker

Manually reset the STOMP circuit breaker to CLOSED state.

Use with caution - only when RabbitMQ is confirmed healthy.

Requires staff permissions.

1
2
3
4
http \
  POST \
  https://api.example.com/api/debug/pubsub/circuit_breaker_reset/ \
  Authorization:"Token YOUR_API_TOKEN"
1
2
3
4
5
6
7
8
9
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.debug import debug_pubsub_circuit_breaker_reset # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = debug_pubsub_circuit_breaker_reset.sync(client=client)

print(response)
  1. API Source: debug_pubsub_circuit_breaker_reset
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import { debugPubsubCircuitBreakerReset } from 'waldur-js-client';

try {
  const response = await debugPubsubCircuitBreakerReset({
  auth: "Token YOUR_API_TOKEN"
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}

200 -

Field Type Description
status string Operation status
state string New circuit breaker state after reset

Reset publishing metrics

Reset all publishing metrics counters to zero.

Requires staff permissions.

1
2
3
4
http \
  POST \
  https://api.example.com/api/debug/pubsub/metrics_reset/ \
  Authorization:"Token YOUR_API_TOKEN"
1
2
3
4
5
6
7
8
9
from waldur_api_client.client import AuthenticatedClient
from waldur_api_client.api.debug import debug_pubsub_metrics_reset # (1)

client = AuthenticatedClient(
    base_url="https://api.example.com", token="YOUR_API_TOKEN"
)
response = debug_pubsub_metrics_reset.sync(client=client)

print(response)
  1. API Source: debug_pubsub_metrics_reset
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import { debugPubsubMetricsReset } from 'waldur-js-client';

try {
  const response = await debugPubsubMetricsReset({
  auth: "Token YOUR_API_TOKEN"
});
  console.log('Success:', response);
} catch (error) {
  console.error('Error:', error);
}

200 -

Field Type Description
status string Operation status