fdbmeter

package module
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 20, 2023 License: Apache-2.0, MIT Imports: 16 Imported by: 0

README

🕵 fdbmeter

fdbmeter is a FoundationDB Prometheus metrics exporter that:

  • Works with the latest FoundationDB release, currently 7.1.33
  • Uses reflection to automatically generate and export Prometheus metrics
    • This means changes to FoundationDB status schema only need Golang struct changes.
  • Automatically tags the metrics with relevant attributes extracted from textual status json fields.
  • Periodically fetches and caches FoundationDB status.
  • Exposes a REST endpoint at /status to serve the raw JSON for further debugging.
  • Supports custom struct tags to customize metric reporting using the key fdbmeter; see model.
    • fdbmeter:"skip" excludes a field from metric reporting or an attribute.
    • fdbmeter:"key=<custom-key>" customizes the key attribute of map fields.

Metrics

Below is the current list of metrics exposed by fdbmeter:

fdb_client_cluster_file_up_to_date
fdb_client_coordinators_coordinators_reachable
fdb_client_coordinators_quorum_reachable
fdb_client_database_status_available
fdb_client_database_status_healthy
fdb_client_timestamp
fdb_cluster_active_tss_count
fdb_cluster_bounce_impact_can_clean_bounce
fdb_cluster_clients_count
fdb_cluster_clients_supported_versions_count
fdb_cluster_clients_supported_versions_max_protocol_count
fdb_cluster_cluster_controller_timestamp
fdb_cluster_configuration_backup_worker_enabled
fdb_cluster_configuration_blob_granules_enabled
fdb_cluster_configuration_commit_proxies
fdb_cluster_configuration_coordinators_count
fdb_cluster_configuration_grv_proxies
fdb_cluster_configuration_log_routers
fdb_cluster_configuration_log_spill
fdb_cluster_configuration_logs
fdb_cluster_configuration_perpetual_storage_wiggle
fdb_cluster_configuration_proxies
fdb_cluster_configuration_remote_logs
fdb_cluster_configuration_resolvers
fdb_cluster_configuration_usable_regions
fdb_cluster_data_average_partition_size_bytes
fdb_cluster_data_least_operating_space_bytes_log_server
fdb_cluster_data_least_operating_space_bytes_storage_server
fdb_cluster_data_moving_data_highest_priority
fdb_cluster_data_moving_data_in_flight_bytes
fdb_cluster_data_moving_data_in_queue_bytes
fdb_cluster_data_moving_data_total_written_bytes
fdb_cluster_data_partitions_count
fdb_cluster_data_state_healthy
fdb_cluster_data_state_min_replicas_remaining
fdb_cluster_data_system_kv_size_bytes
fdb_cluster_data_team_trackers_in_flight_bytes
fdb_cluster_data_team_trackers_primary
fdb_cluster_data_team_trackers_state_healthy
fdb_cluster_data_team_trackers_state_min_replicas_remaining
fdb_cluster_data_team_trackers_unhealthy_servers
fdb_cluster_data_total_disk_used_bytes
fdb_cluster_data_total_kv_size_bytes
fdb_cluster_database_available
fdb_cluster_database_lock_state_locked
fdb_cluster_datacenter_lag_seconds
fdb_cluster_datacenter_lag_versions
fdb_cluster_degraded_processes
fdb_cluster_fault_tolerance_max_zone_failures_without_losing_availability
fdb_cluster_fault_tolerance_max_zone_failures_without_losing_data
fdb_cluster_full_replication
fdb_cluster_generation
fdb_cluster_latency_probe_commit_seconds
fdb_cluster_latency_probe_immediate_priority_transaction_start_seconds
fdb_cluster_latency_probe_read_seconds
fdb_cluster_latency_probe_transaction_start_seconds
fdb_cluster_layers__valid
fdb_cluster_logs_begin_version
fdb_cluster_logs_current
fdb_cluster_logs_epoch
fdb_cluster_logs_log_fault_tolerance
fdb_cluster_logs_log_interfaces_healthy
fdb_cluster_logs_log_replication_factor
fdb_cluster_logs_log_write_anti_quorum
fdb_cluster_logs_possibly_losing_data
fdb_cluster_machines_contributing_workers
fdb_cluster_machines_cpu_logical_core_utilization
fdb_cluster_machines_excluded
fdb_cluster_machines_memory_committed_bytes
fdb_cluster_machines_memory_free_bytes
fdb_cluster_machines_memory_total_bytes
fdb_cluster_machines_network_megabits_received_hz
fdb_cluster_machines_network_megabits_sent_hz
fdb_cluster_machines_network_tcp_segments_retransmitted_hz
fdb_cluster_page_cache_log_hit_rate
fdb_cluster_page_cache_storage_hit_rate
fdb_cluster_processes_cpu_usage_cores
fdb_cluster_processes_disk_busy
fdb_cluster_processes_disk_free_bytes
fdb_cluster_processes_disk_reads_counter
fdb_cluster_processes_disk_reads_hz
fdb_cluster_processes_disk_reads_sectors
fdb_cluster_processes_disk_total_bytes
fdb_cluster_processes_disk_writes_counter
fdb_cluster_processes_disk_writes_hz
fdb_cluster_processes_disk_writes_sectors
fdb_cluster_processes_excluded
fdb_cluster_processes_memory_available_bytes
fdb_cluster_processes_memory_limit_bytes
fdb_cluster_processes_memory_rss_bytes
fdb_cluster_processes_memory_unused_allocated_memory
fdb_cluster_processes_memory_used_bytes
fdb_cluster_processes_network_connection_errors_hz
fdb_cluster_processes_network_connections_closed_hz
fdb_cluster_processes_network_connections_established_hz
fdb_cluster_processes_network_current_connections
fdb_cluster_processes_network_megabits_received_hz
fdb_cluster_processes_network_megabits_sent_hz
fdb_cluster_processes_network_tls_policy_failures_hz
fdb_cluster_processes_roles_bytes_queried_counter
fdb_cluster_processes_roles_bytes_queried_hz
fdb_cluster_processes_roles_bytes_queried_roughness
fdb_cluster_processes_roles_data_lag_seconds
fdb_cluster_processes_roles_data_lag_versions
fdb_cluster_processes_roles_data_version
fdb_cluster_processes_roles_durability_lag_seconds
fdb_cluster_processes_roles_durability_lag_versions
fdb_cluster_processes_roles_durable_bytes_counter
fdb_cluster_processes_roles_durable_bytes_hz
fdb_cluster_processes_roles_durable_bytes_roughness
fdb_cluster_processes_roles_durable_version
fdb_cluster_processes_roles_fetched_versions_counter
fdb_cluster_processes_roles_fetched_versions_hz
fdb_cluster_processes_roles_fetched_versions_roughness
fdb_cluster_processes_roles_fetches_from_logs_counter
fdb_cluster_processes_roles_fetches_from_logs_hz
fdb_cluster_processes_roles_fetches_from_logs_roughness
fdb_cluster_processes_roles_finished_queries_counter
fdb_cluster_processes_roles_finished_queries_hz
fdb_cluster_processes_roles_finished_queries_roughness
fdb_cluster_processes_roles_input_bytes_counter
fdb_cluster_processes_roles_input_bytes_hz
fdb_cluster_processes_roles_input_bytes_roughness
fdb_cluster_processes_roles_keys_queried_counter
fdb_cluster_processes_roles_keys_queried_hz
fdb_cluster_processes_roles_keys_queried_roughness
fdb_cluster_processes_roles_kvstore_available_bytes
fdb_cluster_processes_roles_kvstore_free_bytes
fdb_cluster_processes_roles_kvstore_inline_keys
fdb_cluster_processes_roles_kvstore_total_bytes
fdb_cluster_processes_roles_kvstore_total_nodes
fdb_cluster_processes_roles_kvstore_total_size
fdb_cluster_processes_roles_kvstore_used_bytes
fdb_cluster_processes_roles_local_rate
fdb_cluster_processes_roles_low_priority_queries_counter
fdb_cluster_processes_roles_low_priority_queries_hz
fdb_cluster_processes_roles_low_priority_queries_roughness
fdb_cluster_processes_roles_mutation_bytes_counter
fdb_cluster_processes_roles_mutation_bytes_hz
fdb_cluster_processes_roles_mutation_bytes_roughness
fdb_cluster_processes_roles_mutations_counter
fdb_cluster_processes_roles_mutations_hz
fdb_cluster_processes_roles_mutations_roughness
fdb_cluster_processes_roles_query_queue_max
fdb_cluster_processes_roles_read_latency_statistics_count
fdb_cluster_processes_roles_read_latency_statistics_max
fdb_cluster_processes_roles_read_latency_statistics_mean
fdb_cluster_processes_roles_read_latency_statistics_median
fdb_cluster_processes_roles_read_latency_statistics_min
fdb_cluster_processes_roles_read_latency_statistics_p25
fdb_cluster_processes_roles_read_latency_statistics_p90
fdb_cluster_processes_roles_read_latency_statistics_p95
fdb_cluster_processes_roles_read_latency_statistics_p99
fdb_cluster_processes_roles_read_latency_statistics_p99.9
fdb_cluster_processes_roles_storage_metadata_created_time_timestamp
fdb_cluster_processes_roles_stored_bytes
fdb_cluster_processes_roles_total_queries_counter
fdb_cluster_processes_roles_total_queries_hz
fdb_cluster_processes_roles_total_queries_roughness
fdb_cluster_processes_run_loop_busy
fdb_cluster_processes_uptime_seconds
fdb_cluster_qos_batch_performance_limited_by_reason_id
fdb_cluster_qos_batch_released_transactions_per_second
fdb_cluster_qos_batch_transactions_per_second_limit
fdb_cluster_qos_limiting_data_lag_storage_server_seconds
fdb_cluster_qos_limiting_data_lag_storage_server_versions
fdb_cluster_qos_limiting_durability_lag_storage_server_seconds
fdb_cluster_qos_limiting_durability_lag_storage_server_versions
fdb_cluster_qos_limiting_queue_bytes_storage_server
fdb_cluster_qos_performance_limited_by_reason_id
fdb_cluster_qos_released_transactions_per_second
fdb_cluster_qos_throttled_tags_auto_busy_read
fdb_cluster_qos_throttled_tags_auto_busy_write
fdb_cluster_qos_throttled_tags_auto_count
fdb_cluster_qos_throttled_tags_auto_recommended_only
fdb_cluster_qos_throttled_tags_manual_count
fdb_cluster_qos_transactions_per_second_limit
fdb_cluster_qos_worst_data_lag_storage_server_seconds
fdb_cluster_qos_worst_data_lag_storage_server_versions
fdb_cluster_qos_worst_durability_lag_storage_server_seconds
fdb_cluster_qos_worst_durability_lag_storage_server_versions
fdb_cluster_qos_worst_queue_bytes_log_server
fdb_cluster_qos_worst_queue_bytes_storage_server
fdb_cluster_recovery_state_active_generations
fdb_cluster_recovery_state_seconds_since_last_recovered
fdb_cluster_workload_bytes_read_counter
fdb_cluster_workload_bytes_read_hz
fdb_cluster_workload_bytes_read_roughness
fdb_cluster_workload_bytes_written_counter
fdb_cluster_workload_bytes_written_hz
fdb_cluster_workload_bytes_written_roughness
fdb_cluster_workload_keys_read_counter
fdb_cluster_workload_keys_read_hz
fdb_cluster_workload_keys_read_roughness
fdb_cluster_workload_operations_location_requests_counter
fdb_cluster_workload_operations_location_requests_hz
fdb_cluster_workload_operations_location_requests_roughness
fdb_cluster_workload_operations_low_priority_reads_counter
fdb_cluster_workload_operations_low_priority_reads_hz
fdb_cluster_workload_operations_low_priority_reads_roughness
fdb_cluster_workload_operations_memory_errors_counter
fdb_cluster_workload_operations_memory_errors_hz
fdb_cluster_workload_operations_memory_errors_roughness
fdb_cluster_workload_operations_read_requests_counter
fdb_cluster_workload_operations_read_requests_hz
fdb_cluster_workload_operations_read_requests_roughness
fdb_cluster_workload_operations_reads_counter
fdb_cluster_workload_operations_reads_hz
fdb_cluster_workload_operations_reads_roughness
fdb_cluster_workload_operations_writes_counter
fdb_cluster_workload_operations_writes_hz
fdb_cluster_workload_operations_writes_roughness
fdb_cluster_workload_transactions_committed_counter
fdb_cluster_workload_transactions_committed_hz
fdb_cluster_workload_transactions_committed_roughness
fdb_cluster_workload_transactions_conflicted_counter
fdb_cluster_workload_transactions_conflicted_hz
fdb_cluster_workload_transactions_conflicted_roughness
fdb_cluster_workload_transactions_rejected_for_queued_too_long_counter
fdb_cluster_workload_transactions_rejected_for_queued_too_long_hz
fdb_cluster_workload_transactions_rejected_for_queued_too_long_roughness
fdb_cluster_workload_transactions_started_counter
fdb_cluster_workload_transactions_started_hz
fdb_cluster_workload_transactions_started_roughness
fdb_cluster_workload_transactions_started_batch_priority_counter
fdb_cluster_workload_transactions_started_batch_priority_hz
fdb_cluster_workload_transactions_started_batch_priority_roughness
fdb_cluster_workload_transactions_started_default_priority_counter
fdb_cluster_workload_transactions_started_default_priority_hz
fdb_cluster_workload_transactions_started_default_priority_roughness
fdb_cluster_workload_transactions_started_immediate_priority_counter
fdb_cluster_workload_transactions_started_immediate_priority_hz
fdb_cluster_workload_transactions_started_immediate_priority_roughness

Additionally, the following metrics expose information about the metric collection health:

fdb_meter_get_status_failure_counter
fdb_meter_get_status_latency_histogram

Prerequisites

The prerequisites below only apply to running fdbmeter binary directly on your machine. Alternatively, run fdbmeter via a container runtime environment which only requires pulling the image and a container runtime of your choice.

  • Golang.
  • FoundationDB C bindings compatible with API version 710 and above. See FoundationDB release page.

Install

To install fdbmeter binary directly via Golang, run:

$ go install github.com/ipni/fdbmeter/cmd/fdbmeter@latest

Usage

$ fdbmeter --help
Usage of fdbmeter
  -commonAttributes string
        The common attributes to apply to all metrices specified as comma separated key=value.
  -fdbApiVersion int
        The FoundationDB API version. (default 710)
  -fdbClusterFile string
        Path to the FoundationDB cluster file.
  -httpListenAddr string
        The bind address of fdbmeter HTTP server. (default "0.0.0.0:40080")
  -statusRefreshInterval duration
        The interval at which to refresh the FoundationDB status. (default 10s)

License

SPDX-License-Identifier: Apache-2.0 OR MIT

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type FDBMeter

type FDBMeter struct {
	// contains filtered or unexported fields
}

func New

func New(o ...Option) (*FDBMeter, error)

func (*FDBMeter) ServeMux

func (m *FDBMeter) ServeMux() *http.ServeMux

func (*FDBMeter) Shutdown

func (m *FDBMeter) Shutdown(ctx context.Context) error

func (*FDBMeter) Start

func (m *FDBMeter) Start(ctx context.Context) error

type Metrics

type Metrics struct {
	// contains filtered or unexported fields
}

func NewMetrics

func NewMetrics(commonAttrs ...attribute.KeyValue) (*Metrics, error)

type Option

type Option func(*options) error

func WithCommonAttributes added in v0.0.2

func WithCommonAttributes(a ...attribute.KeyValue) Option

func WithFdbApiVersion

func WithFdbApiVersion(v int) Option

func WithFdbClusterFile

func WithFdbClusterFile(cf string) Option

func WithHttpListenAddr

func WithHttpListenAddr(a string) Option

func WithStatusRefreshInterval

func WithStatusRefreshInterval(d time.Duration) Option

type Status

type Status struct {
	Client struct {
		ClusterFile struct {
			Path     string `json:"path" fdbmeter:"skip"`
			UpToDate bool   `json:"up_to_date"`
		} `json:"cluster_file"`
		Coordinators struct {
			Coordinators []struct {
				Address   string `json:"address"`
				Protocol  string `json:"protocol"`
				Reachable bool   `json:"reachable"`
			} `json:"coordinators"`
			QuorumReachable bool `json:"quorum_reachable"`
		} `json:"coordinators"`
		DatabaseStatus struct {
			Available bool `json:"available"`
			Healthy   bool `json:"healthy"`
		} `json:"database_status"`
		Messages  []any   `json:"messages"`
		Timestamp float64 `json:"timestamp"`
	} `json:"client"`
	Cluster struct {
		ActivePrimaryDc string `json:"active_primary_dc"`
		ActiveTssCount  int    `json:"active_tss_count"`
		BounceImpact    struct {
			CanCleanBounce bool `json:"can_clean_bounce"`
		} `json:"bounce_impact"`
		Clients struct {
			Count             int `json:"count"`
			SupportedVersions []struct {
				ClientVersion    string `json:"client_version"`
				ConnectedClients []struct {
					Address  string `json:"address"`
					LogGroup string `json:"log_group"`
				} `json:"connected_clients"`
				Count              int `json:"count"`
				MaxProtocolClients []struct {
					Address  string `json:"address"`
					LogGroup string `json:"log_group"`
				} `json:"max_protocol_clients"`
				MaxProtocolCount int    `json:"max_protocol_count"`
				ProtocolVersion  string `json:"protocol_version"`
				SourceVersion    string `json:"source_version"`
			} `json:"supported_versions"`
		} `json:"clients"`
		ClusterControllerTimestamp float64 `json:"cluster_controller_timestamp"`
		Configuration              struct {
			BackupWorkerEnabled            int    `json:"backup_worker_enabled"`
			BlobGranulesEnabled            int    `json:"blob_granules_enabled"`
			CommitProxies                  int    `json:"commit_proxies"`
			CoordinatorsCount              int    `json:"coordinators_count"`
			ExcludedServers                []any  `json:"excluded_servers"`
			GrvProxies                     int    `json:"grv_proxies"`
			LogRouters                     int    `json:"log_routers"`
			LogSpill                       int    `json:"log_spill"`
			Logs                           int    `json:"logs"`
			PerpetualStorageWiggle         int    `json:"perpetual_storage_wiggle"`
			PerpetualStorageWiggleLocality string `json:"perpetual_storage_wiggle_locality"`
			Proxies                        int    `json:"proxies"`
			RedundancyMode                 string `json:"redundancy_mode"`
			RemoteLogs                     int    `json:"remote_logs"`
			Resolvers                      int    `json:"resolvers"`
			StorageEngine                  string `json:"storage_engine"`
			StorageMigrationType           string `json:"storage_migration_type"`
			TenantMode                     string `json:"tenant_mode"`
			UsableRegions                  int    `json:"usable_regions"`
		} `json:"configuration"`
		ConnectionString string `json:"connection_string" fdbmeter:"skip"`
		Data             struct {
			AveragePartitionSizeBytes             int   `json:"average_partition_size_bytes"`
			LeastOperatingSpaceBytesLogServer     int64 `json:"least_operating_space_bytes_log_server"`
			LeastOperatingSpaceBytesStorageServer int64 `json:"least_operating_space_bytes_storage_server"`
			MovingData                            struct {
				HighestPriority   int   `json:"highest_priority"`
				InFlightBytes     int64 `json:"in_flight_bytes"`
				InQueueBytes      int64 `json:"in_queue_bytes"`
				TotalWrittenBytes int64 `json:"total_written_bytes"`
			} `json:"moving_data"`
			PartitionsCount int `json:"partitions_count"`
			State           struct {
				Description          string `json:"description"`
				Healthy              bool   `json:"healthy"`
				MinReplicasRemaining int    `json:"min_replicas_remaining"`
				Name                 string `json:"name"`
			} `json:"state"`
			SystemKvSizeBytes int `json:"system_kv_size_bytes"`
			TeamTrackers      []struct {
				InFlightBytes int64 `json:"in_flight_bytes"`
				Primary       bool  `json:"primary"`
				State         struct {
					Description          string `json:"description"`
					Healthy              bool   `json:"healthy"`
					MinReplicasRemaining int    `json:"min_replicas_remaining"`
					Name                 string `json:"name"`
				} `json:"state"`
				UnhealthyServers int `json:"unhealthy_servers"`
			} `json:"team_trackers"`
			TotalDiskUsedBytes int64 `json:"total_disk_used_bytes"`
			TotalKvSizeBytes   int64 `json:"total_kv_size_bytes"`
		} `json:"data"`
		DatabaseAvailable bool `json:"database_available"`
		DatabaseLockState struct {
			Locked bool `json:"locked"`
		} `json:"database_lock_state"`
		DatacenterLag struct {
			Seconds  int `json:"seconds"`
			Versions int `json:"versions"`
		} `json:"datacenter_lag"`
		DegradedProcesses int `json:"degraded_processes"`
		FaultTolerance    struct {
			MaxZoneFailuresWithoutLosingAvailability int `json:"max_zone_failures_without_losing_availability"`
			MaxZoneFailuresWithoutLosingData         int `json:"max_zone_failures_without_losing_data"`
		} `json:"fault_tolerance"`
		FullReplication         bool  `json:"full_replication"`
		Generation              int   `json:"generation"`
		IncompatibleConnections []any `json:"incompatible_connections"`
		LatencyProbe            struct {
			CommitSeconds                            float64 `json:"commit_seconds"`
			ImmediatePriorityTransactionStartSeconds float64 `json:"immediate_priority_transaction_start_seconds"`
			ReadSeconds                              float64 `json:"read_seconds"`
			TransactionStartSeconds                  float64 `json:"transaction_start_seconds"`
		} `json:"latency_probe"`
		Layers struct {
			Error string `json:"_error"`
			Valid bool   `json:"_valid"`
		} `json:"layers"`
		Logs []struct {
			BeginVersion      int64 `json:"begin_version"`
			Current           bool  `json:"current"`
			Epoch             int   `json:"epoch"`
			LogFaultTolerance int   `json:"log_fault_tolerance"`
			LogInterfaces     []struct {
				Address string `json:"address"`
				Healthy bool   `json:"healthy"`
				Id      string `json:"id"`
			} `json:"log_interfaces"`
			LogReplicationFactor int  `json:"log_replication_factor"`
			LogWriteAntiQuorum   int  `json:"log_write_anti_quorum"`
			PossiblyLosingData   bool `json:"possibly_losing_data"`
		} `json:"logs"`
		Machines map[string]struct {
			Address             string `json:"address"`
			ContributingWorkers int    `json:"contributing_workers"`
			Cpu                 struct {
				LogicalCoreUtilization float64 `json:"logical_core_utilization"`
			} `json:"cpu"`
			Excluded bool `json:"excluded"`
			Locality struct {
				DnsName    string `json:"dns_name"`
				InstanceId string `json:"instance_id"`
				Machineid  string `json:"machineid"`
				Processid  string `json:"processid"`
				Zoneid     string `json:"zoneid"`
			} `json:"locality"`
			MachineId string `json:"machine_id"`
			Memory    struct {
				CommittedBytes int   `json:"committed_bytes"`
				FreeBytes      int64 `json:"free_bytes"`
				TotalBytes     int64 `json:"total_bytes"`
			} `json:"memory"`
			Network struct {
				MegabitsReceived struct {
					Hz float64 `json:"hz"`
				} `json:"megabits_received"`
				MegabitsSent struct {
					Hz float64 `json:"hz"`
				} `json:"megabits_sent"`
				TcpSegmentsRetransmitted struct {
					Hz float64 `json:"hz"`
				} `json:"tcp_segments_retransmitted"`
			} `json:"network"`
		} `json:"machines" fdbmeter:"key=name"`
		Messages []struct {
			Description string `json:"description"`
			Name        string `json:"name"`
		} `json:"messages"`
		PageCache struct {
			LogHitRate     int `json:"log_hit_rate"`
			StorageHitRate int `json:"storage_hit_rate"`
		} `json:"page_cache"`
		Processes map[string]struct {
			Address     string `json:"address"`
			ClassSource string `json:"class_source"`
			ClassType   string `json:"class_type"`
			CommandLine string `json:"command_line" fdbmeter:"skip"`
			Cpu         struct {
				UsageCores float64 `json:"usage_cores"`
			} `json:"cpu"`
			Disk struct {
				Busy      float64 `json:"busy"`
				FreeBytes int64   `json:"free_bytes"`
				Reads     struct {
					Counter int     `json:"counter"`
					Hz      float64 `json:"hz"`
					Sectors float64 `json:"sectors"`
				} `json:"reads"`
				TotalBytes int64 `json:"total_bytes"`
				Writes     struct {
					Counter int     `json:"counter"`
					Hz      float64 `json:"hz"`
					Sectors float64 `json:"sectors"`
				} `json:"writes"`
			} `json:"disk"`
			Excluded    bool   `json:"excluded"`
			FaultDomain string `json:"fault_domain"`
			Locality    struct {
				DnsName    string `json:"dns_name"`
				InstanceId string `json:"instance_id"`
				Machineid  string `json:"machineid"`
				ProcessId  string `json:"process_id"`
				Processid  string `json:"processid"`
				Zoneid     string `json:"zoneid"`
			} `json:"locality"`
			MachineId string `json:"machine_id"`
			Memory    struct {
				AvailableBytes        int64 `json:"available_bytes"`
				LimitBytes            int64 `json:"limit_bytes"`
				RssBytes              int64 `json:"rss_bytes"`
				UnusedAllocatedMemory int   `json:"unused_allocated_memory"`
				UsedBytes             int64 `json:"used_bytes"`
			} `json:"memory"`
			Messages []any `json:"messages"`
			Network  struct {
				ConnectionErrors struct {
					Hz float64 `json:"hz"`
				} `json:"connection_errors"`
				ConnectionsClosed struct {
					Hz float64 `json:"hz"`
				} `json:"connections_closed"`
				ConnectionsEstablished struct {
					Hz float64 `json:"hz"`
				} `json:"connections_established"`
				CurrentConnections int `json:"current_connections"`
				MegabitsReceived   struct {
					Hz float64 `json:"hz"`
				} `json:"megabits_received"`
				MegabitsSent struct {
					Hz float64 `json:"hz"`
				} `json:"megabits_sent"`
				TlsPolicyFailures struct {
					Hz float64 `json:"hz"`
				} `json:"tls_policy_failures"`
			} `json:"network"`
			Roles []struct {
				BytesQueried struct {
					Counter   int64   `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"bytes_queried"`
				DataLag struct {
					Seconds  float64 `json:"seconds"`
					Versions int     `json:"versions"`
				} `json:"data_lag"`
				DataVersion   int64 `json:"data_version"`
				DurabilityLag struct {
					Seconds  float64 `json:"seconds"`
					Versions int     `json:"versions"`
				} `json:"durability_lag"`
				DurableBytes struct {
					Counter   int64   `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"durable_bytes"`
				DurableVersion  int64 `json:"durable_version"`
				FetchedVersions struct {
					Counter   int64   `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"fetched_versions"`
				FetchesFromLogs struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"fetches_from_logs"`
				FinishedQueries struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"finished_queries"`
				Id         string `json:"id"`
				InputBytes struct {
					Counter   int64   `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"input_bytes"`
				KeysQueried struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"keys_queried"`
				KvstoreAvailableBytes int64 `json:"kvstore_available_bytes"`
				KvstoreFreeBytes      int64 `json:"kvstore_free_bytes"`
				KvstoreInlineKeys     int   `json:"kvstore_inline_keys"`
				KvstoreTotalBytes     int64 `json:"kvstore_total_bytes"`
				KvstoreTotalNodes     int   `json:"kvstore_total_nodes"`
				KvstoreTotalSize      int   `json:"kvstore_total_size"`
				KvstoreUsedBytes      int64 `json:"kvstore_used_bytes"`
				LocalRate             int   `json:"local_rate"`
				LowPriorityQueries    struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"low_priority_queries"`
				MutationBytes struct {
					Counter   int64   `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"mutation_bytes"`
				Mutations struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"mutations"`
				QueryQueueMax         int `json:"query_queue_max"`
				ReadLatencyStatistics struct {
					Count  int     `json:"count"`
					Max    float64 `json:"max"`
					Mean   float64 `json:"mean"`
					Median float64 `json:"median"`
					Min    float64 `json:"min"`
					P25    float64 `json:"p25"`
					P90    float64 `json:"p90"`
					P95    float64 `json:"p95"`
					P99    float64 `json:"p99"`
					P999   float64 `json:"p99.9"`
				} `json:"read_latency_statistics"`
				Role            string `json:"role"`
				StorageMetadata struct {
					CreatedTimeDatetime  string  `json:"created_time_datetime"`
					CreatedTimeTimestamp float64 `json:"created_time_timestamp"`
				} `json:"storage_metadata"`
				StoredBytes  int64 `json:"stored_bytes"`
				TotalQueries struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"total_queries"`
			} `json:"roles"`
			RunLoopBusy   float64 `json:"run_loop_busy"`
			UptimeSeconds float64 `json:"uptime_seconds"`
			Version       string  `json:"version"`
		} `json:"processes" fdbmeter:"key=process_id"`
		ProtocolVersion string `json:"protocol_version"`
		Qos             struct {
			BatchPerformanceLimitedBy struct {
				Description    string `json:"description"`
				Name           string `json:"name"`
				ReasonId       int    `json:"reason_id"`
				ReasonServerId string `json:"reason_server_id"`
			} `json:"batch_performance_limited_by"`
			BatchReleasedTransactionsPerSecond float64 `json:"batch_released_transactions_per_second"`
			BatchTransactionsPerSecondLimit    float64 `json:"batch_transactions_per_second_limit"`
			LimitingDataLagStorageServer       struct {
				Seconds  float64 `json:"seconds"`
				Versions int     `json:"versions"`
			} `json:"limiting_data_lag_storage_server"`
			LimitingDurabilityLagStorageServer struct {
				Seconds  float64 `json:"seconds"`
				Versions int     `json:"versions"`
			} `json:"limiting_durability_lag_storage_server"`
			LimitingQueueBytesStorageServer int `json:"limiting_queue_bytes_storage_server"`
			PerformanceLimitedBy            struct {
				Description string `json:"description"`
				Name        string `json:"name"`
				ReasonId    int    `json:"reason_id"`
			} `json:"performance_limited_by"`
			ReleasedTransactionsPerSecond float64 `json:"released_transactions_per_second"`
			ThrottledTags                 struct {
				Auto struct {
					BusyRead        int `json:"busy_read"`
					BusyWrite       int `json:"busy_write"`
					Count           int `json:"count"`
					RecommendedOnly int `json:"recommended_only"`
				} `json:"auto"`
				Manual struct {
					Count int `json:"count"`
				} `json:"manual"`
			} `json:"throttled_tags"`
			TransactionsPerSecondLimit float64 `json:"transactions_per_second_limit"`
			WorstDataLagStorageServer  struct {
				Seconds  float64 `json:"seconds"`
				Versions int     `json:"versions"`
			} `json:"worst_data_lag_storage_server"`
			WorstDurabilityLagStorageServer struct {
				Seconds  float64 `json:"seconds"`
				Versions int     `json:"versions"`
			} `json:"worst_durability_lag_storage_server"`
			WorstQueueBytesLogServer     int `json:"worst_queue_bytes_log_server"`
			WorstQueueBytesStorageServer int `json:"worst_queue_bytes_storage_server"`
		} `json:"qos"`
		RecoveryState struct {
			ActiveGenerations         int     `json:"active_generations"`
			Description               string  `json:"description"`
			Name                      string  `json:"name"`
			SecondsSinceLastRecovered float64 `json:"seconds_since_last_recovered"`
		} `json:"recovery_state"`
		Workload struct {
			Bytes struct {
				Read struct {
					Counter   int64   `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"read"`
				Written struct {
					Counter   int64   `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"written"`
			} `json:"bytes"`
			Keys struct {
				Read struct {
					Counter   int64   `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"read"`
			} `json:"keys"`
			Operations struct {
				LocationRequests struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"location_requests"`
				LowPriorityReads struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"low_priority_reads"`
				MemoryErrors struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"memory_errors"`
				ReadRequests struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"read_requests"`
				Reads struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"reads"`
				Writes struct {
					Counter   int64   `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"writes"`
			} `json:"operations"`
			Transactions struct {
				Committed struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"committed"`
				Conflicted struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"conflicted"`
				RejectedForQueuedTooLong struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"rejected_for_queued_too_long"`
				Started struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"started"`
				StartedBatchPriority struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"started_batch_priority"`
				StartedDefaultPriority struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"started_default_priority"`
				StartedImmediatePriority struct {
					Counter   int     `json:"counter"`
					Hz        float64 `json:"hz"`
					Roughness float64 `json:"roughness"`
				} `json:"started_immediate_priority"`
			} `json:"transactions"`
		} `json:"workload"`
	} `json:"cluster"`
}

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL