| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 |
- syntax = "proto3";
- package chatto.admin.v1;
- import "google/protobuf/timestamp.proto";
- // Request to read owner-only server diagnostics.
- message GetSystemInfoRequest {}
- // Owner-only operational diagnostics for the Chatto server.
- message GetSystemInfoResponse {
- // Broker connection, account, and JetStream state.
- AdminSystemInfo system_info = 1;
- // Event-sourced projection health and memory estimates.
- repeated AdminProjectionState projections = 2;
- // Recoverable physical deletion worker health.
- AdminAssetCleanupStatus asset_cleanup = 3;
- // Known durable worker queues and their current broker-derived health.
- repeated AdminDurableWorkerStatus durable_workers = 4;
- // Whether projection diagnostics were collected successfully.
- optional bool projections_available = 5;
- }
- // Broker-derived health for one known durable worker queue.
- message AdminDurableWorkerStatus {
- // Stable machine-readable worker key.
- string key = 1;
- // Current availability and work state.
- AdminDurableWorkerHealth health = 2;
- // Deliveries not yet handed to a handler.
- string pending_count = 3;
- // Deliveries awaiting acknowledgement; this does not prove handler liveness.
- string ack_pending_count = 4;
- // Pull requests currently waiting for work.
- string waiting_count = 5;
- // Redelivered messages that remain unacknowledged.
- string redelivered_count = 6;
- // Latest EVT stream sequence delivered to this queue.
- string last_delivered_sequence = 7;
- // Highest contiguous EVT stream sequence acknowledged by this queue.
- string ack_floor_sequence = 8;
- }
- // Operator-facing state derived from a durable consumer.
- enum AdminDurableWorkerHealth {
- ADMIN_DURABLE_WORKER_HEALTH_UNSPECIFIED = 0;
- // This optional worker is not required by current server configuration.
- ADMIN_DURABLE_WORKER_HEALTH_INACTIVE = 1;
- // A worker is waiting and all known work is acknowledged.
- ADMIN_DURABLE_WORKER_HEALTH_HEALTHY = 2;
- // A worker is available and unacknowledged work remains.
- ADMIN_DURABLE_WORKER_HEALTH_WORKING = 3;
- // An acknowledgement is pending, but broker state cannot prove whether a
- // handler is active or the delivery is awaiting recovery after a crash.
- ADMIN_DURABLE_WORKER_HEALTH_UNCONFIRMED = 4;
- // The consumer exists but has neither a waiting pull nor an ack-pending delivery.
- ADMIN_DURABLE_WORKER_HEALTH_STALLED = 5;
- // The required consumer is unavailable.
- ADMIN_DURABLE_WORKER_HEALTH_UNAVAILABLE = 6;
- }
- // Current health of recoverable message-owned asset deletion.
- message AdminAssetCleanupStatus {
- // Operator-facing state derived from the shared durable consumer.
- AdminAssetCleanupHealth health = 1;
- // Deletion effects currently waiting for a successful retry.
- int64 pending_count = 2;
- // Deprecated. Shared durable consumers do not expose this value.
- google.protobuf.Timestamp oldest_pending_at = 3 [deprecated = true];
- // Deprecated. Shared durable consumers run continuously rather than in passes.
- bool pass_in_progress = 4 [deprecated = true];
- // Deprecated. Shared durable consumers run continuously rather than in passes.
- google.protobuf.Timestamp last_pass_at = 5 [deprecated = true];
- // Deprecated. Shared durable consumers run continuously rather than in passes.
- google.protobuf.Timestamp last_successful_pass_at = 6 [deprecated = true];
- // Deprecated. Shared durable consumers do not publish a liveness heartbeat.
- google.protobuf.Timestamp updated_at = 7 [deprecated = true];
- // Deprecated. Use health and pending_count instead.
- bool last_pass_failed = 8 [deprecated = true];
- // Global EVT sequence of the most recently delivered deletion fact.
- string last_inspected_sequence = 9;
- // Current latest global EVT sequence matching asset deletion facts.
- string latest_deletion_sequence = 10;
- }
- // Operator-facing state for the shared durable asset cleanup queue.
- enum AdminAssetCleanupHealth {
- ADMIN_ASSET_CLEANUP_HEALTH_UNSPECIFIED = 0;
- ADMIN_ASSET_CLEANUP_HEALTH_INACTIVE = 1;
- ADMIN_ASSET_CLEANUP_HEALTH_INITIALIZING = 2;
- ADMIN_ASSET_CLEANUP_HEALTH_HEALTHY = 3;
- ADMIN_ASSET_CLEANUP_HEALTH_RETRYING = 4;
- ADMIN_ASSET_CLEANUP_HEALTH_STALLED = 5;
- // Cleanup diagnostics could not be read; other system diagnostics remain valid.
- ADMIN_ASSET_CLEANUP_HEALTH_UNAVAILABLE = 6;
- }
- // Broker and application diagnostics shown on the server admin system page.
- message AdminSystemInfo {
- // Current NATS server connection metadata.
- AdminConnectionInfo connection = 1;
- // JetStream account limits and usage.
- AdminAccountInfo account = 2;
- // JetStream stream and consumer diagnostics.
- AdminNatsStats nats = 3;
- // Aggregate Chatto object counts.
- AdminServerStats stats = 4;
- }
- // Current NATS server connection metadata.
- message AdminConnectionInfo {
- // Whether Chatto is currently connected to NATS.
- bool connected = 1;
- // Connected NATS server ID.
- string server_id = 2;
- // Connected NATS server name.
- string server_name = 3;
- // Connected NATS server version.
- string version = 4;
- // Maximum payload accepted by the connected NATS server.
- int64 max_payload = 5;
- // Round-trip latency to the connected NATS server.
- string rtt = 6;
- }
- // JetStream account limits and usage.
- message AdminAccountInfo {
- // Maximum memory storage in bytes. Values less than or equal to zero mean unlimited.
- int64 memory = 1;
- // Used memory storage in bytes.
- int64 memory_used = 2;
- // Maximum file storage in bytes. Values less than or equal to zero mean unlimited.
- int64 storage = 3;
- // Used file storage in bytes.
- int64 storage_used = 4;
- // Maximum number of streams. Values less than or equal to zero mean unlimited.
- int32 streams = 5;
- // Current number of streams.
- int32 streams_used = 6;
- // Maximum number of consumers. Values less than or equal to zero mean unlimited.
- int32 consumers = 7;
- // Current number of consumers.
- int32 consumers_used = 8;
- }
- // Aggregate Chatto object counts.
- message AdminServerStats {
- // Registered user count.
- int32 user_count = 1;
- // Channel room count.
- int32 channel_room_count = 2;
- // Direct-message room count.
- int32 dm_room_count = 3;
- }
- // JetStream stream and consumer diagnostics.
- message AdminNatsStats {
- // Total messages stored across all streams.
- int64 total_messages = 1;
- // Total bytes stored across all streams.
- int64 total_bytes = 2;
- // Total pending messages across all consumers.
- int64 total_consumer_pending = 3;
- // Total messages currently waiting for acknowledgement.
- int32 total_ack_pending = 4;
- // Streams sorted by name.
- repeated AdminNatsStreamInfo streams = 5;
- // Consumers sorted by stream and name.
- repeated AdminNatsConsumerInfo consumers = 6;
- }
- // JetStream stream state.
- message AdminNatsStreamInfo {
- // Stream name.
- string name = 1;
- // Stream description.
- string description = 2;
- // Subjects stored in the stream.
- repeated string subjects = 3;
- // Storage backend name.
- string storage = 4;
- // Number of messages in the stream.
- int64 messages = 5;
- // Number of bytes in the stream.
- int64 bytes = 6;
- // First stream sequence.
- string first_sequence = 7;
- // Last stream sequence.
- string last_sequence = 8;
- // Number of stream consumers.
- int32 consumer_count = 9;
- // Configured stream replica count.
- int32 replicas = 10;
- // Current cluster leader, when reported by NATS.
- string cluster_leader = 11;
- }
- // JetStream consumer state.
- message AdminNatsConsumerInfo {
- // Stream that owns the consumer.
- string stream = 1;
- // Consumer name.
- string name = 2;
- // Durable name, when the consumer is durable.
- string durable = 3;
- // Single filter subject, when configured.
- string filter_subject = 4;
- // Multiple filter subjects, when configured.
- repeated string filter_subjects = 5;
- // NATS acknowledgement policy.
- string ack_policy = 6;
- // Whether this is a pull consumer.
- bool pull_based = 7;
- // Whether this push consumer has an active subscription.
- bool push_bound = 8;
- // Pending messages for this consumer.
- int64 pending = 9;
- // Messages waiting for acknowledgement.
- int32 ack_pending = 10;
- // Redelivered message count.
- int32 redelivered = 11;
- // Pull requests waiting for messages.
- int32 waiting = 12;
- // Delivered consumer sequence.
- string delivered_consumer_sequence = 13;
- // Delivered stream sequence.
- string delivered_stream_sequence = 14;
- // Acknowledgement floor consumer sequence.
- string ack_floor_consumer_sequence = 15;
- // Acknowledgement floor stream sequence.
- string ack_floor_stream_sequence = 16;
- }
- // Event-sourced projection health and memory estimates.
- message AdminProjectionState {
- // Stable projection key.
- string key = 1;
- // Display name.
- string name = 2;
- // EVT subjects consumed by this projection.
- repeated string subjects = 3;
- // Whether the projection projector is running.
- bool started = 4;
- // Startup duration in seconds, set after startup completes.
- optional double startup_duration_seconds = 5;
- // Last event sequence applied by the projection.
- string last_applied_sequence = 6;
- // Target sequence among the projection's matching subjects.
- string matching_stream_sequence = 7;
- // Current last sequence of the EVT stream.
- string stream_last_sequence = 8;
- // Matching-subject lag between target and applied sequence.
- int64 lag = 9;
- // Whether the projection failed.
- bool failed = 10;
- // Sequence that failed, when failed is true.
- string failed_sequence = 11;
- // Failure message, when failed is true.
- string failure = 12;
- // Estimated number of entries held by the projection.
- int64 entry_count = 13;
- // Estimated memory used by the projection in bytes.
- int64 estimated_bytes = 14;
- // Estimated average memory per entry in bytes.
- int64 average_entry_bytes = 15;
- // Projection-specific diagnostic metrics.
- repeated AdminProjectionMetric metrics = 16;
- }
- // Projection-specific diagnostic metric.
- message AdminProjectionMetric {
- // Metric name.
- string name = 1;
- // Metric value.
- int64 value = 2;
- // Estimated memory represented by this metric in bytes.
- int64 bytes = 3;
- }
- // Provides server diagnostics for the admin system page.
- service AdminDiagnosticsService {
- // Returns broker, JetStream, and projection diagnostics. Requires the
- // server owner role.
- rpc GetSystemInfo(GetSystemInfoRequest) returns (GetSystemInfoResponse);
- }
|