{ "version": 3, "sources": ["../ui/app/mn_admin/mn_statistics_description.js", "../ui/app/mn_admin/mn_statistics_description_service.js"], "sourcesContent": ["/*\nCopyright 2020-Present Couchbase, Inc.\n\nUse of this software is governed by the Business Source License included in\nthe file licenses/BSL-Couchbase.txt. As of the Change Date specified in that\nfile, in accordance with the Business Source License, use of this software will\nbe governed by the Apache License, Version 2.0, included in the file\nlicenses/APL2.txt.\n*/\n\n\n//stats format anatomy\n//example: @kv-.kv_vb_active_sync_write_committed_count\n//@kv - stat section\n//- - dash means that this is per bucket stat, so bucket label must be specified\n//kv_vb_ac.... - stat name\n\nvar labelOperators = {\n \"@kv-.kv_dcp_backoff_views+indexes.connection_type\": \"=~\",\n \"@kv-.kv_dcp_connection_count_views+indexes.connection_type\": \"=~\",\n \"@kv-.kv_dcp_items_remaining_views+indexes.connection_type\": \"=~\",\n \"@kv-.kv_dcp_items_sent_views+indexes.connection_type\": \"=~\",\n \"@kv-.kv_dcp_producer_count_views+indexes.connection_type\": \"=~\",\n \"@kv-.kv_dcp_total_data_size_bytes_views+indexes.connection_type\": \"=~\",\n\n \"@system.sysproc_mem_resident_java_cbas.proc\": \"=~\",\n\n \"@kv-.kv_dcp_backoff_other.connection_type\": \"not_any\",\n \"@kv-.kv_dcp_producer_count_other.connection_type\": \"not_any\",\n \"@kv-.kv_dcp_connection_count_other.connection_type\": \"not_any\",\n \"@kv-.kv_dcp_items_remaining_other.connection_type\": \"not_any\",\n \"@kv-.kv_dcp_items_sent_other.connection_type\": \"not_any\",\n \"@kv-.kv_dcp_total_data_size_bytes_other.connection_type\": \"not_any\"\n};\n\nvar compat65 = get65CompatDesc();\n\nvar compat70 = get70CompatDesc();\n\nvar mapping70 = get70Mapping();\n\nvar mapping65 = get65Mapping();\n\nvar mapping70to71 = {\n \"@system.couch_docs_actual_disk_size\": \"@kv-.couch_docs_actual_disk_size\",\n \"@system.couch_docs_data_size\": \"@kv-.couch_docs_data_size\",\n \"@system.couch_views_actual_disk_size\": \"@kv-.couch_views_actual_disk_size\",\n \"@system.couch_views_data_size\": \"@kv-.couch_views_data_size\"\n};\n\nvar compat70Combined = propertiesToArray(compat65.stats)\n .concat(propertiesToArray(compat70.stats))\n .reduce((acc, statPath) => {\n let statPath70 = mapping65[statPath] || statPath;\n let config = getStatAdditionalConfig(statPath70);\n let path = statPath70.split(\".\");\n let parent = acc;\n path.forEach((key, index) => {\n if (index == (path.length - 1)) {\n parent[key] = Object.assign({\n nodesAggregation: \"sum\",\n metric: {name: key}\n }, readByPath(statPath, !mapping65[statPath]), config);\n } else {\n parent[key] = parent[key] || {};\n parent = parent[key];\n }\n });\n\n return acc;\n }, {});\n\n//per @items Modifier\nvar stats70LabelsModifier = {\n \"eventing\": (cfg) => {\n if (!cfg.metric[\"eventing\"]) {\n delete cfg.metric[\"eventing\"];\n return cfg;\n }\n\n cfg.metric[\"functionName\"] = cfg.metric[\"eventing\"];\n delete cfg.metric[\"eventing\"];\n return cfg;\n },\n\n \"fts\": (cfg) => {\n //metric[service] indicates per item stats\n if (!cfg.metric[\"fts\"]) {\n delete cfg.metric[\"fts\"];\n return cfg;\n }\n let ids = cfg.metric[\"fts\"].split(\"/\");\n let index = ids[0] == \"fts\" ? 1 : 0;\n cfg.metric[\"index\"] = ids[index];\n delete cfg.metric[\"fts\"];\n return cfg;\n },\n\n \"xdcr\": (cfg) => {\n if (!cfg.metric[\"xdcr\"]) {\n delete cfg.metric[\"xdcr\"];\n return cfg;\n }\n //cfg is constructed in mnStatisticsNewService.packStatsConfig function\n let ids = cfg.metric[\"xdcr\"].split(\"/\");\n let index = ids[0] == \"replications\" ? 1 : 0;\n cfg.metric[\"targetClusterUUID\"] = ids[index];\n cfg.metric[\"sourceBucketName\"] = ids[index + 1];\n cfg.metric[\"targetBucketName\"] = ids[index + 2];\n delete cfg.metric.bucket;\n delete cfg.metric[\"xdcr\"];\n return cfg;\n },\n \"index\": (cfg) => {\n //metric[service] indicates per item stats\n if (!cfg.metric[\"index\"]) {\n delete cfg.metric[\"index\"];\n return cfg;\n }\n let ids = cfg.metric[\"index\"].split(\"/\");\n let index = ids[0] == \"index\" ? 1 : 0;\n cfg.metric[\"index\"] = ids[index];\n return cfg;\n },\n \"kv\": (cfg) => {\n if (!cfg.metric[\"kv\"]) {\n delete cfg.metric[\"kv\"];\n return cfg;\n }\n let name = cfg.metric.name;\n let ids = cfg.metric[\"kv\"].split(\"/\");\n\n if (ids[0] == \"views\") {\n cfg.metric[\"name\"] = (\"couch_views_\" + (name == \"accesses\" ? \"ops\" : name));\n } else {\n if (name == \"accesses\") {\n cfg.metric[\"name\"] = \"spatial_views_ops\";\n } else {\n cfg.metric[\"name\"] = \"couch_spatial_\" + name;\n }\n }\n\n delete cfg.metric[\"kv\"];\n\n cfg.metric.signature = ids[1];\n return cfg;\n }\n}\n\nlet service = {\n \"7.0\": {\n \"kvGroups\": Object.keys(compat65.kvGroups).reduce((acc, group) => {\n acc[group] = compat65.kvGroups[group].reduce((acc, stat65) => {\n let descPath70 = mapping65[\"@kv-.\" + stat65].split(\".\");\n if (descPath70[0] == \"@kv-\") {\n acc.push(descPath70[1]);\n }\n return acc;\n }, []);\n return acc;\n },{}),\n \"stats\": compat70Combined\n },\n \"6.5\": compat65,\n mapping70: function (name) {\n return mapping70[name] || name;\n },\n mapping65: function (name) {\n return mapping65[name] || name;\n },\n upgrade70to71: function (name) {\n return mapping70to71[name] || name;\n },\n maybeGetLabelsModifier: function (service) {\n return stats70LabelsModifier[service];\n },\n maybeGetLabelOperator: function (statNamePlusLabelName) {\n return labelOperators[statNamePlusLabelName];\n }\n};\n\nexport default service;\n\nfunction propertiesToArray(obj) {\n let isObject = val => val !== null && typeof val === \"object\" && !val.title;\n let addDelimiter = (a, b) => a ? (a + \".\" + b) : b;\n\n let paths = (obj = {}, head = '') => {\n return Object.entries(obj).reduce((acc, [key, value]) => {\n let fullPath = addDelimiter(head, key);\n return isObject(value) ? acc.concat(paths(value, fullPath)) : acc.concat(fullPath);\n }, []);\n }\n return paths(obj);\n}\n\nfunction getStatAdditionalConfig(statName) {\n switch (statName) {\n case \"@kv-.kv_ep_active_ahead_exceptions\":\n return {metric: {name: \"kv_ep_ahead_exceptions\", state:\"active\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_ep_replica_ahead_exceptions\":\n return {metric: {name: \"kv_ep_ahead_exceptions\", state:\"replica\"}, applyFunctions: [\"irate\"]};\n\n case \"@kv-.kv_vb_avg_replica_queue_age_seconds\":\n return {metric: {name: \"kv_vb_avg_queue_age_seconds\", state: \"replica\"},\n nodesAggregation: \"special\"};\n case \"@kv-.kv_vb_avg_active_queue_age_seconds\":\n return {metric: {name: \"kv_vb_avg_queue_age_seconds\", state: \"active\"},\n nodesAggregation: \"special\"};\n case \"@kv-.kv_vb_avg_pending_queue_age_seconds\":\n return {metric: {name: \"kv_vb_avg_queue_age_seconds\", state: \"pending\"},\n nodesAggregation: \"special\"};\n\n case \"@kv-.kv_vb_active_eject\":\n return {metric: {name: \"kv_vb_eject\", state: \"active\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_active_ops_create\":\n return {metric: {name: \"kv_vb_ops_create\", state: \"active\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_active_queue_drain\":\n return {metric: {name: \"kv_vb_queue_drain\", state: \"active\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_active_queue_fill\":\n return {metric: {name: \"kv_vb_queue_fill\", state: \"active\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_active_sync_write_accepted_count\":\n return {metric: {name: \"kv_vb_sync_write_accepted_count\", state: \"active\"},\n applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_active_sync_write_committed_count\":\n return {metric: {name: \"kv_vb_sync_write_committed_count\", state: \"active\"},\n applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_active_sync_write_aborted_count\":\n return {metric: {name: \"kv_vb_sync_write_aborted_count\", state: \"active\"},\n applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_pending_eject\":\n return {metric: {name: \"kv_vb_eject\", state: \"pending\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_pending_ops_create\":\n return {metric: {name: \"kv_vb_ops_create\", state: \"pending\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_pending_queue_drain\":\n return {metric: {name: \"kv_vb_queue_drain\", state: \"pending\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_pending_queue_fill\":\n return {metric: {name: \"kv_vb_queue_fill\", state: \"pending\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_replica_eject\":\n return {metric: {name: \"kv_vb_eject\", state: \"replica\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_replica_ops_create\":\n return {metric: {name: \"kv_vb_ops_create\", state: \"replica\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_replica_queue_drain\":\n return {metric: {name: \"kv_vb_queue_drain\", state: \"replica\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_replica_queue_fill\":\n return {metric: {name: \"kv_vb_queue_fill\", state: \"replica\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_active_queue_size\":\n return {metric: {name: \"kv_vb_queue_size\", state: \"active\"}};\n case \"@kv-.kv_vb_pending_queue_size\":\n return {metric: {name: \"kv_vb_queue_size\", state: \"pending\"}};\n case \"@kv-.kv_vb_replica_curr_items\":\n return {metric: {name: \"kv_vb_curr_items\", state: \"replica\"}};\n case \"@kv-.kv_vb_pending_curr_items\":\n return {metric: {name: \"kv_vb_curr_items\", state: \"pending\"}};\n case \"@kv-.kv_vb_replica_queue_size\":\n return {metric: {name: \"kv_vb_queue_size\", state: \"replica\"}};\n case \"@kv-.kv_vb_active_itm_memory_bytes\":\n return {metric: {name: \"kv_vb_itm_memory_bytes\", state: \"active\"}};\n case \"@kv-.kv_vb_active_meta_data_memory_bytes\":\n return {metric: {name: \"kv_vb_meta_data_memory_bytes\", state: \"active\"}};\n case \"@kv-.kv_vb_pending_itm_memory_bytes\":\n return {metric: {name: \"kv_vb_itm_memory_bytes\", state: \"pending\"}};\n case \"@kv-.kv_vb_pending_meta_data_memory_bytes\":\n return {metric: {name: \"kv_vb_meta_data_memory_bytes\", state: \"pending\"}};\n case \"@kv-.kv_vb_replica_itm_memory_bytes\":\n return {metric: {name: \"kv_vb_itm_memory_bytes\", state: \"replica\"}};\n case \"@kv-.kv_vb_replica_meta_data_memory_bytes\":\n return {metric: {name: \"kv_vb_meta_data_memory_bytes\", state: \"replica\"}};\n\n case \"@kv-.kv_avg_active_timestamp_drift_seconds\":\n return {metric: {name: \"kv_avg_timestamp_drift_seconds\", state: \"active\"},\n nodesAggregation: \"special\"};\n case \"@kv-.kv_avg_replica_timestamp_drift_seconds\":\n return {metric: {name: \"kv_avg_timestamp_drift_seconds\", state: \"replica\"},\n nodesAggregation: \"special\"};\n case \"@kv-.kv_vb_pending_resident_items_ratio\":\n return {metric: {name: \"kv_vb_resident_items_ratio\", state: \"pending\"},\n nodesAggregation: \"special\"};\n case \"@kv-.kv_vb_active_resident_items_ratio\":\n return {metric: {name: \"kv_vb_resident_items_ratio\", state: \"active\"},\n nodesAggregation: \"special\"};\n case \"@kv-.kv_vb_replica_resident_items_ratio\":\n return {metric: {name: \"kv_vb_resident_items_ratio\", state: \"replica\"},\n nodesAggregation: \"special\"};\n\n case \"@xdcr-.@items.xdcr_percent_completeness\":\n case \"@kv-.couch_views_fragmentation\":\n return {nodesAggregation: \"special\", applyFunctions: [\"sum\"]};\n\n case \"@query.n1ql_avg_req_time\":\n case \"@query.n1ql_avg_svc_time\":\n case \"@query.n1ql_avg_response_size\":\n case \"@query.n1ql_avg_result_count\":\n case \"@index.index_ram_percent\":\n case \"@index.index_remaining_ram\":\n case \"@index-.@items.index_num_docs_pending_and_queued\":\n case \"@index-.@items.index_cache_miss_ratio\":\n case \"@index-.index_fragmentation\":\n case \"@index-.@items.index_resident_percent\":\n case \"@kv-.couch_total_disk_size\":\n case \"@kv-.couch_docs_fragmentation\":\n case \"@kv-.kv_ep_resident_items_ratio\":\n case \"@kv-.kv_vb_avg_total_queue_age_seconds\":\n case \"@kv-.kv_disk_write_queue\":\n return {nodesAggregation: \"special\"};\n\n case \"@kv-.kv_hit_ratio\":\n case \"@kv-.kv_ep_cache_miss_ratio\":\n case \"@kv-.kv_avg_bg_wait_time_seconds\":\n case \"@kv-.kv_xdc_ops\":\n case \"@kv-.kv_ep_ops_create\":\n case \"@kv-.kv_ep_ops_update\":\n return {nodesAggregation: \"special\", applyFunctions: [\"irate\"]};\n\n case \"@system.sys_cpu_utilization_rate\":\n case \"@cbas.cbas_system_load_average\":\n return {nodesAggregation: \"avg\"};\n\n case \"@system.sysproc_mem_resident_java\":\n return {metric: {name: \"sysproc_mem_resident\", proc: \"java\"},\n applyFunctions: [\"sum\"]};\n case \"@system.sysproc_mem_resident_cbas\":\n return {metric: {name: \"sysproc_mem_resident\", proc: \"cbas\"},\n applyFunctions: [\"sum\"]};\n\n case \"@system.sysproc_mem_resident_java_cbas\":\n return {metric: {name: \"sysproc_mem_resident\", proc: \"java|cbas\"},\n applyFunctions: [\"sum\"]};\n\n case \"@index-.@items.index_fragmentation\":\n return {nodesAggregation: \"special\", applyFunctions: [\"sum\"]};\n\n case \"@cbas-.cbas_incoming_records_count\":\n case \"@cbas-.cbas_failed_to_parse_records_count\":\n case \"@index-.index_num_docs_indexed\":\n case \"@index-.index_num_requests\":\n case \"@index-.index_num_rows_returned\":\n case \"@fts-.fts_total_bytes_indexed\":\n case \"@fts-.fts_total_queries\":\n case \"@kv-.kv_ops\":\n case \"@kv-.couch_views_ops\":\n case \"@xdcr-.@items.xdcr_data_replicated_bytes\":\n case \"@xdcr-.@items.xdcr_docs_filtered_total\":\n case \"@xdcr-.@items.xdcr_docs_checked_total\":\n case \"@xdcr-.@items.xdcr_docs_opt_repd_total\":\n case \"@xdcr-.@items.xdcr_docs_received_from_dcp_total\":\n return {applyFunctions: [\"irate\", \"sum\"]};\n\n //sum of get, store, delete\n case \"@kv-.kv_collection_ops\":\n return {applyFunctions: [\"irate\", \"sum\"], metric: {name: \"kv_collection_ops\"}};\n\n case \"@cbas.cbas_gc_count_total\":\n case \"@cbas.cbas_gc_time_milliseconds_total\":\n case \"@kv-.kv_read_bytes\":\n case \"@kv-.kv_written_bytes\":\n case \"@kv-.kv_ep_bg_fetched\":\n case \"@kv-.kv_ep_diskqueue_drain\":\n case \"@kv-.kv_ep_diskqueue_fill\":\n case \"@kv-.kv_ep_num_value_ejects\":\n case \"@kv-.kv_ep_tmp_oom_errors\":\n case \"@kv-.@items.accesses\":\n case \"@index-.@items.index_num_requests\":\n case \"@index-.@items.index_num_docs_indexed\":\n case \"@index-.@items.index_num_rows_returned\":\n case \"@fts-.@items.fts_total_bytes_indexed\":\n case \"@fts-.@items.fts_total_bytes_query_results\":\n case \"@fts-.@items.fts_total_compaction_written_bytes\":\n case \"@fts-.@items.fts_total_queries\":\n case \"@fts-.@items.fts_total_queries_error\":\n case \"@fts-.@items.fts_total_queries_slow\":\n case \"@fts-.@items.fts_total_queries_timeout\":\n case \"@fts-.@items.fts_total_term_searchers\":\n case \"@query.n1ql_errors\":\n case \"@query.n1ql_invalid_requests\":\n case \"@query.n1ql_requests\":\n case \"@query.n1ql_selects\":\n case \"@query.n1ql_warnings\":\n case \"@system.cm_rest_request_leaves_total\":\n case \"@cbas.cbas_io_reads_total\":\n case \"@cbas.cbas_io_writes_total\":\n return {applyFunctions: [\"irate\"]};\n\n case \"@query.n1ql_requests_1000ms\":\n case \"@query.n1ql_requests_250ms\":\n case \"@query.n1ql_requests_5000ms\":\n case \"@query.n1ql_requests_500ms\":\n return {timeWindow: \"1m\", applyFunctions: [\"increase\"]};\n\n case \"@fts-.fts_num_bytes_used_disk\":\n case \"@fts-.fts_num_files_on_disk\":\n case \"@xdcr-.@items.xdcr_docs_failed_cr_source_total\":\n case \"@xdcr-.@items.xdcr_docs_failed_cr_target_total\":\n case \"@xdcr-.@items.xdcr_docs_written_total\":\n case \"@xdcr-.@items.xdcr_changes_left_total\":\n case \"@xdcr-.@items.xdcr_wtavg_docs_latency_seconds\":\n case \"@xdcr-.@items.xdcr_wtavg_meta_latency_seconds\":\n return {applyFunctions: [\"sum\"]};\n\n case \"@xdcr-.xdcr_changes_left_total\":\n return {metric: {name: \"xdcr_changes_left_total\"}, applyFunctions: [\"sum\"], bucketLabel: \"sourceBucketName\"};\n\n case \"@cbas-.cbas_incoming_records_count_total\":\n return {metric: {name: \"cbas_incoming_records_count\"}, applyFunctions: [\"sum\"]};\n\n case \"@cbas-.cbas_failed_to_parse_records_count_total\":\n return {metric: {name: \"cbas_failed_to_parse_records_count\"}, applyFunctions: [\"sum\"]};\n\n case \"@xdcr-.@items.xdcr_rate_replicated_docs_per_second\":\n return {metric: {name: \"xdcr_docs_written_total\"}, applyFunctions: [\"irate\", \"sum\"]};\n\n case \"@kv-.kv_memory_used_bytes\":\n return {metric: {for: \"hashtable\"}};\n\n case \"@kv-.kv_avg_disk_time_seconds_update\":\n return {metric: {name: \"kv_avg_disk_time_seconds\", op: \"update\"},\n nodesAggregation: \"special\", applyFunctions: [\"irate\"]};\n\n case \"@kv-.kv_avg_disk_time_seconds_commit\":\n return {metric: {name: \"kv_avg_disk_time_seconds\", op: \"commit\"},\n nodesAggregation: \"special\", applyFunctions: [\"irate\"]};\n\n case \"@kv-.kv_curr_connections\":\n return {bucket: null};\n\n case \"@eventing.eventing_timeout_count\":\n return {applyFunctions: [\"sum\"], bucket: null};\n\n case \"@eventing.eventing_failed_count\":\n return {applyFunctions: [\"sum\"], bucket: null, nodesAggregation: \"special\"};\n\n case \"@eventing.eventing_processed_count\":\n return {applyFunctions: [\"irate\", \"sum\"], bucket: null, nodesAggregation: \"special\"};\n\n case \"@eventing-.@items.eventing_processed_count_rate\":\n return {applyFunctions: [\"irate\"], bucket: null, metric: {name: \"eventing_processed_count\"},\n nodesAggregation: \"special\"};\n case \"@eventing-.@items.eventing_failed_count_rate\":\n return {applyFunctions: [\"irate\"], bucket: null, metric: {name: \"eventing_failed_count\"},\n nodesAggregation: \"special\"};\n case \"@eventing-.@items.eventing_timeout_count_rate\":\n return {applyFunctions: [\"irate\"], bucket: null, metric: {name: \"eventing_timeout_count\"}};\n\n case \"@eventing-.@items.eventing_failed_count\":\n case \"@eventing-.@items.eventing_processed_count\":\n return {bucket: null, nodesAggregation: \"special\"};\n\n case \"@eventing-.@items.eventing_timeout_count\":\n case \"@eventing-.@items.eventing_dcp_backlog\":\n return {bucket: null};\n\n case \"@kv-.kv_cas_hits\":\n return {metric: {name: \"kv_ops\", op: \"cas\", result: \"hit\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_cas_badval\":\n return {metric: {name: \"kv_ops\", op: \"cas\", result: \"badval\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_cas_misses\":\n return {metric: {name: \"kv_ops\", op: \"cas\", result: \"miss\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_decr_hits\":\n return {metric: {name: \"kv_ops\", op: \"decr\", result: \"hit\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_decr_misses\":\n return {metric: {name: \"kv_ops\", op: \"decr\", result: \"miss\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_delete_hits\":\n return {metric: {name: \"kv_ops\", op: \"delete\", result: \"hit\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_delete_misses\":\n return {metric: {name: \"kv_ops\", op: \"delete\", result: \"miss\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_incr_hits\":\n return {metric: {name: \"kv_ops\", op: \"incr\", result: \"hit\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_incr_misses\":\n return {metric: {name: \"kv_ops\", op: \"incr\", result: \"miss\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_get_hits\":\n return {metric: {name: \"kv_ops\", op: \"get\", result: \"hit\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_get_misses\":\n return {metric: {name: \"kv_ops\", op: \"get\", result: \"miss\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_cmd_get\":\n return {metric: {name: \"kv_ops\", op: \"get\"}, applyFunctions: [\"irate\", \"sum\"]};\n case \"@kv-.kv_cmd_set\":\n return {metric: {name: \"kv_ops\", op: \"set\"}, applyFunctions: [\"irate\", \"sum\"]};\n case \"@kv-.kv_cmd_total_gets\":\n return {metric: {name: \"kv_ops\", op: \"get\"}, applyFunctions: [\"irate\", \"sum\"], bucket: null};\n case \"@kv-.kv_ep_num_ops_del_meta\":\n return {metric: {name: \"kv_ops\", op: \"del_meta\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_ep_num_ops_get_meta\":\n return {metric: {name: \"kv_ops\", op: \"get_meta\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_ep_num_ops_set_meta\":\n return {metric: {name: \"kv_ops\", op: \"set_meta\"}, applyFunctions: [\"irate\"]};\n case \"@kv-.kv_vb_active_num\":\n return {metric: {name: \"kv_num_vbuckets\", state: \"active\"}};\n case \"@kv-.kv_vb_pending_num\":\n return {metric: {name: \"kv_num_vbuckets\", state: \"pending\"}};\n case \"@kv-.kv_vb_replica_num\":\n return {metric: {name: \"kv_num_vbuckets\", state: \"replica\"}};\n\n default:\n if (statName.includes(\"@kv-.kv_dcp_\")) {\n let name = statName.split(\".\").pop().split(\"_\");\n let type = name.pop();\n let rv = {metric: {name: name.join(\"_\")}};\n let applyFunctions = [];\n\n if (statName.includes(\"@kv-.kv_dcp_items_sent_\") ||\n statName.includes(\"@kv-.kv_dcp_total_data_size_bytes_\")) {\n applyFunctions.push(\"irate\");\n }\n if (statName.includes(\"@kv-.kv_dcp_backoff_cbas\") ||\n statName.includes(\"@kv-.kv_dcp_backoff_eventing\")) {\n applyFunctions.push(\"irate\");\n }\n if (type == \"other\") {\n type = [\"replication\",\"xdcr\",\"fts\",\"cbas\",\n \"eventing\",\"secidx\",\"mapreduce_view\",\"spatial_view\"];\n applyFunctions.push(\"sum\");\n }\n if (type == \"views+indexes\") {\n type = \"mapreduce_view|spatial_view|secidx|fts\";\n applyFunctions.push(\"sum\");\n }\n rv.metric.connection_type = type;\n rv.applyFunctions = applyFunctions;\n return rv;\n }\n if (statName.includes(\"@index-.index_\")) {\n return {applyFunctions: [\"sum\"]};\n }\n return {};\n }\n}\n\n\nfunction readByPath(descPath, is70Stat) {\n var paths = descPath.split('.');\n var statsDesc = is70Stat ? compat70.stats : compat65.stats;\n var i;\n\n for (i = 0; i < paths.length; ++i) {\n if (statsDesc[paths[i]] == undefined) {\n return undefined;\n } else {\n statsDesc = statsDesc[paths[i]];\n }\n }\n return statsDesc;\n}\n\nfunction get65Mapping() {\n let mapping = get70Mapping();\n return Object.keys(mapping).reduce((acc, key) => {\n acc[mapping[key]] = key;\n return acc;\n }, {});\n}\n\nfunction get70Mapping() {\n var rv = {};\n Object.keys(compat65.stats[\"@index-\"][\"@items\"]).forEach(key => {\n let name = \"@index-.@items.\" + key;\n let name70 = \"@index-.@items.\";\n if (!key.includes(\"index_\")) {\n name70 += \"index_\";\n }\n name70 += key;\n rv[name70] = rv[name70] || name;\n });\n\n Object.keys(compat65.stats[\"@index-\"]).forEach(key => {\n let name = \"@index-.\" + key;\n let name70 = \"@index-.\" + key.replace(\"/\", \"_\");\n rv[name70] = rv[name70] || name;\n });\n\n Object.keys(compat65.stats[\"@query\"]).forEach(key => {\n let name = \"@query.\" + key;\n let name70 = \"@query.n1ql_\";\n if (key.includes(\"query_\")) {\n name70 += key.split(\"query_\")[1];\n } else {\n name70 += key;\n }\n rv[name70] = rv[name70] || name;\n });\n\n Object.keys(compat65.stats[\"@fts-\"][\"@items\"]).forEach(key => {\n let name = \"@fts-.@items.\" + key;\n let name70 = \"@fts-.@items.fts_\" + key;\n rv[name70] = rv[name70] || name;\n });\n\n return Object.assign(rv, {\n \"@system.sys_cpu_utilization_rate\": \"@system.cpu_utilization_rate\",\n \"@system.sys_hibernated_requests\": \"@system.hibernated_requests\",\n \"@system.sys_hibernated_waked\": \"@system.hibernated_waked\",\n \"@system.sys_mem_actual_free\": \"@system.mem_actual_free\",\n \"@system.cm_rest_request_leaves_total\": \"@system.rest_requests\",\n \"@system.sys_swap_used\": \"@system.swap_used\",\n\n \"@cbas.cbas_disk_used_bytes_total\": \"@cbas.cbas_disk_used\",\n \"@cbas.cbas_gc_count_total\": \"@cbas.cbas_gc_count\",\n \"@cbas.cbas_gc_time_milliseconds_total\": \"@cbas.cbas_gc_time\",\n \"@cbas.cbas_heap_memory_used_bytes\": \"@cbas.cbas_heap_used\",\n \"@cbas.cbas_system_load_average\": \"@cbas.cbas_system_load_average\",\n \"@cbas.cbas_thread_count\": \"@cbas.cbas_thread_count\",\n \"@cbas.cbas_io_reads_total\": \"@cbas.cbas_io_reads\", //linux only\n \"@cbas.cbas_io_writes_total\": \"@cbas.cbas_io_writes\", //linux only\n\n \"@cbas-.cbas_incoming_records_count\": \"@cbas-.cbas/incoming_records_count\",\n \"@cbas-.cbas_incoming_records_count_total\": \"@cbas-.cbas/incoming_records_count_total\",\n \"@cbas-.cbas_failed_to_parse_records_count_total\": \"@cbas-.cbas/failed_at_parser_records_count_total\",\n\n \"@index.index_memory_used_total\": \"@index.index_memory_used\",\n \"@index-.index_fragmentation\": \"@index-.index/fragmentation\",\n \"@index-.@items.index_fragmentation\": \"@index-.@items.index_frag_percent\",\n \"@index.index_ram_percent\": \"@index.index_ram_percent\",\n \"@index.index_remaining_ram\": \"@index.index_remaining_ram\",\n\n \"@index-.@items.index_num_docs_pending_and_queued\": \"@index-.@items.num_docs_pending+queued\",\n \"@index-.@items.index_cache_miss_ratio\": \"@index-.@items.cache_miss_ratio\",\n\n \"@kv-.kv_memcache_evictions\": \"@kv-.evictions\",\n \"@kv-.couch_total_disk_size\": \"@kv-.couch_total_disk_size\",\n \"@kv-.couch_docs_fragmentation\": \"@kv-.couch_docs_fragmentation\",\n \"@kv-.couch_views_fragmentation\": \"@kv-.couch_views_fragmentation\",\n \"@kv-.kv_hit_ratio\": \"@kv-.hit_ratio\",\n \"@kv-.kv_ep_cache_miss_ratio\": \"@kv-.ep_cache_miss_rate\",\n \"@kv-.kv_vb_avg_pending_queue_age_seconds\": \"@kv-.vb_avg_pending_queue_age\",\n \"@kv-.kv_vb_avg_active_queue_age_seconds\": \"@kv-.vb_avg_active_queue_age\",\n \"@kv-.kv_vb_avg_replica_queue_age_seconds\": \"@kv-.vb_avg_replica_queue_age\",\n \"@kv-.kv_vb_avg_total_queue_age_seconds\": \"@kv-.vb_avg_total_queue_age\",\n \"@kv-.kv_ep_resident_items_ratio\": \"@kv-.ep_resident_items_rate\",\n \"@kv-.kv_vb_pending_resident_items_ratio\": \"@kv-.vb_pending_resident_items_ratio\",\n \"@kv-.kv_vb_active_resident_items_ratio\": \"@kv-.vb_active_resident_items_ratio\",\n \"@kv-.kv_vb_replica_resident_items_ratio\": \"@kv-.vb_replica_resident_items_ratio\",\n \"@kv-.kv_avg_disk_time_seconds_update\": \"@kv-.avg_disk_update_time\",\n \"@kv-.kv_avg_disk_time_seconds_commit\": \"@kv-.avg_disk_commit_time\",\n \"@kv-.kv_read_bytes\": \"@kv-.bytes_read\",\n \"@kv-.kv_written_bytes\": \"@kv-.bytes_written\",\n \"@kv-.kv_cas_badval\": \"@kv-.cas_badval\",\n \"@kv-.kv_cas_hits\": \"@kv-.cas_hits\",\n \"@kv-.kv_cas_misses\": \"@kv-.cas_misses\",\n \"@kv-.kv_get_hits\": \"@kv-.get_hits\",\n \"@kv-.kv_get_misses\": \"@kv-.get_misses\",\n \"@kv-.kv_cmd_get\": \"@kv-.cmd_get\",\n \"@kv-.kv_cmd_set\": \"@kv-.cmd_set\",\n \"@kv-.kv_cmd_total_gets\": \"@kv-.cmd_total_gets\",\n \"@kv-.couch_views_ops\": \"@kv-.couch_views_ops\",\n \"@kv-.couch_docs_actual_disk_size\": \"@kv-.couch_docs_actual_disk_size\",\n \"@kv-.couch_docs_data_size\": \"@kv-.couch_docs_data_size\",\n \"@kv-.couch_views_actual_disk_size\": \"@kv-.couch_views_actual_disk_size\",\n \"@kv-.couch_views_data_size\": \"@kv-.couch_views_data_size\",\n \"@kv-.kv_ep_num_ops_del_meta\": \"@kv-.ep_num_ops_del_meta\",\n \"@kv-.kv_ep_num_ops_get_meta\": \"@kv-.ep_num_ops_get_meta\",\n \"@kv-.kv_ep_num_ops_set_meta\": \"@kv-.ep_num_ops_set_meta\",\n \"@kv-.kv_vb_active_num\": \"@kv-.vb_active_num\",\n \"@kv-.kv_vb_pending_num\": \"@kv-.vb_pending_num\",\n \"@kv-.kv_vb_replica_num\": \"@kv-.vb_replica_num\",\n \"@kv-.@items.accesses\": \"@kv-.@items.accesses\",\n \"@kv-.@items.data_size\": \"@kv-.@items.data_size\",\n \"@kv-.@items.disk_size\": \"@kv-.@items.disk_size\",\n\n \"@kv-.kv_memory_used_bytes\": \"@kv-.ep_kv_size\",\n\n \"@kv-.kv_curr_connections\": \"@kv-.curr_connections\",\n \"@kv-.kv_curr_items\": \"@kv-.curr_items\",\n \"@kv-.kv_curr_items_tot\": \"@kv-.curr_items_tot\",\n \"@kv-.kv_decr_hits\": \"@kv-.decr_hits\",\n \"@kv-.kv_decr_misses\": \"@kv-.decr_misses\",\n \"@kv-.kv_delete_hits\": \"@kv-.delete_hits\",\n \"@kv-.kv_delete_misses\": \"@kv-.delete_misses\",\n \"@kv-.kv_incr_hits\": \"@kv-.incr_hits\",\n \"@kv-.kv_incr_misses\": \"@kv-.incr_misses\",\n \"@kv-.kv_ep_active_ahead_exceptions\": \"@kv-.ep_active_ahead_exceptions\",\n \"@kv-.kv_ep_bg_fetched\": \"@kv-.ep_bg_fetched\",\n \"@kv-.kv_ep_data_read_failed\": \"@kv-.ep_data_read_failed\",\n \"@kv-.kv_ep_data_write_failed\": \"@kv-.ep_data_write_failed\",\n \"@kv-.kv_ep_diskqueue_drain\": \"@kv-.ep_diskqueue_drain\",\n \"@kv-.kv_ep_diskqueue_fill\": \"@kv-.ep_diskqueue_fill\",\n \"@kv-.kv_ep_diskqueue_items\": \"@kv-.ep_diskqueue_items\",\n \"@kv-.kv_ep_mem_high_wat\": \"@kv-.ep_mem_high_wat\",\n \"@kv-.kv_ep_mem_low_wat\": \"@kv-.ep_mem_low_wat\",\n \"@kv-.kv_ep_num_value_ejects\": \"@kv-.ep_num_value_ejects\",\n \"@kv-.kv_ep_replica_ahead_exceptions\": \"@kv-.ep_replica_ahead_exceptions\",\n \"@kv-.kv_ep_tmp_oom_errors\": \"@kv-.ep_tmp_oom_errors\",\n \"@kv-.kv_ep_vb_total\": \"@kv-.ep_vb_total\",\n \"@kv-.kv_ops\": \"@kv-.ops\",\n \"@kv-.kv_vb_active_eject\": \"@kv-.vb_active_eject\",\n \"@kv-.kv_vb_active_ops_create\": \"@kv-.vb_active_ops_create\",\n \"@kv-.kv_vb_active_queue_drain\": \"@kv-.vb_active_queue_drain\",\n \"@kv-.kv_vb_active_queue_fill\": \"@kv-.vb_active_queue_fill\",\n \"@kv-.kv_vb_active_queue_size\": \"@kv-.vb_active_queue_size\",\n \"@kv-.kv_vb_active_sync_write_accepted_count\": \"@kv-.vb_active_sync_write_accepted_count\",\n \"@kv-.kv_vb_active_sync_write_committed_count\": \"@kv-.vb_active_sync_write_committed_count\",\n \"@kv-.kv_vb_active_sync_write_aborted_count\": \"@kv-.vb_active_sync_write_aborted_count\",\n \"@kv-.kv_vb_pending_curr_items\": \"@kv-.vb_pending_curr_items\",\n \"@kv-.kv_vb_pending_eject\": \"@kv-.vb_pending_eject\",\n \"@kv-.kv_vb_pending_ops_create\": \"@kv-.vb_pending_ops_create\",\n \"@kv-.kv_vb_pending_queue_drain\": \"@kv-.vb_pending_queue_drain\",\n \"@kv-.kv_vb_pending_queue_fill\": \"@kv-.vb_pending_queue_fill\",\n \"@kv-.kv_vb_pending_queue_size\": \"@kv-.vb_pending_queue_size\",\n \"@kv-.kv_vb_replica_curr_items\": \"@kv-.vb_replica_curr_items\",\n \"@kv-.kv_vb_replica_eject\": \"@kv-.vb_replica_eject\",\n \"@kv-.kv_vb_replica_ops_create\": \"@kv-.vb_replica_ops_create\",\n \"@kv-.kv_vb_replica_queue_drain\": \"@kv-.vb_replica_queue_drain\",\n \"@kv-.kv_vb_replica_queue_fill\": \"@kv-.vb_replica_queue_fill\",\n \"@kv-.kv_vb_replica_queue_size\": \"@kv-.vb_replica_queue_size\",\n\n \"@kv-.kv_mem_used_bytes\": \"@kv-.mem_used\",\n \"@kv-.kv_ep_meta_data_memory_bytes\": \"@kv-.ep_meta_data_memory\",\n \"@kv-.kv_vb_active_itm_memory_bytes\": \"@kv-.vb_active_itm_memory\",\n \"@kv-.kv_vb_active_meta_data_memory_bytes\": \"@kv-.vb_active_meta_data_memory\",\n \"@kv-.kv_vb_pending_itm_memory_bytes\": \"@kv-.vb_pending_itm_memory\",\n \"@kv-.kv_vb_pending_meta_data_memory_bytes\": \"@kv-.vb_pending_meta_data_memory\",\n \"@kv-.kv_vb_replica_itm_memory_bytes\": \"@kv-.vb_replica_itm_memory\",\n \"@kv-.kv_vb_replica_meta_data_memory_bytes\": \"@kv-.vb_replica_meta_data_memory\",\n\n \"@kv-.kv_avg_bg_wait_time_seconds\": \"@kv-.avg_bg_wait_time\",\n \"@kv-.kv_avg_active_timestamp_drift_seconds\": \"@kv-.avg_active_timestamp_drift\",\n \"@kv-.kv_avg_replica_timestamp_drift_seconds\": \"@kv-.avg_replica_timestamp_drift\",\n \"@kv-.kv_disk_write_queue\": \"@kv-.disk_write_queue\",\n \"@kv-.kv_ep_ops_create\": \"@kv-.ep_ops_create\",\n \"@kv-.kv_ep_ops_update\": \"@kv-.ep_ops_update\",\n \"@kv-.kv_xdc_ops\": \"@kv-.xdc_ops\",\n\n \"@kv-.kv_dcp_backoff_replication\": \"@kv-.ep_dcp_replica_backoff\",\n \"@kv-.kv_dcp_connection_count_replication\": \"@kv-.ep_dcp_replica_count\",\n \"@kv-.kv_dcp_items_remaining_replication\": \"@kv-.ep_dcp_replica_items_remaining\",\n \"@kv-.kv_dcp_items_sent_replication\": \"@kv-.ep_dcp_replica_items_sent\",\n \"@kv-.kv_dcp_producer_count_replication\": \"@kv-.ep_dcp_replica_producer_count\",\n \"@kv-.kv_dcp_total_data_size_bytes_replication\": \"@kv-.ep_dcp_replica_total_bytes\",\n \"@kv-.kv_dcp_backoff_xdcr\": \"@kv-.ep_dcp_xdcr_backoff\",\n \"@kv-.kv_dcp_connection_count_xdcr\": \"@kv-.ep_dcp_xdcr_count\",\n \"@kv-.kv_dcp_items_remaining_xdcr\": \"@kv-.ep_dcp_xdcr_items_remaining\",\n \"@kv-.kv_dcp_items_sent_xdcr\": \"@kv-.ep_dcp_xdcr_items_sent\",\n \"@kv-.kv_dcp_producer_count_xdcr\": \"@kv-.ep_dcp_xdcr_producer_count\",\n \"@kv-.kv_dcp_total_data_size_bytes_xdcr\": \"@kv-.ep_dcp_xdcr_total_bytes\",\n \"@kv-.kv_dcp_backoff_cbas\": \"@kv-.ep_dcp_cbas_backoff\",\n \"@kv-.kv_dcp_connection_count_cbas\": \"@kv-.ep_dcp_cbas_count\",\n \"@kv-.kv_dcp_items_remaining_cbas\": \"@kv-.ep_dcp_cbas_items_remaining\",\n \"@kv-.kv_dcp_items_sent_cbas\": \"@kv-.ep_dcp_cbas_items_sent\",\n \"@kv-.kv_dcp_producer_count_cbas\": \"@kv-.ep_dcp_cbas_producer_count\",\n \"@kv-.kv_dcp_total_data_size_bytes_cbas\": \"@kv-.ep_dcp_cbas_total_bytes\",\n \"@kv-.kv_dcp_backoff_eventing\": \"@kv-.ep_dcp_eventing_backoff\",\n \"@kv-.kv_dcp_connection_count_eventing\": \"@kv-.ep_dcp_eventing_count\",\n \"@kv-.kv_dcp_items_remaining_eventing\": \"@kv-.ep_dcp_eventing_items_remaining\",\n \"@kv-.kv_dcp_items_sent_eventing\": \"@kv-.ep_dcp_eventing_items_sent\",\n \"@kv-.kv_dcp_producer_count_eventing\": \"@kv-.ep_dcp_eventing_producer_count\",\n \"@kv-.kv_dcp_total_data_size_bytes_eventing\": \"@kv-.ep_dcp_eventing_total_bytes\",\n \"@kv-.kv_dcp_backoff_views+indexes\": \"@kv-.ep_dcp_views+indexes_backoff\",\n \"@kv-.kv_dcp_connection_count_views+indexes\": \"@kv-.ep_dcp_views+indexes_count\",\n \"@kv-.kv_dcp_items_remaining_views+indexes\": \"@kv-.ep_dcp_views+indexes_items_remaining\",\n \"@kv-.kv_dcp_items_sent_views+indexes\": \"@kv-.ep_dcp_views+indexes_items_sent\",\n \"@kv-.kv_dcp_producer_count_views+indexes\": \"@kv-.ep_dcp_views+indexes_producer_count\",\n \"@kv-.kv_dcp_total_data_size_bytes_views+indexes\": \"@kv-.ep_dcp_views+indexes_total_bytes\",\n\n \"@kv-.kv_dcp_backoff_other\": \"@kv-.ep_dcp_other_backoff\",\n \"@kv-.kv_dcp_connection_count_other\": \"@kv-.ep_dcp_other_count\",\n \"@kv-.kv_dcp_items_remaining_other\": \"@kv-.ep_dcp_other_items_remaining\",\n \"@kv-.kv_dcp_items_sent_other\": \"@kv-.ep_dcp_other_items_sent\",\n \"@kv-.kv_dcp_producer_count_other\": \"@kv-.ep_dcp_other_producer_count\",\n \"@kv-.kv_dcp_total_data_size_bytes_other\": \"@kv-.ep_dcp_other_total_bytes\",\n\n \"@xdcr-.xdcr_changes_left_total\": \"@xdcr-.replication_changes_left\",\n \"@xdcr-.@items.xdcr_changes_left_total\": \"@xdcr-.@items.changes_left\",\n \"@xdcr-.@items.xdcr_data_replicated_bytes\": \"@xdcr-.@items.bandwidth_usage\",\n \"@xdcr-.@items.xdcr_docs_failed_cr_source_total\": \"@xdcr-.@items.docs_failed_cr_source\",\n \"@xdcr-.@items.xdcr_docs_filtered_total\": \"@xdcr-.@items.docs_filtered\",\n \"@xdcr-.@items.xdcr_docs_written_total\": \"@xdcr-.@items.docs_written\",\n \"@xdcr-.@items.xdcr_docs_checked_total\": \"@xdcr-.@items.rate_doc_checks\",\n \"@xdcr-.@items.xdcr_docs_opt_repd_total\": \"@xdcr-.@items.rate_doc_opt_repd\",\n \"@xdcr-.@items.xdcr_docs_received_from_dcp_total\": \"@xdcr-.@items.rate_received_from_dcp\",\n \"@xdcr-.@items.xdcr_rate_replicated_docs_per_second\": \"@xdcr-.@items.rate_replicated\",\n \"@xdcr-.@items.xdcr_wtavg_docs_latency_seconds\": \"@xdcr-.@items.wtavg_docs_latency\", //?s-ms\n \"@xdcr-.@items.xdcr_wtavg_meta_latency_seconds\": \"@xdcr-.@items.wtavg_meta_latency\", //?s-ms\n\n \"@xdcr-.@items.xdcr_percent_completeness\": \"@xdcr-.@items.percent_completeness\",\n\n \"@fts-.fts_num_bytes_used_disk\": \"@fts-.fts/num_bytes_used_disk\",\n \"@fts-.fts_num_files_on_disk\": \"@fts-.fts/num_files_on_disk\",\n \"@fts-.fts_total_bytes_indexed\": \"@fts-.fts/total_bytes_indexed\",\n \"@fts-.fts_total_queries\": \"@fts-.fts/total_queries\",\n\n \"@fts.fts_num_bytes_used_ram\": \"@fts.fts_num_bytes_used_ram\",\n \"@fts.fts_total_queries_rejected_by_herder\": \"@fts.fts_total_queries_rejected_by_herder\",\n \"@fts.fts_curr_batches_blocked_by_herder\": \"@fts.fts_curr_batches_blocked_by_herder\",\n\n \"@eventing.eventing_timeout_count\": \"@eventing.eventing/timeout_count\",\n \"@eventing.eventing_processed_count\": \"@eventing.eventing/processed_count\",\n \"@eventing.eventing_failed_count\": \"@eventing.eventing/failed_count\",\n\n //eventing items were added in 7.0 in UI so we don't actually have them\n //in pre 7.0 descriptions\n \"@eventing-.@items.eventing_timeout_count\": \"@eventing-.@items.timeout_count\",\n \"@eventing-.@items.eventing_processed_count\": \"@eventing-.@items.processed_count\",\n \"@eventing-.@items.eventing_failed_count\": \"@eventing-.@items.failed_count\",\n \"@eventing-.@items.eventing_dcp_backlog\": \"@eventing-.@items.dcp_backlog\"\n\n });\n}\n\nfunction get70CompatDesc() {\n return {\n \"stats\": {\n \"@system\": {\n \"sysproc_mem_resident_java_cbas\": {\n unit: \"bytes\",\n title: \"Analytics Service Memory Resident\",\n desc: \"The memory used for Analytics service (cbas process + java process resident memory).\"\n },\n \"sysproc_mem_resident_java\": {\n unit: \"bytes\",\n title: \"Java Sysproc Memory Resident\",\n desc: \"The memory used for the Java system process.\"\n },\n \"sysproc_mem_resident_cbas\": {\n unit: \"bytes\",\n title: \"Analytics Sysproc Memory Resident\",\n desc: \"The memory used for the Analytics system process.\"\n }\n },\n \"@kv-\": {\n \"kv_collection_item_count\": null,\n \"kv_collection_mem_used_bytes\": null,\n \"kv_collection_data_size_bytes\": null,\n \"kv_collection_ops\": null\n },\n \"@index-\": {\n \"@items\": {\n \"index_num_docs_queued\": {\n unit: \"number\",\n title: \"Index Write Queue\",\n desc: \"Number of documents queued to be indexed at the Indexer. Per Index.\"\n }\n }\n },\n \"@xdcr-\": {\n \"@items\": {\n \"xdcr_docs_failed_cr_target_total\": {\n unit: \"number\",\n title: \"XDCR Mutations Skipped (target)\",\n desc: \"Number of mutations that failed conflict resolution on the target side. Per-replication. (measured from per-replication stat docs_failed_cr_target)\"\n }\n }\n },\n \"@eventing\": {\n \"eventing_processed_count\": {\n unit: \"number\",\n title: \"Successful Function Invocations\",\n desc: \"Count of times the function was invoked successfully.\"\n },\n \"eventing_failed_count\": {\n unit: \"number\",\n title: \"Failed Function Invocations\",\n desc: \"Count of times the function invocation failed.\"\n },\n \"eventing_timeout_count\": {\n unit: \"number\",\n title: \"Eventing Timeouts\",\n desc: \"Execution timeouts while processing mutations.\"\n }\n },\n \"@eventing-\": {\n \"@items\": {\n \"eventing_processed_count_rate\": {\n unit: \"number/sec\",\n title: \"Successful Function Invocations Rate\",\n desc: \"Count of times the function was invoked successfully per second.\"\n },\n \"eventing_failed_count_rate\": {\n unit: \"number/sec\",\n title: \"Failed Function Invocations Rate\",\n desc: \"Count of times the function invocation failed per second.\"\n },\n \"eventing_timeout_count_rate\": {\n unit: \"number/sec\",\n title: \"Eventing Timeouts Rate\",\n desc: \"Execution timeouts while processing mutations per second.\"\n },\n \"eventing_processed_count\": null,\n \"eventing_failed_count\": null,\n \"eventing_timeout_count\": null,\n \"eventing_dcp_backlog\": null\n }\n },\n \"@cbas-\": {\n \"cbas_failed_to_parse_records_count\": {\n unit: \"number/sec\",\n title: \"Analytics Parse Fail Rate\",\n desc: \"Number of records Analytics failed to parse per second.\"\n }\n },\n \"@cbas\": {\n \"cbas_pending_merge_ops\": {\n unit: \"number\",\n title: \"Analytics Pending Merge Operations\",\n desc: \"Number of pending merge operations per node.\"\n },\n \"cbas_pending_flush_ops\": {\n unit: \"number\",\n title: \"Analytics Pending Flush Operations\",\n desc: \"Number of pending flush operations per node.\"\n },\n \"cbas_heap_memory_committed_bytes\": {\n unit: \"bytes\",\n title: \"Analytics Heap Committed\",\n desc: \"Bytes of JVM heap committed for Analytics on this server.\"\n }\n }\n }\n };\n}\n\nfunction get65CompatDesc() {\n return {\n \"kvGroups\": {\n \"Ops\":\n [\"ops\",\"cmd_get\",\"cmd_set\",\"hit_ratio\",\"delete_hits\",\"cas_hits\",\"ep_cache_miss_rate\",\"couch_views_ops\",\"ep_num_ops_del_meta\",\"ep_num_ops_get_meta\",\"ep_num_ops_set_meta\",\"ep_ops_create\",\"ep_ops_update\",\"vb_active_ops_create\",\"vb_pending_ops_create\",\"vb_replica_ops_create\",\"xdc_ops\",\"curr_connections\"],\n \"Memory\":\n [\"mem_used\",\"ep_kv_size\",\"ep_meta_data_memory\",\"ep_tmp_oom_errors\",\"ep_mem_low_wat\",\"ep_mem_high_wat\",\"vb_active_itm_memory\",\"vb_active_meta_data_memory\",\"vb_pending_itm_memory\",\"vb_pending_meta_data_memory\",\"vb_replica_itm_memory\",\"vb_replica_meta_data_memory\"],\n \"Disk\":\n [\"couch_total_disk_size\",\"couch_docs_fragmentation\",\"couch_views_fragmentation\",\"ep_cache_miss_rate\",\"vb_avg_total_queue_age\",\"avg_disk_update_time\",\"avg_disk_commit_time\",\"couch_docs_actual_disk_size\",\"couch_views_actual_disk_size\",\n \"disk_write_queue\",\"ep_bg_fetched\",\"ep_data_read_failed\",\"ep_data_write_failed\",\"ep_num_value_ejects\",\"ep_ops_create\",\"ep_ops_update\"],\n \"vBuckets\":\n [\"ep_vb_total\",\"vb_active_num\",\"curr_items\",\"vb_active_ops_create\",\"vb_active_resident_items_ratio\",\"vb_active_eject\",\"vb_active_sync_write_accepted_count\",\"vb_active_sync_write_committed_count\",\"vb_active_sync_write_aborted_count\",\"avg_active_timestamp_drift\",\"ep_active_ahead_exceptions\",\"vb_pending_num\",\"vb_pending_curr_items\",\"vb_pending_ops_create\",\"vb_pending_resident_items_ratio\",\"vb_pending_eject\",\"vb_replica_num\",\"vb_replica_curr_items\",\"vb_replica_ops_create\",\"vb_replica_resident_items_ratio\",\"vb_replica_eject\",\"avg_replica_timestamp_drift\",\"ep_replica_ahead_exceptions\"],\n \"Disk Queues\":\n [\"ep_diskqueue_fill\",\"ep_diskqueue_drain\",\"ep_diskqueue_items\",\"vb_active_queue_fill\",\"vb_active_queue_drain\",\"vb_active_queue_size\",\"vb_replica_queue_fill\",\"vb_replica_queue_drain\",\"vb_replica_queue_size\",\"vb_pending_queue_fill\",\"vb_pending_queue_drain\",\"vb_pending_queue_size\"],\n \"DCP Queues\":\n [\"ep_dcp_views+indexes_count\",\"ep_dcp_views+indexes_producer_count\",\"ep_dcp_views+indexes_items_remaining\",\"ep_dcp_views+indexes_total_bytes\",\"ep_dcp_views+indexes_backoff\",\"ep_dcp_cbas_count\",\"ep_dcp_cbas_producer_count\",\"ep_dcp_cbas_items_remaining\",\"ep_dcp_cbas_total_bytes\",\"ep_dcp_cbas_backoff\",\"ep_dcp_replica_count\",\"ep_dcp_replica_producer_count\",\"ep_dcp_replica_items_remaining\",\"ep_dcp_replica_total_bytes\",\"ep_dcp_replica_backoff\",\"ep_dcp_xdcr_count\",\"ep_dcp_xdcr_producer_count\",\"ep_dcp_xdcr_items_remaining\",\"ep_dcp_xdcr_total_bytes\",\"ep_dcp_xdcr_backoff\",\"ep_dcp_eventing_count\",\"ep_dcp_eventing_producer_count\",\"ep_dcp_eventing_items_remaining\",\"ep_dcp_eventing_total_bytes\",\"ep_dcp_eventing_backoff\"]\n },\n\n \"stats\": {\n \"@system\":{\n \"cpu_utilization_rate\": {\n unit: \"percent\",\n title: \"CPU\",\n desc: \"Percentage of CPU in use across all available cores on this server.\"\n },\n \"hibernated_requests\": {\n unit: \"number\",\n title: \"Idle Streaming Requests\",\n desc: \"Number of streaming requests on management port (usually 8091) now idle.\"\n },\n \"hibernated_waked\": {\n unit: \"number/sec\",\n title: \"Streaming Wakeups\",\n desc: \"Number of streaming request wakeups per second on management port (usually 8091).\"\n },\n \"mem_actual_free\": {\n unit: \"bytes\",\n title: \"Available RAM\",\n desc: \"Bytes of RAM available to Couchbase on this server.\"\n },\n \"rest_requests\": {\n unit: \"number/sec\",\n title: \"HTTP Request Rate\",\n desc: \"Number of http requests per second on management port (usually 8091).\"\n },\n \"swap_used\": {\n unit: \"bytes\",\n title: \"Swap Used\",\n desc: \"Bytes of swap space in use on this server.\"\n },\n },\n\n \"@kv-\": {\n \"couch_total_disk_size\": {\n unit: \"bytes\",\n title: \"Data/Views On Disk\",\n desc: \"The total size on disk of all data and view files for this bucket. (measured from couch_total_disk_size)\"\n },\n \"couch_docs_fragmentation\": {\n unit: \"percent\",\n title: \"Docs Fragmentation\",\n desc: \"Percentage of fragmented data to be compacted compared to real data for the data files in this bucket. (measured from couch_docs_fragmentation)\"\n },\n \"couch_views_fragmentation\": {\n unit: \"percent\",\n title: \"Views Fragmentation\",\n desc: \"Percentage of fragmented data to be compacted compared to real data for the view index files in this bucket. (measured from couch_views_fragmentation)\"\n },\n \"hit_ratio\": {\n unit: \"percent\",\n title: \"Get Ratio\",\n desc: \"Percentage of get requests served with data from this bucket. (measured from get_hits * 100/cmd_get)\"\n },\n \"ep_cache_miss_rate\": {\n unit: \"percent\",\n title: \"Cache Miss Ratio\",\n desc: \"Percentage of reads per second to this bucket from disk as opposed to RAM. (measured from ep_bg_fetches / gets * 100)\"\n },\n \"ep_resident_items_rate\": {\n unit: \"percent\",\n title: \"Resident Ratio\",\n desc: \"Percentage of all items cached in RAM in this bucket. (measured from ep_resident_items_rate)\"\n },\n \"vb_avg_active_queue_age\": {\n unit: \"second\",\n title: \"Active Queue Age\",\n desc: \"Average age in seconds of active items in the active item queue for this bucket. (measured from vb_avg_active_queue_age)\"\n },\n \"vb_avg_replica_queue_age\": {\n unit: \"second\",\n title: \"Replica Queue Age\",\n desc: \"Average age in seconds of replica items in the replica item queue for this bucket. (measured from vb_avg_replica_queue_age)\"\n },\n \"vb_avg_pending_queue_age\": {\n unit: \"second\",\n title: \"Pending Queue Age\",\n desc: \"Average age in seconds of pending items in the pending item queue for this bucket. Should be transient during rebalancing. (measured from vb_avg_pending_queue_age)\"\n },\n \"vb_avg_total_queue_age\": {\n unit: \"second\",\n title: \"Disk Write Queue Age\",\n desc: \"Average age in seconds of all items in the disk write queue for this bucket. (measured from vb_avg_total_queue_age)\"\n },\n \"vb_active_resident_items_ratio\": {\n unit: \"percent\",\n title: \"Active Resident Ratio\",\n desc: \"Percentage of active items cached in RAM in this bucket. (measured from vb_active_resident_items_ratio)\"\n },\n \"vb_replica_resident_items_ratio\": {\n unit: \"percent\",\n title: \"Replica Resident Ratio\",\n name: \"vb_replica_resident_items_ratio\",\n desc: \"Percentage of replica items cached in RAM in this bucket. (measured from vb_replica_resident_items_ratio)\"\n },\n \"vb_pending_resident_items_ratio\": {\n unit: \"percent\",\n title: \"Pending Resident Ratio\",\n desc: \"Percentage of items cached in RAM for pending vBuckets in this bucket. (measured from vb_pending_resident_items_ratio)\"\n },\n \"avg_disk_update_time\": {\n unit: \"microsecond\",\n title: \"Disk Update Time\",\n desc: \"Average disk update time in microseconds as from disk_update histogram of timings. (measured from avg_disk_update_time)\"\n },\n \"avg_disk_commit_time\": {\n unit: \"percent\",\n title: \"Disk Commit Time\",\n desc: \"Average disk commit time in seconds as from disk_update histogram of timings. (measured from avg_disk_commit_time)\"\n },\n \"avg_bg_wait_time\": {\n unit: \"microsecond\",\n title: \"Background Fetch Time\",\n desc: \"Average background fetch time in microseconds. (measured from avg_bg_wait_time)\"\n },\n \"avg_active_timestamp_drift\": {\n unit: \"second\",\n title: \"Active Timestamp Drift\",\n name: \"avg_active_timestamp_drift\",\n desc: \"Average drift (in seconds) between mutation timestamps and the local time for active vBuckets. (measured from ep_active_hlc_drift and ep_active_hlc_drift_count)\"\n },\n \"avg_replica_timestamp_drift\": {\n unit: \"second\",\n title: \"Replica Timestamp Drift\",\n desc: \"Average drift (in seconds) between mutation timestamps and the local time for replica vBuckets. (measured from ep_replica_hlc_drift and ep_replica_hlc_drift_count)\"\n },\n \"ep_dcp_views+indexes_count\": {\n unit: \"number\",\n title: \"DCP Indexes Connections\",\n desc: \"Number of internal views/gsi/search index DCP connections in this bucket (measured from ep_dcp_views_count + ep_dcp_2i_count + ep_dcp_fts_count)\"\n },\n \"ep_dcp_views+indexes_items_remaining\": {\n unit: \"number\",\n title: \"DCP Indexes Items Remaining\",\n desc: \"Number of items remaining to be sent to consumer in this bucket (measured from ep_dcp_views_items_remaining + ep_dcp_2i_items_remaining + ep_dcp_fts_items_remaining)\"\n },\n \"ep_dcp_views+indexes_producer_count\": {\n unit: \"number\",\n title: \"DCP Indexes Senders\",\n desc: \"Number of views/gsi/search index senders for this bucket (measured from ep_dcp_views_producer_count + ep_dcp_2i_producer_count + ep_dcp_fts_producer_count)\"\n },\n \"ep_dcp_views+indexes_items_sent\": {\n unit: \"number/sec\",\n title: \"DCP Indexes Items Sent\",\n desc: \"Number of items per second being sent for a producer for this bucket (measured from ep_dcp_views_items_sent + ep_dcp_2i_items_sent + ep_dcp_fts_items_sent)\"\n },\n \"ep_dcp_views+indexes_total_bytes\": {\n unit: \"bytes/sec\",\n title: \"DCP Indexes Drain Rate\",\n desc: \"Number of bytes per second being sent for views/gsi/search index DCP connections for this bucket (measured from ep_dcp_views_total_bytes + ep_dcp_2i_total_bytes + ep_dcp_fts_total_bytes)\"\n },\n \"ep_dcp_views+indexes_backoff\": {\n unit: \"number\",\n title: \"DCP Indexes Backoffs\",\n desc: \"Number of backoffs for views/gsi/search index DCP connections (measured from ep_dcp_views_backoff + ep_dcp_2i_backoff + ep_dcp_fts_backoff)\"\n },\n \"bytes_read\": {\n unit: \"bytes/sec\",\n name: \"bytes_read\",\n title: \"Memcached RX Rate\",\n desc: \"Bytes per second received in this bucket. (measured from bytes_read)\"\n },\n \"bytes_written\": {\n unit: \"bytes/sec\",\n title: \"Memcached TX Rate\",\n desc: \"Number of bytes per second sent from this bucket. (measured from bytes_written)\"\n },\n \"cas_badval\": {\n unit: \"number/sec\",\n title: \"CAS Badval Rate\",\n desc: \"Number of CAS operations per second using an incorrect CAS ID for data that this bucket contains. (measured from cas_badval)\"\n },\n \"cas_hits\": {\n unit: \"number/sec\",\n title: \"CAS Ops Rate\",\n desc: \"Number of operations with a CAS id per second for this bucket. (measured from cas_hits)\"\n },\n \"cas_misses\": {\n unit: \"number/sec\",\n title: \"CAS Miss Rate\",\n desc: \"Number of CAS operations per second for data that this bucket does not contain. (measured from cas_misses)\"\n },\n \"cmd_get\": {\n unit: \"number/sec\",\n title: \"Gets\",\n desc: \"Number of reads (get operations) per second from this bucket. (measured from cmd_get)\"\n },\n \"cmd_total_gets\": {\n unit: \"number/sec\",\n title: \"Total Gets\",\n desc: \"Number of total get operations per second from this bucket (measured from cmd_total_gets). This includes additional get operations such as get locked that are not included in cmd_get\"\n },\n \"cmd_set\": {\n unit: \"number/sec\",\n title: \"Sets\",\n desc: \"Number of writes (set operations) per second to this bucket. (measured from cmd_set)\"\n },\n \"couch_docs_actual_disk_size\": {\n unit: \"bytes\",\n title: \"Data Total Disk Size\",\n desc: \"The size of all data service files on disk for this bucket, including the data itself, metadata, and temporary files. (measured from couch_docs_actual_disk_size)\"\n },\n \"couch_docs_data_size\": {\n unit: \"bytes\",\n title: \"Active Data Size\",\n desc: \"Bytes of active data in this bucket. (measured from couch_docs_data_size)\"\n },\n \"couch_views_actual_disk_size\": {\n unit: \"bytes\",\n title: \"Views Disk Size\",\n desc: \"Bytes of active items in all the views for this bucket on disk (measured from couch_views_actual_disk_size)\"\n },\n \"couch_views_data_size\": {\n unit: \"bytes\",\n title: \"Views Data\",\n desc: \"Bytes of active data for all the views in this bucket. (measured from couch_views_data_size)\"\n },\n \"couch_views_ops\": {\n unit: \"number/sec\",\n title: \"Views Read Rate Total\",\n desc: \"All the views reads for all design documents including scatter gather. (measured from couch_views_ops)\"\n },\n \"curr_connections\": {\n unit: \"number\",\n title: \"Current Connections\",\n desc: \"Number of currrent connections to this server including connections from external client SDKs, proxies, DCP requests and internal statistic gathering. (measured from curr_connections)\"\n },\n \"curr_items\": {\n unit: \"number\",\n title: \"Active Items\",\n desc: \"Number of active items in this bucket. (measured from curr_items)\"\n },\n \"curr_items_tot\": {\n unit: \"number\",\n title: \"Total Items\",\n desc: \"Total number of items in this bucket. (measured from curr_items_tot)\"\n },\n \"decr_hits\": {\n unit: \"number/sec\",\n title: \"Decr Hit Rate\",\n desc: \"Number of decrement operations per second for data that this bucket contains. (measured from decr_hits)\"\n },\n \"decr_misses\": {\n unit: \"number/sec\",\n title: \"Decr Miss Rate\",\n desc: \"Number of decr operations per second for data that this bucket does not contain. (measured from decr_misses)\"\n },\n \"delete_hits\": {\n unit: \"number/sec\",\n title: \"Delete Rate\",\n desc: \"Number of delete operations per second for this bucket. (measured from delete_hits)\"\n },\n \"delete_misses\": {\n unit: \"number/sec\",\n title: \"Delete Miss Rate\",\n desc: \"Number of delete operations per second for data that this bucket does not contain. (measured from delete_misses)\"\n },\n \"disk_write_queue\": {\n unit: \"number\",\n title: \"Disk Write Queue\",\n desc: \"Number of items waiting to be written to disk in this bucket. (measured from ep_queue_size+ep_flusher_todo)\"\n },\n \"ep_active_ahead_exceptions\": {\n unit: \"number/sec\",\n title: \"Active Ahead Exception Rate\",\n desc: \"Total number of ahead exceptions (when timestamp drift between mutations and local time has exceeded 5000000 \u03BCs) per second for all active vBuckets.\"\n },\n \"ep_bg_fetched\": {\n unit: \"number/sec\",\n title: \"Disk Read Rate\",\n desc: \"Number of reads per second from disk for this bucket. (measured from ep_bg_fetched)\"\n },\n \"ep_data_read_failed\": {\n unit: \"number\",\n title: \"Disk Read Failures\",\n desc: \"Number of disk read failures. (measured from ep_data_read_failed)\"\n },\n \"ep_data_write_failed\": {\n unit: \"number\",\n title: \"Disk Write Failures\",\n desc: \"Number of disk write failures. (measured from ep_data_write_failed)\"\n },\n \"ep_dcp_cbas_backoff\": {\n unit: \"number/sec\",\n title: \"DCP Analytics Backoffs\",\n desc: \"Number of backoffs per second for analytics DCP connections (measured from ep_dcp_cbas_backoff)\"\n },\n \"ep_dcp_cbas_count\": {\n unit: \"number\",\n title: \"DCP Analytics Connections\",\n desc: \"Number of internal analytics DCP connections in this bucket (measured from ep_dcp_cbas_count)\"\n },\n \"ep_dcp_cbas_items_remaining\": {\n unit: \"number\",\n title: \"DCP Analytics Items Remaining\",\n desc: \"Number of items remaining to be sent to consumer in this bucket (measured from ep_dcp_cbas_items_remaining)\"\n },\n \"ep_dcp_cbas_items_sent\": {\n unit: \"number/sec\",\n title: \"DCP Analytics Items Sent\",\n desc: \"Number of items per second being sent for a producer for this bucket (measured from ep_dcp_cbas_items_sent)\"\n },\n \"ep_dcp_cbas_producer_count\": {\n unit: \"number\",\n title: \"DCP Analytics Senders\",\n desc: \"Number of analytics senders for this bucket (measured from ep_dcp_cbas_producer_count)\"\n },\n \"ep_dcp_cbas_total_bytes\": {\n unit: \"bytes/sec\",\n title: \"DCP Analytics Drain Rate\",\n desc:\"Number of bytes per second being sent for analytics DCP connections for this bucket (measured from ep_dcp_cbas_total_bytes)\"\n },\n \"ep_dcp_eventing_backoff\": {\n unit: \"number/sec\",\n title: \"DCP Eventing Backoffs\",\n desc: \"Number of backoffs per second for eventing DCP connections (measured from ep_dcp_eventing_backoff)\"\n },\n \"ep_dcp_eventing_count\": {\n unit: \"number\",\n title: \"DCP Eventing Connections\",\n desc: \"Number of internal eventing DCP connections in this bucket (measured from ep_dcp_eventing_count)\"\n },\n \"ep_dcp_eventing_items_remaining\": {\n unit: \"number\",\n title: \"DCP Eventing Items Remaining\",\n desc: \"Number of items remaining to be sent to consumer in this bucket (measured from ep_dcp_eventing_items_remaining)\"\n },\n \"ep_dcp_eventing_items_sent\": {\n unit: \"number/sec\",\n title: \"DCP Eventing Items Sent\",\n desc: \"Number of items per second being sent for a producer for this bucket (measured from ep_dcp_eventing_items_sent)\"\n },\n \"ep_dcp_eventing_producer_count\": {\n unit: \"number\",\n title: \"DCP Eventing Senders\",\n desc: \"Number of eventing senders for this bucket (measured from ep_dcp_eventing_producer_count)\"\n },\n \"ep_dcp_eventing_total_bytes\": {\n unit: \"bytes/sec\",\n title: \"DCP Eventing Drain Rate\",\n desc:\"Number of bytes per second being sent for eventing DCP connections for this bucket (measured from ep_dcp_eventing_total_bytes)\"\n },\n \"ep_dcp_other_backoff\": {\n unit: \"number\",\n title: \"DCP Other Backoffs\",\n desc: \"Number of backoffs for other DCP connections\"\n },\n \"ep_dcp_other_count\": {\n unit: \"number\",\n title: \"DCP Other Connections\",\n desc: \"Number of other DCP connections in this bucket (measured from ep_dcp_other_count)\"\n },\n \"ep_dcp_other_items_remaining\": {\n unit: \"number\",\n title: \"DCP Other Items Remaining\",\n desc: \"Number of items remaining to be sent to consumer in this bucket (measured from ep_dcp_other_items_remaining)\"\n },\n \"ep_dcp_other_items_sent\": {\n unit: \"number/sec\",\n title: \"DCP Other Items Sent\",\n desc: \"Number of items per second being sent for a producer for this bucket (measured from ep_dcp_other_items_sent)\"\n },\n \"ep_dcp_other_producer_count\": {\n unit: \"number\",\n title: \"DCP Other Senders\",\n desc: \"Number of other senders for this bucket (measured from ep_dcp_other_producer_count)\"\n },\n \"ep_dcp_other_total_bytes\": {\n unit: \"bytes/sec\",\n title: \"DCP Other Drain Rate\",\n desc: \"Number of bytes per second being sent for other DCP connections for this bucket (measured from ep_dcp_other_total_bytes)\"\n },\n \"ep_dcp_replica_backoff\": {\n unit: \"number\",\n title: \"DCP Replication Backoffs\",\n desc: \"Number of backoffs for replication DCP connections\"\n },\n \"ep_dcp_replica_count\": {\n unit: \"number\",\n title: \"DCP Replication Connections\",\n desc: \"Number of internal replication DCP connections in this bucket (measured from ep_dcp_replica_count)\"\n },\n \"ep_dcp_replica_items_remaining\": {\n unit: \"number\",\n title: \"DCP Replication Items Remaining\",\n desc: \"Number of items remaining to be sent to consumer in this bucket (measured from ep_dcp_replica_items_remaining)\"\n },\n \"ep_dcp_replica_items_sent\": {\n unit: \"number/sec\",\n title: \"DCP Replication Items Sent\",\n desc: \"Number of items per second being sent for a producer for this bucket (measured from ep_dcp_replica_items_sent)\"\n },\n \"ep_dcp_replica_producer_count\": {\n unit: \"number\",\n title: \"DCP Replication Senders\",\n desc: \"Number of replication senders for this bucket (measured from ep_dcp_replica_producer_count)\"\n },\n \"ep_dcp_replica_total_bytes\": {\n unit: \"bytes/sec\",\n title: \"DCP Replication Drain Rate\",\n desc: \"Number of bytes per second being sent for replication DCP connections for this bucket (measured from ep_dcp_replica_total_bytes)\"\n },\n \"ep_dcp_xdcr_backoff\": {\n unit: \"number\",\n title: \"DCP XDCR Backoffs\",\n desc: \"Number of backoffs for XDCR DCP connections\"\n },\n \"ep_dcp_xdcr_count\": {\n unit: \"number\",\n title: \"DCP XDCR Connections\",\n desc: \"Number of internal XDCR DCP connections in this bucket (measured from ep_dcp_xdcr_count)\"\n },\n \"ep_dcp_xdcr_items_remaining\": {\n unit: \"number\",\n title: \"DCP XDCR Items Remaining\",\n desc: \"Number of items remaining to be sent to consumer in this bucket (measured from ep_dcp_xdcr_items_remaining)\"\n },\n \"ep_dcp_xdcr_items_sent\": {\n unit: \"number/sec\",\n title: \"DCP XDCR Items Sent\",\n desc: \"Number of items per second being sent for a producer for this bucket (measured from ep_dcp_xdcr_items_sent)\"\n },\n \"ep_dcp_xdcr_producer_count\": {\n unit: \"number\",\n title: \"DCP XDCR Senders\",\n desc: \"Number of XDCR senders for this bucket (measured from ep_dcp_xdcr_producer_count)\"\n },\n \"ep_dcp_xdcr_total_bytes\": {\n unit: \"bytes/sec\",\n title: \"DCP XDCR Drain Rate\",\n desc: \"Number of bytes per second being sent for XDCR DCP connections for this bucket (measured from ep_dcp_xdcr_total_bytes)\"\n },\n \"ep_diskqueue_drain\": {\n unit: \"number/sec\",\n title: \"Disk Queue Total Drain Rate\",\n desc: \"Total number of items per second being written to disk in this bucket (measured from ep_diskqueue_drain)\"\n },\n \"ep_diskqueue_fill\": {\n unit: \"number/sec\",\n title: \"Disk Queue Total Fill Rate\",\n desc: \"Total number of items per second being put on the disk queue in this bucket (measured from ep_diskqueue_fill)\"\n },\n \"ep_diskqueue_items\": {\n unit: \"number\",\n title: \"Disk Queue Total Items\",\n desc: \"Total number of items waiting (in queue) to be written to disk in this bucket (measured from ep_diskqueue_items)\"\n },\n \"ep_kv_size\": {\n unit: \"bytes\",\n title: \"User Data in RAM\",\n desc: \"Total amount of user data cached in RAM in this bucket. (measured from ep_kv_size)\"\n },\n \"ep_mem_high_wat\": {\n unit: \"bytes\",\n title: \"High Water Mark\",\n desc: \"High water mark (in bytes) for auto-evictions. (measured from ep_mem_high_wat)\"\n },\n \"ep_mem_low_wat\": {\n unit: \"bytes\",\n title: \"Low Water Mark\",\n desc: \"Low water mark (in bytes) for auto-evictions. (measured from ep_mem_low_wat)\"\n },\n \"ep_meta_data_memory\": {\n unit: \"bytes\",\n title: \"Total Metadata in RAM\",\n desc: \"Bytes of item metadata consuming RAM in this bucket (measured from ep_meta_data_memory)\"\n },\n \"ep_num_ops_del_meta\": {\n unit: \"number/sec\",\n title: \"XDCR Incoming Delete Rate\",\n desc: \"Number of delete operations per second for this bucket as the target for XDCR. (measured from ep_num_ops_del_meta)\"\n },\n \"ep_num_ops_get_meta\": {\n unit: \"number/sec\",\n title: \"XDCR Incoming Metadata Read Rate\",\n desc: \"Number of metadata read operations per second for this bucket as the target for XDCR. (measured from ep_num_ops_get_meta)\"\n },\n \"ep_num_ops_set_meta\": {\n unit: \"number/sec\",\n title: \"XDCR Incoming Set Rate\",\n desc: \"Number of set operations per second for this bucket as the target for XDCR. (measured from ep_num_ops_set_meta)\"\n },\n \"ep_num_value_ejects\": {\n unit: \"number/sec\",\n title: \"Ejection Rate\",\n desc: \"Number of items per second being ejected to disk in this bucket. (measured from ep_num_value_ejects)\"\n },\n \"ep_ops_create\": {\n unit: \"number/sec\",\n title: \"Total Disk Create Rate\",\n desc: \"Number of new items created on disk per second for this bucket. (measured from vb_active_ops_create + vb_replica_ops_create + vb_pending_ops_create)\"\n },\n \"ep_ops_update\": {\n unit: \"number/sec\",\n title: \"Disk Update Rate\",\n desc: \"Number of items updated on disk per second for this bucket. (measured from vb_active_ops_update + vb_replica_ops_update + vb_pending_ops_update)\"\n },\n \"ep_replica_ahead_exceptions\": {\n unit: \"number/sec\",\n title: \"Replica Ahead Exception Rate\",\n desc: \"Total number of ahead exceptions (when timestamp drift between mutations and local time has exceeded 5000000 \u03BCs) per second for all replica vBuckets.\"\n },\n \"ep_tmp_oom_errors\": {\n unit: \"number/sec\",\n title: \"Temp OOM Rate\",\n desc: \"Number of back-offs sent per second to client SDKs due to \\\"out of memory\\\" situations from this bucket. (measured from ep_tmp_oom_errors)\"\n },\n \"ep_vb_total\": {\n unit: \"number\",\n title: \"vBuckets Total\",\n desc: \"Total number of vBuckets for this bucket. (measured from ep_vb_total)\"\n },\n \"evictions\": {\n unit: \"number/sec\",\n title: \"Eviction Rate\",\n desc: \"Number of items per second evicted from this bucket. (measured from evictions)\"\n },\n \"get_hits\": {\n unit: \"number/sec\",\n title: \"Get Hit Rate\",\n desc: \"Number of get operations per second for data that this bucket contains. (measured from get_hits)\"\n },\n \"get_misses\": {\n unit: \"number/sec\",\n title: \"Get Miss Rate\",\n desc: \"Number of get operations per second for data that this bucket does not contain. (measured from get_misses)\",\n },\n \"incr_hits\": {\n unit: \"number/sec\",\n title: \"Incr Hit Rate\",\n desc: \"Number of increment operations per second for data that this bucket contains. (measured from incr_hits)\"\n },\n \"incr_misses\": {\n unit: \"number/sec\",\n title: \"Incr Miss Rate\",\n desc: \"Number of increment operations per second for data that this bucket does not contain. (measured from incr_misses)\"\n },\n \"mem_used\": {\n unit: \"bytes\",\n title: \"Data Total RAM Used\",\n desc: \"Total memory used in bytes. (as measured from mem_used)\"\n },\n \"ops\": {\n unit: \"number/sec\",\n title: \"Total Ops\",\n desc: \"Total operations per second (including XDCR) to this bucket. (measured from cmd_get + cmd_set + incr_misses + incr_hits + decr_misses + decr_hits + delete_misses + delete_hits + ep_num_ops_del_meta + ep_num_ops_get_meta + ep_num_ops_set_meta)\"\n },\n \"vb_active_eject\": {\n unit: \"number/sec\",\n title: \"Active Ejection Rate\",\n desc: \"Number of items per second being ejected to disk from active vBuckets in this bucket. (measured from vb_active_eject)\"\n },\n \"vb_active_itm_memory\": {\n unit: \"bytes\",\n title: \"Active User Data in RAM\",\n desc: \"Amount of active user data cached in RAM in this bucket. (measured from vb_active_itm_memory)\"\n },\n \"vb_active_meta_data_memory\": {\n unit: \"bytes\",\n title: \"Active Metadata in RAM\",\n desc: \"Amount of active item metadata consuming RAM in this bucket. (measured from vb_active_meta_data_memory)\"\n },\n \"vb_active_num\": {\n unit: \"number\",\n title: \"vBuckets Active\",\n desc: \"Number of active vBuckets in this bucket. (measured from vb_active_num)\"\n },\n \"vb_active_ops_create\": {\n unit: \"number/sec\",\n title: \"Active Create Rate\",\n desc: \"New items per second being inserted into active vBuckets in this bucket. (measured from vb_active_ops_create)\"\n },\n \"vb_active_queue_drain\": {\n unit: \"number/sec\",\n title: \"Disk Queue Active Drain Rate\",\n desc: \"Number of active items per second being written to disk in this bucket. (measured from vb_active_queue_drain)\"\n },\n \"vb_active_queue_fill\": {\n unit: \"number/sec\",\n title: \"Disk Queue Active Fill Rate\",\n desc: \"Number of active items per second being put on the active item disk queue in this bucket. (measured from vb_active_queue_fill)\"\n },\n \"vb_active_queue_size\": {\n unit: \"number\",\n title: \"Disk Queue Active Items\",\n desc: \"Number of active items waiting to be written to disk in this bucket. (measured from vb_active_queue_size)\"\n },\n \"vb_active_sync_write_accepted_count\": {\n unit: \"number/sec\",\n title: \"Accepted Sync Writes Rate\",\n desc: \"Number of accepted synchronous write per second into active vBuckets in this bucket. (measured from vb_active_sync_write_accepted_count)\"\n },\n \"vb_active_sync_write_committed_count\": {\n unit: \"number/sec\",\n title: \"Committed Sync Writes Rate\",\n desc: \"Number of committed synchronous writes per second into active vBuckets in this bucket. (measured from vb_active_sync_write_committed_count)\"\n },\n \"vb_active_sync_write_aborted_count\": {\n unit: \"number/sec\",\n title: \"Aborted Sync Writes Rate\",\n desc: \"Number of aborted synchronous writes per second into active vBuckets in this bucket. (measured from vb_active_sync_write_aborted_count)\"\n },\n \"vb_pending_curr_items\": {\n unit: \"number\",\n title: \"Pending Items\",\n desc: \"Number of items in pending vBuckets in this bucket. Should be transient during rebalancing. (measured from vb_pending_curr_items)\"\n },\n \"vb_pending_eject\": {\n unit: \"number/sec\",\n title: \"Pending Ejection Rate\",\n desc: \"Number of items per second being ejected to disk from pending vBuckets in this bucket. Should be transient during rebalancing. (measured from vb_pending_eject)\"\n },\n \"vb_pending_itm_memory\": {\n unit: \"bytes\",\n title: \"Pending User Data in RAM\",\n desc: \"Amount of pending user data cached in RAM in this bucket. Should be transient during rebalancing. (measured from vb_pending_itm_memory)\"\n },\n \"vb_pending_meta_data_memory\": {\n unit: \"bytes\",\n title: \"Pending Metadata in RAM\",\n desc: \"Amount of pending item metadata consuming RAM in this bucket. Should be transient during rebalancing. (measured from vb_pending_meta_data_memory)\"\n },\n \"vb_pending_num\": {\n unit: \"number\",\n title: \"vBuckets Pending\",\n desc: \"Number of pending vBuckets in this bucket. Should be transient during rebalancing. (measured from vb_pending_num)\"\n },\n \"vb_pending_ops_create\": {\n unit: \"number/sec\",\n title: \"Pending Create Rate\",\n desc: \"New items per second being instead into pending vBuckets in this bucket. Should be transient during rebalancing. (measured from vb_pending_ops_create)\"\n },\n \"vb_pending_queue_drain\": {\n unit: \"number/sec\",\n title: \"Disk Queue Pending Drain Rate\",\n desc: \"Number of pending items per second being written to disk in this bucket. Should be transient during rebalancing. (measured from vb_pending_queue_drain)\"\n },\n \"vb_pending_queue_fill\": {\n unit: \"number/sec\",\n title: \"Disk Queue Pending Fill Rate\",\n desc: \"Number of pending items per second being put on the pending item disk queue in this bucket. Should be transient during rebalancing (measured from vb_pending_queue_fill)\"\n },\n \"vb_pending_queue_size\": {\n unit: \"number\",\n title: \"Disk Queue Pending Items\",\n desc: \"Number of pending items waiting to be written to disk in this bucket and should be transient during rebalancing (measured from vb_pending_queue_size)\"\n },\n \"vb_replica_curr_items\": {\n unit: \"number\",\n title: \"Replica Items\",\n desc: \"Number of items in replica vBuckets in this bucket. (measured from vb_replica_curr_items)\"\n },\n \"vb_replica_eject\": {\n unit: \"number/sec\",\n title: \"Replica Ejection Rate\",\n desc: \"Number of items per second being ejected to disk from replica vBuckets in this bucket. (measured from vb_replica_eject)\"\n },\n \"vb_replica_itm_memory\": {\n unit: \"bytes\",\n title: \"Replica User Data in RAM\",\n desc: \"Amount of replica user data cached in RAM in this bucket. (measured from vb_replica_itm_memory)\"\n },\n \"vb_replica_meta_data_memory\": {\n unit: \"bytes\",\n title: \"Replica Metadata in RAM\",\n desc: \"Amount of replica item metadata consuming in RAM in this bucket. (measured from vb_replica_meta_data_memory)\"\n },\n \"vb_replica_num\": {\n unit: \"number\",\n title: \"vBuckets Replica\",\n desc: \"Number of replica vBuckets in this bucket. (measured from vb_replica_num)\"\n },\n \"vb_replica_ops_create\": {\n unit: \"number/sec\",\n title: \"Replica Item Create Rate\",\n desc: \"New items per second being inserted into \\\"replica\\\" vBuckets in this bucket (measured from vb_replica_ops_create\"\n },\n \"vb_replica_queue_drain\": {\n unit: \"number/sec\",\n title: \"Disk Queue Replica Drain Rate\",\n desc: \"Number of replica items per second being written to disk in this bucket (measured from vb_replica_queue_drain)\"\n },\n \"vb_replica_queue_fill\": {\n unit: \"number/sec\",\n title: \"Disk Queue Replica Fill Rate\",\n desc: \"Number of replica items per second being put on the replica item disk queue in this bucket (measured from vb_replica_queue_fill)\"\n },\n \"vb_replica_queue_size\": {\n unit: \"number\",\n title: \"Disk Queue Replica Items\",\n desc: \"Number of replica items waiting to be written to disk in this bucket (measured from vb_replica_queue_size)\"\n },\n \"xdc_ops\": {\n unit: \"number/sec\",\n title: \"XDCR Incoming Op Rate\",\n desc: \"Number of incoming XDCR operations per second for this bucket. (measured from xdc_ops)\"\n },\n \"@items\": {\n \"accesses\": {\n unit: \"number/sec\",\n title: \"Views Read Rate\",\n desc: \"Traffic to the views in this design doc.\"\n },\n \"data_size\": {\n unit: \"bytes\",\n title: \"Views Data Size\",\n desc: \"Bytes stored in memory for views in this design doc.\"\n },\n \"disk_size\": {\n unit: \"bytes\",\n title: \"Views Disk Size\",\n desc: \"Bytes stored on disk for views in this design doc.\"\n }\n }\n },\n\n \"@index\":{\n \"index_memory_quota\": null, //able in system but not in builder\n \"index_memory_used\": null,\n \"index_ram_percent\": { //doesn't exist in prometheus\n unit: \"percent\",\n title: \"Index RAM Quota Used\",\n desc: \"Percentage of Index RAM quota in use across all indexes on this server.\"\n },\n \"index_remaining_ram\": {\n unit: \"bytes\",\n title: \"Index RAM Quota Available\",\n desc: \"Bytes of Index RAM quota still available on this server.\"\n }\n },\n\n \"@index-\":{\n \"@items\": {\n \"num_docs_pending+queued\": {\n unit: \"number\",\n title: \"Index Mutations Remaining\",\n desc: \"Number of documents pending to be indexed. Per index.\"\n },\n \"num_docs_indexed\": {\n unit: \"number/sec\",\n title: \"Index Drain Rate\",\n desc: \"Number of documents indexed by the indexer per second. Per index.\"\n },\n \"index_resident_percent\": {\n unit: \"percent\",\n title: \"Index Resident Percent\",\n desc: \"Percentage of index data resident in memory. Per index.\"\n },\n \"memory_used\": {\n unit: \"bytes\",\n title: \"Index RAM Used\",\n desc: \"Bytes in memory for this index. Per index.\"\n },\n \"items_count\": {\n unit: \"number\",\n title: \"Indexed Items\",\n desc: \"Current total indexed documents. Per index.\"\n },\n \"data_size\": {\n unit: \"bytes\",\n title: \"Index Data Size\",\n desc: \"Bytes of data in this index. Per index.\"\n },\n \"disk_size\": {\n unit: \"bytes\",\n title: \"Index Disk Size\",\n desc: \"Bytes on disk for this index. Per index.\"\n },\n \"avg_item_size\": {\n unit: \"bytes\",\n title: \"Index Item Size\",\n desc: \"Average size of each index item. Per index.\"\n },\n \"avg_scan_latency\": {\n unit: \"nanoseconds\",\n title: \"Index Scan Latency\",\n desc: \"Average time (in nanoseconds) to serve a scan request. Per index.\"\n },\n \"num_requests\": {\n unit: \"number/sec\",\n title: \"Index Request Rate\",\n desc: \"Number of requests served by the indexer per second. Per index.\"\n },\n \"num_rows_returned\": {\n unit: \"number/sec\",\n title: \"Index Scan Items\",\n desc: \"Number of index items scanned by the indexer per second. Per index.\"\n },\n \"scan_bytes_read\": {\n unit: \"number/sec\",\n title: \"Index Scan Bytes\",\n desc: \"Bytes per second read by a scan. Per index.\"\n },\n \"index_frag_percent\": {\n unit: \"percent\",\n title: \"Index Fragmentation\",\n desc: \"Percentage fragmentation of the index. Note: at small index sizes of less than a hundred kB, the static overhead of the index disk file will inflate the index fragmentation percentage. Per index.\"\n },\n \"cache_miss_ratio\": {\n unit: \"percent\",\n title: \"Index Cache Miss Ratio\",\n desc: \"Percentage of accesses to this index data from disk as opposed to RAM. (measured from cache_misses * 100 / (cache_misses + cache_hits))\"\n }\n },\n \"index/data_size\": {\n unit: \"bytes\",\n title: \"Index Total RAM Used\",\n desc: \"Bytes in memory used by Index across all indexes and buckets.\"\n },\n \"index/disk_size\": {\n unit: \"bytes\",\n title: \"Index Total Disk Size\",\n desc: \"Bytes on disk used by Index across all indexes and buckets.\"\n },\n \"index/fragmentation\": {\n unit: \"percent\",\n title: \"Index Total Fragmentation\",\n desc: \"Percentage fragmentation for all indexes. Note: at small index sizes of less than a hundred kB, the static overhead of the index disk file will inflate the index fragmentation percentage.\"\n },\n \"index/items_count\": {\n unit: \"number\",\n title: \"Index Doc Count\",\n desc: \"Current total number of indexed documents\"\n },\n \"index/memory_used\": {\n unit: \"bytes\",\n title: \"Index RAM Used\",\n desc: \"Total memory used by the index.\"\n },\n \"index/num_docs_indexed\": {\n unit: \"number/sec\",\n title: \"Indexing Rate\",\n desc: \"Number of documents indexed by the indexer per second.\"\n },\n \"index/num_requests\": {\n unit: \"number/sec\",\n title: \"Index Request Rate\",\n desc: \"Number of requests served by the indexer per second\"\n },\n \"index/num_rows_returned\": {\n unit: \"number/sec\",\n title: \"Index Total Scan Rate\",\n desc: \"Number of index items scanned by the indexer per second across all indexes.\"\n },\n \"index/scan_bytes_read\": {\n unit: \"bytes/sec\",\n title: \"Index Scan Bytes\",\n desc: \"Number of bytes/sec scanned by the index.\"\n }\n },\n\n \"@query\":{\n \"query_avg_req_time\": {\n unit: \"nanoseconds\",\n title: \"Query Request Time\",\n desc: \"Average end-to-end time to process a query (in seconds).\"\n },\n \"query_avg_svc_time\": {\n unit: \"nanoseconds\",\n title: \"Query Execution Time\",\n desc: \"Average time to execute a query (in seconds).\"\n },\n \"query_avg_response_size\": {\n unit: \"bytes\",\n title: \"Query Result Size\",\n desc: \"Average size (in bytes) of the data returned by a query\"\n },\n \"query_avg_result_count\": {\n unit: \"number\",\n title: \"Query Result Items\",\n desc: \"Average number of results (items/documents) returned by a query.\"\n },\n \"query_errors\": {\n unit: \"number/sec\",\n title: \"N1QL Error Rate\",\n desc: \"Number of N1QL errors returned per second.\"\n },\n \"query_invalid_requests\": {\n unit: \"number/sec\",\n title: \"N1QL Invalid Request Rate\",\n desc: \"Number of requests for unsupported endpoints per second, specifically HTTP requests for all endpoints not supported by the query engine. For example, a request for http://localhost:8093/foo will be included. Potentially useful in identifying DOS attacks.\"\n },\n \"query_requests\": {\n unit: \"number/sec\",\n title: \"N1QL Request Rate\",\n desc: \"Number of N1QL requests processed per second.\"\n },\n \"query_requests_1000ms\": {\n unit: \"number/sec\",\n title: \"Queries > 1000ms\",\n desc: \"Number of queries that take longer than 1000 ms per second\"\n },\n \"query_requests_250ms\": {\n unit: \"number/sec\",\n title: \"Queries > 250ms\",\n desc: \"Number of queries that take longer than 250 ms per second.\"\n },\n \"query_requests_5000ms\": {\n unit: \"number/sec\",\n title: \"Queries > 5000ms\",\n desc: \"Number of queries that take longer than 5000 ms per second.\"\n },\n \"query_requests_500ms\": {\n unit: \"number/sec\",\n title: \"Queries > 500ms\",\n desc: \"Number of queries that take longer than 500 ms per second.\"\n },\n \"query_selects\": {\n unit: \"number/sec\",\n title: \"N1QL Select Rate\",\n desc: \"Number of N1QL selects processed per second.\"\n },\n \"query_warnings\": {\n unit: \"number/sec\",\n title: \"N1QL Warning Rate\",\n desc: \"Number of N1QL warnings returned per second.\"\n }\n },\n\n \"@fts-\": {\n \"@items\": {\n \"avg_queries_latency\": {\n unit: \"millisecond\",\n title: \"Search Query Latency\",\n desc: \"Average milliseconds to answer a Search query. Per index. (measured from avg_queries_latency)\"\n },\n \"doc_count\": {\n unit: \"number\",\n title: \"Search Docs\",\n desc: \"Number of documents examined. Per index. (measured from doc_count)\"\n },\n \"num_bytes_used_disk\": {\n unit: \"bytes\",\n title:\"Search Disk Size\",\n desc: \"Bytes on disk for this index. Per index. (measured from num_bytes_used_disk)\"\n },\n \"num_files_on_disk\": {\n unit: \"number\",\n title: \"Search Disk Files\",\n desc: \"Number of search files on disk across all partitions. (measured from num_files_on_disk)\"\n },\n \"num_root_memorysegments\": {\n unit: \"number\",\n title: \"Search Memory Segments\",\n desc: \"Number of memory segments in the index across all partitions. (measured from num_root_memorysegments)\"\n },\n \"num_root_filesegments\": {\n unit: \"number\",\n title: \"Search Disk Segments\",\n desc: \"Number of file segments in the index across all partitions. (measured from num_root_filesegments)\"\n },\n \"num_mutations_to_index\": {\n unit: \"number\",\n title: \"Search Mutations Remaining\",\n desc: \"Number of mutations not yet indexed. Per index. (measured from num_mutations_to_index)\"\n },\n \"num_pindexes_actual\": {\n unit: \"number\",\n title: \"Search Partitions\",\n desc: \"Number of index partitions. Per index. (including replica partitions, measured from num_pindexes_actual)\"\n },\n \"num_pindexes_target\": {\n unit: \"number\",\n title: \"Search Partitions Expected\",\n desc: \"Number of index partitions expected. Per index. (including replica partitions, measured from num_pindexes_target)\"\n },\n \"num_recs_to_persist\": {\n unit: \"number\",\n title: \"Search Records to Persist\",\n desc: \"Number of index records not yet persisted to disk. Per index. (measured from num_recs_to_persist)\"\n },\n \"total_bytes_indexed\": {\n unit: \"bytes/sec\",\n title: \"Search Index Rate\",\n desc: \"Bytes of plain text indexed per second. Per index. (measured from total_bytes_indexed)\"\n },\n \"total_bytes_query_results\": {\n unit: \"bytes/sec\",\n title: \"Search Result Rate\",\n desc: \"Bytes returned in results per second. Per index. (measured from total_bytes_query_results)\"\n },\n \"total_compaction_written_bytes\": {\n unit: \"bytes/sec\",\n title: \"Search Compaction Rate\",\n desc: \"Compaction bytes written per second. Per index. (measured from total_compaction_written_bytes)\",\n },\n \"total_queries\": {\n unit: \"number/sec\",\n title: \"Search Query Rate\",\n desc: \"Number of queries per second. Per index. (measured from total_queries)\"\n },\n \"total_queries_error\": {\n unit: \"number/sec\",\n title: \"Search Query Error Rate\",\n desc: \"Number of queries per second (including timeouts) that resulted in errors. Per index. (measured from total_queries_error)\"\n },\n \"total_queries_slow\": {\n unit: \"number/sec\",\n title: \"Search Slow Queries\",\n desc: \"Number of slow queries (> 5s to run) per second. Per index. (measured from total_queries_slow)\"\n },\n \"total_queries_timeout\": {\n unit: \"number/sec\",\n title: \"Search Query Timeout Rate\",\n desc: \"Number of queries that timeout per second. Per index. (measured from total_queries_timeout)\"\n },\n \"total_term_searchers\": {\n unit: \"number/sec\",\n title: \"Term Searchers Start Rate\",\n desc: \"Number of term searchers started per second. Per index. (measured from total_term_searchers)\"\n }\n },\n \"fts/num_bytes_used_disk\": {\n unit: \"bytes\",\n title: \"Search Total Disk Used\",\n desc: \"Bytes stored on disk for all Search indexes in this bucket.\"\n },\n \"fts/num_files_on_disk\": {\n unit: \"number\",\n title: \"Search Disk Files\",\n desc: \"Number of search files on disk across all partitions.\"\n },\n \"fts/total_bytes_indexed\": {\n unit: \"bytes/sec\",\n title: \"Search Index Rate\",\n desc: \"Search bytes indexed per second for all Search indexes in this bucket.\"\n },\n \"fts/total_queries\": {\n unit: \"number/sec\",\n title: \"Search Query Rate\",\n desc: \"Search queries per second for all Search indexes in this bucket.\"\n }\n },\n\n \"@fts\": {\n \"fts_num_bytes_used_ram\": {\n unit: \"bytes\",\n title: \"Search Total RAM Used\",\n desc: \"Bytes of RAM used by Search across all indexes and all buckets on this server.\"\n },\n \"fts_total_queries_rejected_by_herder\": {\n unit: \"number\",\n title: \"Search Queries Rejected\",\n desc: \"Number of queries rejected by throttler due to high memory consumption.\"\n },\n \"fts_curr_batches_blocked_by_herder\": {\n unit: \"number\",\n title: \"DCP batches blocked by FTS throttler\",\n desc: \"DCP batches blocked by throttler due to high memory consumption.\"\n }\n },\n\n \"@cbas-\":{\n \"cbas/failed_at_parser_records_count_total\": {\n unit: \"number\",\n title: \"Analytics Parse Fail Since Connect\",\n desc: \"Number of records Analytics failed to parse during bucket synchronization - since last bucket connect.\"\n },\n \"cbas/incoming_records_count\": {\n unit: \"number/sec\",\n title: \"Analytics Ops Rate\",\n desc: \"Operations (gets + sets + deletes) per second processed by Analytics for this bucket.\"\n },\n \"cbas/incoming_records_count_total\": {\n unit: \"number\",\n title: \"Analytics Ops Since Connect\",\n desc: \"Number of operations (gets + sets + deletes) processed by Analytics for this bucket since last bucket connect.\"\n }\n },\n\n \"@cbas\":{\n \"cbas_disk_used\": {\n unit: \"bytes\",\n title: \"Analytics Total Disk Size\",\n desc: \"The total disk size used by Analytics.\"\n },\n \"cbas_gc_count\": {\n unit: \"number/sec\",\n title: \"Analytics Garbage Collection Rate\",\n desc: \"Number of JVM garbage collections per second for this Analytics node.\"\n },\n \"cbas_gc_time\": {\n unit: \"millisecond/sec\",\n title: \"Analytics Garbage Collection Time\",\n desc: \"The amount of time in milliseconds spent performing JVM garbage collections for Analytics node.\"\n },\n \"cbas_heap_used\": {\n unit: \"bytes\",\n title: \"Analytics Heap Used\",\n desc: \"Bytes of JVM heap used by Analytics on this server.\"\n },\n \"cbas_system_load_average\": {\n unit: \"number\",\n title: \"Analytics System Load\",\n desc: \"System load average for the last minute.\"\n },\n \"cbas_thread_count\": {\n unit: \"number\",\n title: \"Analytics Thread Count\",\n desc: \"Number of threads for Analytics node.\"\n },\n \"cbas_io_reads\": {\n unit: \"bytes/sec\",\n title: \"Analytics Read Rate\",\n desc: \"Number of disk bytes read on Analytics node per second.\"\n },\n \"cbas_io_writes\": {\n unit: \"bytes/sec\",\n title: \"Analytics Write Rate\",\n desc: \"Number of disk bytes written on Analytics node per second.\"\n }\n },\n\n \"@eventing\":{\n \"eventing/processed_count\": {\n unit: \"number\",\n title: \"Successful Function Invocations\",\n desc: \"Count of times the function was invoked successfully. Per function.\"\n },\n \"eventing/failed_count\": {\n unit: \"number\",\n title: \"Failed Function Invocations\",\n desc: \"Count of times the function invocation failed. Per function.\"\n },\n \"eventing/dcp_backlog\": {\n unit: \"number\",\n title: \"Eventing Backlog\",\n desc: \"Remaining mutations to be processed by the function. Per function.\"\n },\n \"eventing/timeout_count\": {\n unit: \"number\",\n title: \"Eventing Timeouts\",\n desc: \"Execution timeouts while processing mutations. Per function.\"\n }\n },\n\n \"@xdcr-\":{\n \"replication_changes_left\": {\n unit: \"number/sec\",\n title: \"XDCR Total Outbound Mutations\",\n desc: \"Number of mutations to be replicated to other clusters. (measured from replication_changes_left)\"\n },\n \"@items\": {\n \"percent_completeness\": {\n unit: \"percent\",\n title: \"XDCR Checked Ratio\",\n desc: \"Percentage of checked items out of all checked and to-be-replicated items. Per-replication. (measured from percent_completeness)\"\n },\n \"bandwidth_usage\": {\n unit: \"bytes/sec\",\n title: \"XDCR Replication Rate\",\n desc: \"Rate of replication in terms of bytes replicated per second. Per-replication. (measured from bandwidth_usage)\"\n },\n \"changes_left\": {\n unit: \"number\",\n title: \"XDCR Replication Mutations\",\n desc: \"Number of mutations to be replicated to other clusters. Per-replication. (measured from changes_left)\"\n },\n \"docs_failed_cr_source\": {\n unit: \"number\",\n title: \"XDCR Mutations Skipped\",\n desc: \"Number of mutations that failed conflict resolution on the source side and hence have not been replicated to other clusters. Per-replication. (measured from per-replication stat docs_failed_cr_source)\"\n },\n \"docs_filtered\": {\n unit: \"number/sec\",\n title: \"XDCR Mutations Filtered Rate\",\n desc: \"Number of mutations per second that have been filtered out and have not been replicated to other clusters. Per-replication. (measured from per-replication stat docs_filtered)\"\n },\n \"docs_written\": {\n unit: \"number\",\n title: \"XDCR Mutations Replicated\",\n desc: \"Number of mutations that have been replicated to other clusters. Per-replication. (measured from docs_written)\"\n },\n \"rate_doc_checks\": {\n unit: \"number/sec\",\n title: \"XDCR Doc Check Rate\",\n desc: \"Number of doc checks per second. Per-replication.\"\n },\n \"rate_doc_opt_repd\": {\n unit: \"number/sec\",\n title: \"XDCR Optimistic Replication Rate\",\n desc: \"Number of replicated mutations per second. Per-replication.\"\n },\n \"rate_received_from_dcp\": {\n unit: \"number/sec\",\n title: \"Doc Reception Rate\",\n desc: \"Rate of mutations received from dcp in terms of number of mutations per second. Per-replication.\"\n },\n \"rate_replicated\": {\n unit: \"number/sec\",\n title: \"XDCR Mutations Replicated Rate\",\n desc:\"Number of replicated mutations per second. Per-replication. (measured from rate_replicated)\"\n },\n \"wtavg_docs_latency\": {\n unit: \"millisecond\",\n title: \"XDCR Doc Batch Latency\",\n desc: \"Weighted average latency in ms of sending replicated mutations to remote cluster. Per-replication. (measured from wtavg_docs_latency)\"\n },\n \"wtavg_meta_latency\": {\n unit: \"millisecond\",\n title: \"XDCR Meta Batch Latency\",\n desc: \"Weighted average latency in ms of sending getMeta and waiting for a conflict solution result from remote cluster. Per-replication. (measured from wtavg_meta_latency)\"\n }\n }\n }\n }\n }\n}\n", "/*\nCopyright 2020-Present Couchbase, Inc.\n\nUse of this software is governed by the Business Source License included in\nthe file licenses/BSL-Couchbase.txt. As of the Change Date specified in that\nfile, in accordance with the Business Source License, use of this software will\nbe governed by the Apache License, Version 2.0, included in the file\nlicenses/APL2.txt.\n*/\n\nimport angular from \"angular\";\n\nimport mnStatsDescription from \"./mn_statistics_description.js\";\nimport mnPoolDefault from \"../components/mn_pool_default.js\";\n\nexport default \"mnStatisticsDescriptionService\";\n\nangular\n .module('mnStatisticsDescriptionService', [\n mnPoolDefault\n ])\n .factory('mnStatisticsDescriptionService', [\"$http\", \"$q\", \"mnPoolDefault\", mnStatisticsDescriptionFactory]);\n\nfunction mnStatisticsDescriptionFactory($http, $q, mnPoolDefault) {\n return {\n getStats: getStats,\n getKvGroups: getKvGroups,\n getStatsDescriptions: getStatsDescriptions,\n getStatsDump : getStatsDump\n };\n\n function getStats() {\n return mnPoolDefault.export.compat.atLeast70 ?\n mnStatsDescription[\"7.0\"].stats :\n mnStatsDescription[\"6.5\"].stats;\n }\n\n function getKvGroups() {\n return mnPoolDefault.export.compat.atLeast70 ?\n mnStatsDescription[\"7.0\"].kvGroups :\n mnStatsDescription[\"6.5\"].kvGroups;\n }\n\n function getStatsDescriptions(version) {\n return mnStatsDescription[version].stats;\n }\n\n function doGetStatMapping(section, stat) {\n return $http({\n url: '/_statsMapping/' + section + '/' + stat,\n method: 'GET'\n }).then(function (resp) {\n return resp.data;\n });\n }\n\n function doGetMetricsJSON() {\n return $http({\n url: '/ui/metrics/metrics.json',\n method: 'GET'\n }).then(function (resp) {\n var metrics = resp.data;\n var result = {};\n metrics.forEach(function (metric) {\n var name = metric['__name__'];\n if (name) {\n result[name] = metric;\n }\n });\n return result;\n });\n }\n\n function getStatMapping(section, statName) {\n if (section == '@xdcr-') {\n section += 'sourcebucketname';\n if (statName != 'replication_changes_left' && statName != 'percent_completeness') {\n statName = 'replications/*/sourcebucketname/targetbucketname/' + statName;\n }\n }\n else if (section == '@fts-') {\n section += 'bucketname';\n statName = '/fts/' + statName;\n }\n else if (section == '@index-') {\n section += 'bucketname';\n statName = '/index/' + statName;\n }\n else if (section == '@kv-') {\n section = 'bucketname';\n }\n else if (section.endsWith('-')) {\n section += 'bucketname';\n }\n return doGetStatMapping(section, statName);\n }\n\n function getUiStats(version) {\n var promises = [];\n\n var makeStat = function (sectionName, statName, perItem, statDetails) {\n var stat = {};\n stat[\"ui-name\"] = statName;\n stat[\"group\"] = sectionName;\n stat[\"per-item\"] = perItem;\n for (var k in statDetails) {\n stat[k] = statDetails[k];\n }\n if (version == \"6.5\") {\n let localStat = stat;\n promises.push(\n getStatMapping(sectionName, statName).then(function (resp) {\n localStat[\"mapping\"] = resp;\n }));\n }\n return stat;\n };\n var result = [];\n var statsDesc = getStatsDescriptions(version);\n for (var group in statsDesc) {\n var statsGroup = statsDesc[group];\n for (var key in statsGroup) {\n if (key == \"@items\") {\n for (var statName in statsGroup[key]) {\n result.push(makeStat(group, statName, true, statsGroup[key][statName]));\n }\n }\n else {\n result.push(makeStat(group, key, false, statsGroup[key]));\n }\n }\n }\n return $q.all(promises).then(function () {\n return result;\n });\n }\n\n function getByMetricName(uiStats) {\n var result = {};\n uiStats.forEach(function (stat) {\n var metric = stat['metric'];\n if (metric) {\n var name = metric['name'];\n if (name) {\n result[name] = stat;\n }\n }\n });\n return result;\n }\n\n function getStatsDump(version) {\n return $q.all([getUiStats(version), doGetMetricsJSON()]).then(function (resp) {\n var uiStats = resp[0];\n var metrics = resp[1];\n if (version == \"6.5\") {\n return uiStats;\n }\n var statsByName = getByMetricName(resp[0]);\n var result = [];\n for (var metricName in metrics) {\n var metric = metrics[metricName];\n var uiStat = statsByName[metricName];\n if (uiStat) {\n metric['ui'] = uiStat;\n }\n result.push(metric);\n }\n return result;\n });\n }\n}\n"], "mappings": "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", "names": [] }