Add ~200 more Couchbase metrics via Buckets endpoint (#9032)
* Couchbase new metrics for buckets * updated * update to simplify two different modes. * cleanup code * linter telling me to fix things I didn't do * add include/exclude filter * update sample config * appease the linter * Update README.md * make all metrics configurable, defaults as just 'basic bucket metrics' * check error in test
This commit is contained in:
parent
ffe92a7658
commit
470628e5db
|
|
@ -1,4 +1,6 @@
|
||||||
# Couchbase Input Plugin
|
# Couchbase Input Plugin
|
||||||
|
Couchbase is a distributed NoSQL database.
|
||||||
|
This plugin gets metrics for each Couchbase node, as well as detailed metrics for each bucket, for a given couchbase server.
|
||||||
|
|
||||||
## Configuration:
|
## Configuration:
|
||||||
|
|
||||||
|
|
@ -15,6 +17,9 @@
|
||||||
## If no protocol is specified, HTTP is used.
|
## If no protocol is specified, HTTP is used.
|
||||||
## If no port is specified, 8091 is used.
|
## If no port is specified, 8091 is used.
|
||||||
servers = ["http://localhost:8091"]
|
servers = ["http://localhost:8091"]
|
||||||
|
|
||||||
|
## Filter bucket fields to include only here.
|
||||||
|
# bucket_stats_included = ["quota_percent_used", "ops_per_sec", "disk_fetches", "item_count", "disk_used", "data_used", "mem_used"]
|
||||||
```
|
```
|
||||||
|
|
||||||
## Measurements:
|
## Measurements:
|
||||||
|
|
@ -35,7 +40,7 @@ Tags:
|
||||||
- cluster: whatever you called it in `servers` in the configuration, e.g.: `http://couchbase-0.example.com/`)
|
- cluster: whatever you called it in `servers` in the configuration, e.g.: `http://couchbase-0.example.com/`)
|
||||||
- bucket: the name of the couchbase bucket, e.g., `blastro-df`
|
- bucket: the name of the couchbase bucket, e.g., `blastro-df`
|
||||||
|
|
||||||
Fields:
|
Default bucket fields:
|
||||||
- quota_percent_used (unit: percent, example: 68.85424936294555)
|
- quota_percent_used (unit: percent, example: 68.85424936294555)
|
||||||
- ops_per_sec (unit: count, example: 5686.789686789687)
|
- ops_per_sec (unit: count, example: 5686.789686789687)
|
||||||
- disk_fetches (unit: count, example: 0.0)
|
- disk_fetches (unit: count, example: 0.0)
|
||||||
|
|
@ -44,6 +49,223 @@ Fields:
|
||||||
- data_used (unit: bytes, example: 212179309111.0)
|
- data_used (unit: bytes, example: 212179309111.0)
|
||||||
- mem_used (unit: bytes, example: 202156957464.0)
|
- mem_used (unit: bytes, example: 202156957464.0)
|
||||||
|
|
||||||
|
Additional fields that can be configured with the `bucket_stats_included` option:
|
||||||
|
- couch_total_disk_size
|
||||||
|
- couch_docs_fragmentation
|
||||||
|
- couch_views_fragmentation
|
||||||
|
- hit_ratio
|
||||||
|
- ep_cache_miss_rate
|
||||||
|
- ep_resident_items_rate
|
||||||
|
- vb_avg_active_queue_age
|
||||||
|
- vb_avg_replica_queue_age
|
||||||
|
- vb_avg_pending_queue_age
|
||||||
|
- vb_avg_total_queue_age
|
||||||
|
- vb_active_resident_items_ratio
|
||||||
|
- vb_replica_resident_items_ratio
|
||||||
|
- vb_pending_resident_items_ratio
|
||||||
|
- avg_disk_update_time
|
||||||
|
- avg_disk_commit_time
|
||||||
|
- avg_bg_wait_time
|
||||||
|
- avg_active_timestamp_drift
|
||||||
|
- avg_replica_timestamp_drift
|
||||||
|
- ep_dcp_views+indexes_count
|
||||||
|
- ep_dcp_views+indexes_items_remaining
|
||||||
|
- ep_dcp_views+indexes_producer_count
|
||||||
|
- ep_dcp_views+indexes_total_backlog_size
|
||||||
|
- ep_dcp_views+indexes_items_sent
|
||||||
|
- ep_dcp_views+indexes_total_bytes
|
||||||
|
- ep_dcp_views+indexes_backoff
|
||||||
|
- bg_wait_count
|
||||||
|
- bg_wait_total
|
||||||
|
- bytes_read
|
||||||
|
- bytes_written
|
||||||
|
- cas_badval
|
||||||
|
- cas_hits
|
||||||
|
- cas_misses
|
||||||
|
- cmd_get
|
||||||
|
- cmd_lookup
|
||||||
|
- cmd_set
|
||||||
|
- couch_docs_actual_disk_size
|
||||||
|
- couch_docs_data_size
|
||||||
|
- couch_docs_disk_size
|
||||||
|
- couch_spatial_data_size
|
||||||
|
- couch_spatial_disk_size
|
||||||
|
- couch_spatial_ops
|
||||||
|
- couch_views_actual_disk_size
|
||||||
|
- couch_views_data_size
|
||||||
|
- couch_views_disk_size
|
||||||
|
- couch_views_ops
|
||||||
|
- curr_connections
|
||||||
|
- curr_items
|
||||||
|
- curr_items_tot
|
||||||
|
- decr_hits
|
||||||
|
- decr_misses
|
||||||
|
- delete_hits
|
||||||
|
- delete_misses
|
||||||
|
- disk_commit_count
|
||||||
|
- disk_commit_total
|
||||||
|
- disk_update_count
|
||||||
|
- disk_update_total
|
||||||
|
- disk_write_queue
|
||||||
|
- ep_active_ahead_exceptions
|
||||||
|
- ep_active_hlc_drift
|
||||||
|
- ep_active_hlc_drift_count
|
||||||
|
- ep_bg_fetched
|
||||||
|
- ep_clock_cas_drift_threshold_exceeded
|
||||||
|
- ep_data_read_failed
|
||||||
|
- ep_data_write_failed
|
||||||
|
- ep_dcp_2i_backoff
|
||||||
|
- ep_dcp_2i_count
|
||||||
|
- ep_dcp_2i_items_remaining
|
||||||
|
- ep_dcp_2i_items_sent
|
||||||
|
- ep_dcp_2i_producer_count
|
||||||
|
- ep_dcp_2i_total_backlog_size
|
||||||
|
- ep_dcp_2i_total_bytes
|
||||||
|
- ep_dcp_cbas_backoff
|
||||||
|
- ep_dcp_cbas_count
|
||||||
|
- ep_dcp_cbas_items_remaining
|
||||||
|
- ep_dcp_cbas_items_sent
|
||||||
|
- ep_dcp_cbas_producer_count
|
||||||
|
- ep_dcp_cbas_total_backlog_size
|
||||||
|
- ep_dcp_cbas_total_bytes
|
||||||
|
- ep_dcp_eventing_backoff
|
||||||
|
- ep_dcp_eventing_count
|
||||||
|
- ep_dcp_eventing_items_remaining
|
||||||
|
- ep_dcp_eventing_items_sent
|
||||||
|
- ep_dcp_eventing_producer_count
|
||||||
|
- ep_dcp_eventing_total_backlog_size
|
||||||
|
- ep_dcp_eventing_total_bytes
|
||||||
|
- ep_dcp_fts_backoff
|
||||||
|
- ep_dcp_fts_count
|
||||||
|
- ep_dcp_fts_items_remaining
|
||||||
|
- ep_dcp_fts_items_sent
|
||||||
|
- ep_dcp_fts_producer_count
|
||||||
|
- ep_dcp_fts_total_backlog_size
|
||||||
|
- ep_dcp_fts_total_bytes
|
||||||
|
- ep_dcp_other_backoff
|
||||||
|
- ep_dcp_other_count
|
||||||
|
- ep_dcp_other_items_remaining
|
||||||
|
- ep_dcp_other_items_sent
|
||||||
|
- ep_dcp_other_producer_count
|
||||||
|
- ep_dcp_other_total_backlog_size
|
||||||
|
- ep_dcp_other_total_bytes
|
||||||
|
- ep_dcp_replica_backoff
|
||||||
|
- ep_dcp_replica_count
|
||||||
|
- ep_dcp_replica_items_remaining
|
||||||
|
- ep_dcp_replica_items_sent
|
||||||
|
- ep_dcp_replica_producer_count
|
||||||
|
- ep_dcp_replica_total_backlog_size
|
||||||
|
- ep_dcp_replica_total_bytes
|
||||||
|
- ep_dcp_views_backoff
|
||||||
|
- ep_dcp_views_count
|
||||||
|
- ep_dcp_views_items_remaining
|
||||||
|
- ep_dcp_views_items_sent
|
||||||
|
- ep_dcp_views_producer_count
|
||||||
|
- ep_dcp_views_total_backlog_size
|
||||||
|
- ep_dcp_views_total_bytes
|
||||||
|
- ep_dcp_xdcr_backoff
|
||||||
|
- ep_dcp_xdcr_count
|
||||||
|
- ep_dcp_xdcr_items_remaining
|
||||||
|
- ep_dcp_xdcr_items_sent
|
||||||
|
- ep_dcp_xdcr_producer_count
|
||||||
|
- ep_dcp_xdcr_total_backlog_size
|
||||||
|
- ep_dcp_xdcr_total_bytes
|
||||||
|
- ep_diskqueue_drain
|
||||||
|
- ep_diskqueue_fill
|
||||||
|
- ep_diskqueue_items
|
||||||
|
- ep_flusher_todo
|
||||||
|
- ep_item_commit_failed
|
||||||
|
- ep_kv_size
|
||||||
|
- ep_max_size
|
||||||
|
- ep_mem_high_wat
|
||||||
|
- ep_mem_low_wat
|
||||||
|
- ep_meta_data_memory
|
||||||
|
- ep_num_non_resident
|
||||||
|
- ep_num_ops_del_meta
|
||||||
|
- ep_num_ops_del_ret_meta
|
||||||
|
- ep_num_ops_get_meta
|
||||||
|
- ep_num_ops_set_meta
|
||||||
|
- ep_num_ops_set_ret_meta
|
||||||
|
- ep_num_value_ejects
|
||||||
|
- ep_oom_errors
|
||||||
|
- ep_ops_create
|
||||||
|
- ep_ops_update
|
||||||
|
- ep_overhead
|
||||||
|
- ep_queue_size
|
||||||
|
- ep_replica_ahead_exceptions
|
||||||
|
- ep_replica_hlc_drift
|
||||||
|
- ep_replica_hlc_drift_count
|
||||||
|
- ep_tmp_oom_errors
|
||||||
|
- ep_vb_total
|
||||||
|
- evictions
|
||||||
|
- get_hits
|
||||||
|
- get_misses
|
||||||
|
- incr_hits
|
||||||
|
- incr_misses
|
||||||
|
- mem_used
|
||||||
|
- misses
|
||||||
|
- ops
|
||||||
|
- timestamp
|
||||||
|
- vb_active_eject
|
||||||
|
- vb_active_itm_memory
|
||||||
|
- vb_active_meta_data_memory
|
||||||
|
- vb_active_num
|
||||||
|
- vb_active_num_non_resident
|
||||||
|
- vb_active_ops_create
|
||||||
|
- vb_active_ops_update
|
||||||
|
- vb_active_queue_age
|
||||||
|
- vb_active_queue_drain
|
||||||
|
- vb_active_queue_fill
|
||||||
|
- vb_active_queue_size
|
||||||
|
- vb_active_sync_write_aborted_count
|
||||||
|
- vb_active_sync_write_accepted_count
|
||||||
|
- vb_active_sync_write_committed_count
|
||||||
|
- vb_pending_curr_items
|
||||||
|
- vb_pending_eject
|
||||||
|
- vb_pending_itm_memory
|
||||||
|
- vb_pending_meta_data_memory
|
||||||
|
- vb_pending_num
|
||||||
|
- vb_pending_num_non_resident
|
||||||
|
- vb_pending_ops_create
|
||||||
|
- vb_pending_ops_update
|
||||||
|
- vb_pending_queue_age
|
||||||
|
- vb_pending_queue_drain
|
||||||
|
- vb_pending_queue_fill
|
||||||
|
- vb_pending_queue_size
|
||||||
|
- vb_replica_curr_items
|
||||||
|
- vb_replica_eject
|
||||||
|
- vb_replica_itm_memory
|
||||||
|
- vb_replica_meta_data_memory
|
||||||
|
- vb_replica_num
|
||||||
|
- vb_replica_num_non_resident
|
||||||
|
- vb_replica_ops_create
|
||||||
|
- vb_replica_ops_update
|
||||||
|
- vb_replica_queue_age
|
||||||
|
- vb_replica_queue_drain
|
||||||
|
- vb_replica_queue_fill
|
||||||
|
- vb_replica_queue_size
|
||||||
|
- vb_total_queue_age
|
||||||
|
- xdc_ops
|
||||||
|
- allocstall
|
||||||
|
- cpu_cores_available
|
||||||
|
- cpu_irq_rate
|
||||||
|
- cpu_stolen_rate
|
||||||
|
- cpu_sys_rate
|
||||||
|
- cpu_user_rate
|
||||||
|
- cpu_utilization_rate
|
||||||
|
- hibernated_requests
|
||||||
|
- hibernated_waked
|
||||||
|
- mem_actual_free
|
||||||
|
- mem_actual_used
|
||||||
|
- mem_free
|
||||||
|
- mem_limit
|
||||||
|
- mem_total
|
||||||
|
- mem_used_sys
|
||||||
|
- odp_report_failed
|
||||||
|
- rest_requests
|
||||||
|
- swap_total
|
||||||
|
- swap_used
|
||||||
|
|
||||||
|
|
||||||
## Example output
|
## Example output
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,24 @@
|
||||||
package couchbase
|
package couchbase
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"net/http"
|
||||||
"regexp"
|
"regexp"
|
||||||
"sync"
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
couchbase "github.com/couchbase/go-couchbase"
|
couchbase "github.com/couchbase/go-couchbase"
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
|
"github.com/influxdata/telegraf/filter"
|
||||||
"github.com/influxdata/telegraf/plugins/inputs"
|
"github.com/influxdata/telegraf/plugins/inputs"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Couchbase struct {
|
type Couchbase struct {
|
||||||
Servers []string
|
Servers []string
|
||||||
|
|
||||||
|
BucketStatsIncluded []string `toml:"bucket_stats_included"`
|
||||||
|
|
||||||
|
bucketInclude filter.Filter
|
||||||
}
|
}
|
||||||
|
|
||||||
var sampleConfig = `
|
var sampleConfig = `
|
||||||
|
|
@ -24,33 +32,35 @@ var sampleConfig = `
|
||||||
## If no protocol is specified, HTTP is used.
|
## If no protocol is specified, HTTP is used.
|
||||||
## If no port is specified, 8091 is used.
|
## If no port is specified, 8091 is used.
|
||||||
servers = ["http://localhost:8091"]
|
servers = ["http://localhost:8091"]
|
||||||
|
|
||||||
|
## Filter fields to include only here.
|
||||||
|
# bucket_stats_included = ["quota_percent_used", "ops_per_sec", "disk_fetches", "item_count", "disk_used", "data_used", "mem_used"]
|
||||||
`
|
`
|
||||||
|
|
||||||
var regexpURI = regexp.MustCompile(`(\S+://)?(\S+\:\S+@)`)
|
var regexpURI = regexp.MustCompile(`(\S+://)?(\S+\:\S+@)`)
|
||||||
|
var client = &http.Client{Timeout: 10 * time.Second}
|
||||||
|
|
||||||
func (r *Couchbase) SampleConfig() string {
|
func (cb *Couchbase) SampleConfig() string {
|
||||||
return sampleConfig
|
return sampleConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Couchbase) Description() string {
|
func (cb *Couchbase) Description() string {
|
||||||
return "Read metrics from one or many couchbase clusters"
|
return "Read metrics from one or many couchbase clusters"
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reads stats from all configured clusters. Accumulates stats.
|
// Reads stats from all configured clusters. Accumulates stats.
|
||||||
// Returns one of the errors encountered while gathering stats (if any).
|
// Returns one of the errors encountered while gathering stats (if any).
|
||||||
func (r *Couchbase) Gather(acc telegraf.Accumulator) error {
|
func (cb *Couchbase) Gather(acc telegraf.Accumulator) error {
|
||||||
if len(r.Servers) == 0 {
|
if len(cb.Servers) == 0 {
|
||||||
r.gatherServer("http://localhost:8091/", acc, nil)
|
return cb.gatherServer("http://localhost:8091/", acc, nil)
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
|
for _, serv := range cb.Servers {
|
||||||
for _, serv := range r.Servers {
|
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func(serv string) {
|
go func(serv string) {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
acc.AddError(r.gatherServer(serv, acc, nil))
|
acc.AddError(cb.gatherServer(serv, acc, nil))
|
||||||
}(serv)
|
}(serv)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -59,7 +69,7 @@ func (r *Couchbase) Gather(acc telegraf.Accumulator) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Couchbase) gatherServer(addr string, acc telegraf.Accumulator, pool *couchbase.Pool) error {
|
func (cb *Couchbase) gatherServer(addr string, acc telegraf.Accumulator, pool *couchbase.Pool) error {
|
||||||
if pool == nil {
|
if pool == nil {
|
||||||
client, err := couchbase.Connect(addr)
|
client, err := couchbase.Connect(addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -89,20 +99,292 @@ func (r *Couchbase) gatherServer(addr string, acc telegraf.Accumulator, pool *co
|
||||||
tags := map[string]string{"cluster": regexpURI.ReplaceAllString(addr, "${1}"), "bucket": bucketName}
|
tags := map[string]string{"cluster": regexpURI.ReplaceAllString(addr, "${1}"), "bucket": bucketName}
|
||||||
bs := pool.BucketMap[bucketName].BasicStats
|
bs := pool.BucketMap[bucketName].BasicStats
|
||||||
fields := make(map[string]interface{})
|
fields := make(map[string]interface{})
|
||||||
fields["quota_percent_used"] = bs["quotaPercentUsed"]
|
cb.addBucketField(fields, "quota_percent_used", bs["quotaPercentUsed"])
|
||||||
fields["ops_per_sec"] = bs["opsPerSec"]
|
cb.addBucketField(fields, "ops_per_sec", bs["opsPerSec"])
|
||||||
fields["disk_fetches"] = bs["diskFetches"]
|
cb.addBucketField(fields, "disk_fetches", bs["diskFetches"])
|
||||||
fields["item_count"] = bs["itemCount"]
|
cb.addBucketField(fields, "item_count", bs["itemCount"])
|
||||||
fields["disk_used"] = bs["diskUsed"]
|
cb.addBucketField(fields, "disk_used", bs["diskUsed"])
|
||||||
fields["data_used"] = bs["dataUsed"]
|
cb.addBucketField(fields, "data_used", bs["dataUsed"])
|
||||||
fields["mem_used"] = bs["memUsed"]
|
cb.addBucketField(fields, "mem_used", bs["memUsed"])
|
||||||
|
|
||||||
|
err := cb.gatherDetailedBucketStats(addr, bucketName, fields)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
acc.AddFields("couchbase_bucket", fields, tags)
|
acc.AddFields("couchbase_bucket", fields, tags)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cb *Couchbase) gatherDetailedBucketStats(server, bucket string, fields map[string]interface{}) error {
|
||||||
|
extendedBucketStats := &BucketStats{}
|
||||||
|
err := cb.queryDetailedBucketStats(server, bucket, extendedBucketStats)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use length of any set of metrics, they will all be the same length.
|
||||||
|
lastEntry := len(extendedBucketStats.Op.Samples.CouchTotalDiskSize) - 1
|
||||||
|
cb.addBucketField(fields, "couch_total_disk_size", extendedBucketStats.Op.Samples.CouchTotalDiskSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "couch_docs_fragmentation", extendedBucketStats.Op.Samples.CouchDocsFragmentation[lastEntry])
|
||||||
|
cb.addBucketField(fields, "couch_views_fragmentation", extendedBucketStats.Op.Samples.CouchViewsFragmentation[lastEntry])
|
||||||
|
cb.addBucketField(fields, "hit_ratio", extendedBucketStats.Op.Samples.HitRatio[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_cache_miss_rate", extendedBucketStats.Op.Samples.EpCacheMissRate[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_resident_items_rate", extendedBucketStats.Op.Samples.EpResidentItemsRate[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_avg_active_queue_age", extendedBucketStats.Op.Samples.VbAvgActiveQueueAge[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_avg_replica_queue_age", extendedBucketStats.Op.Samples.VbAvgReplicaQueueAge[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_avg_pending_queue_age", extendedBucketStats.Op.Samples.VbAvgPendingQueueAge[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_avg_total_queue_age", extendedBucketStats.Op.Samples.VbAvgTotalQueueAge[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_active_resident_items_ratio", extendedBucketStats.Op.Samples.VbActiveResidentItemsRatio[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_replica_resident_items_ratio", extendedBucketStats.Op.Samples.VbReplicaResidentItemsRatio[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_pending_resident_items_ratio", extendedBucketStats.Op.Samples.VbPendingResidentItemsRatio[lastEntry])
|
||||||
|
cb.addBucketField(fields, "avg_disk_update_time", extendedBucketStats.Op.Samples.AvgDiskUpdateTime[lastEntry])
|
||||||
|
cb.addBucketField(fields, "avg_disk_commit_time", extendedBucketStats.Op.Samples.AvgDiskCommitTime[lastEntry])
|
||||||
|
cb.addBucketField(fields, "avg_bg_wait_time", extendedBucketStats.Op.Samples.AvgBgWaitTime[lastEntry])
|
||||||
|
cb.addBucketField(fields, "avg_active_timestamp_drift", extendedBucketStats.Op.Samples.AvgActiveTimestampDrift[lastEntry])
|
||||||
|
cb.addBucketField(fields, "avg_replica_timestamp_drift", extendedBucketStats.Op.Samples.AvgReplicaTimestampDrift[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_views+indexes_count", extendedBucketStats.Op.Samples.EpDcpViewsIndexesCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_views+indexes_items_remaining", extendedBucketStats.Op.Samples.EpDcpViewsIndexesItemsRemaining[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_views+indexes_producer_count", extendedBucketStats.Op.Samples.EpDcpViewsIndexesProducerCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_views+indexes_total_backlog_size", extendedBucketStats.Op.Samples.EpDcpViewsIndexesTotalBacklogSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_views+indexes_items_sent", extendedBucketStats.Op.Samples.EpDcpViewsIndexesItemsSent[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_views+indexes_total_bytes", extendedBucketStats.Op.Samples.EpDcpViewsIndexesTotalBytes[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_views+indexes_backoff", extendedBucketStats.Op.Samples.EpDcpViewsIndexesBackoff[lastEntry])
|
||||||
|
cb.addBucketField(fields, "bg_wait_count", extendedBucketStats.Op.Samples.BgWaitCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "bg_wait_total", extendedBucketStats.Op.Samples.BgWaitTotal[lastEntry])
|
||||||
|
cb.addBucketField(fields, "bytes_read", extendedBucketStats.Op.Samples.BytesRead[lastEntry])
|
||||||
|
cb.addBucketField(fields, "bytes_written", extendedBucketStats.Op.Samples.BytesWritten[lastEntry])
|
||||||
|
cb.addBucketField(fields, "cas_badval", extendedBucketStats.Op.Samples.CasBadval[lastEntry])
|
||||||
|
cb.addBucketField(fields, "cas_hits", extendedBucketStats.Op.Samples.CasHits[lastEntry])
|
||||||
|
cb.addBucketField(fields, "cas_misses", extendedBucketStats.Op.Samples.CasMisses[lastEntry])
|
||||||
|
cb.addBucketField(fields, "cmd_get", extendedBucketStats.Op.Samples.CmdGet[lastEntry])
|
||||||
|
cb.addBucketField(fields, "cmd_lookup", extendedBucketStats.Op.Samples.CmdLookup[lastEntry])
|
||||||
|
cb.addBucketField(fields, "cmd_set", extendedBucketStats.Op.Samples.CmdSet[lastEntry])
|
||||||
|
cb.addBucketField(fields, "couch_docs_actual_disk_size", extendedBucketStats.Op.Samples.CouchDocsActualDiskSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "couch_docs_data_size", extendedBucketStats.Op.Samples.CouchDocsDataSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "couch_docs_disk_size", extendedBucketStats.Op.Samples.CouchDocsDiskSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "couch_spatial_data_size", extendedBucketStats.Op.Samples.CouchSpatialDataSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "couch_spatial_disk_size", extendedBucketStats.Op.Samples.CouchSpatialDiskSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "couch_spatial_ops", extendedBucketStats.Op.Samples.CouchSpatialOps[lastEntry])
|
||||||
|
cb.addBucketField(fields, "couch_views_actual_disk_size", extendedBucketStats.Op.Samples.CouchViewsActualDiskSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "couch_views_data_size", extendedBucketStats.Op.Samples.CouchViewsDataSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "couch_views_disk_size", extendedBucketStats.Op.Samples.CouchViewsDiskSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "couch_views_ops", extendedBucketStats.Op.Samples.CouchViewsOps[lastEntry])
|
||||||
|
cb.addBucketField(fields, "curr_connections", extendedBucketStats.Op.Samples.CurrConnections[lastEntry])
|
||||||
|
cb.addBucketField(fields, "curr_items", extendedBucketStats.Op.Samples.CurrItems[lastEntry])
|
||||||
|
cb.addBucketField(fields, "curr_items_tot", extendedBucketStats.Op.Samples.CurrItemsTot[lastEntry])
|
||||||
|
cb.addBucketField(fields, "decr_hits", extendedBucketStats.Op.Samples.DecrHits[lastEntry])
|
||||||
|
cb.addBucketField(fields, "decr_misses", extendedBucketStats.Op.Samples.DecrMisses[lastEntry])
|
||||||
|
cb.addBucketField(fields, "delete_hits", extendedBucketStats.Op.Samples.DeleteHits[lastEntry])
|
||||||
|
cb.addBucketField(fields, "delete_misses", extendedBucketStats.Op.Samples.DeleteMisses[lastEntry])
|
||||||
|
cb.addBucketField(fields, "disk_commit_count", extendedBucketStats.Op.Samples.DiskCommitCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "disk_commit_total", extendedBucketStats.Op.Samples.DiskCommitTotal[lastEntry])
|
||||||
|
cb.addBucketField(fields, "disk_update_count", extendedBucketStats.Op.Samples.DiskUpdateCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "disk_update_total", extendedBucketStats.Op.Samples.DiskUpdateTotal[lastEntry])
|
||||||
|
cb.addBucketField(fields, "disk_write_queue", extendedBucketStats.Op.Samples.DiskWriteQueue[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_active_ahead_exceptions", extendedBucketStats.Op.Samples.EpActiveAheadExceptions[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_active_hlc_drift", extendedBucketStats.Op.Samples.EpActiveHlcDrift[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_active_hlc_drift_count", extendedBucketStats.Op.Samples.EpActiveHlcDriftCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_bg_fetched", extendedBucketStats.Op.Samples.EpBgFetched[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_clock_cas_drift_threshold_exceeded", extendedBucketStats.Op.Samples.EpClockCasDriftThresholdExceeded[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_data_read_failed", extendedBucketStats.Op.Samples.EpDataReadFailed[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_data_write_failed", extendedBucketStats.Op.Samples.EpDataWriteFailed[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_2i_backoff", extendedBucketStats.Op.Samples.EpDcp2IBackoff[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_2i_count", extendedBucketStats.Op.Samples.EpDcp2ICount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_2i_items_remaining", extendedBucketStats.Op.Samples.EpDcp2IItemsRemaining[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_2i_items_sent", extendedBucketStats.Op.Samples.EpDcp2IItemsSent[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_2i_producer_count", extendedBucketStats.Op.Samples.EpDcp2IProducerCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_2i_total_backlog_size", extendedBucketStats.Op.Samples.EpDcp2ITotalBacklogSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_2i_total_bytes", extendedBucketStats.Op.Samples.EpDcp2ITotalBytes[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_cbas_backoff", extendedBucketStats.Op.Samples.EpDcpCbasBackoff[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_cbas_count", extendedBucketStats.Op.Samples.EpDcpCbasCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_cbas_items_remaining", extendedBucketStats.Op.Samples.EpDcpCbasItemsRemaining[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_cbas_items_sent", extendedBucketStats.Op.Samples.EpDcpCbasItemsSent[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_cbas_producer_count", extendedBucketStats.Op.Samples.EpDcpCbasProducerCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_cbas_total_backlog_size", extendedBucketStats.Op.Samples.EpDcpCbasTotalBacklogSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_cbas_total_bytes", extendedBucketStats.Op.Samples.EpDcpCbasTotalBytes[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_eventing_backoff", extendedBucketStats.Op.Samples.EpDcpEventingBackoff[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_eventing_count", extendedBucketStats.Op.Samples.EpDcpEventingCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_eventing_items_remaining", extendedBucketStats.Op.Samples.EpDcpEventingItemsRemaining[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_eventing_items_sent", extendedBucketStats.Op.Samples.EpDcpEventingItemsSent[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_eventing_producer_count", extendedBucketStats.Op.Samples.EpDcpEventingProducerCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_eventing_total_backlog_size", extendedBucketStats.Op.Samples.EpDcpEventingTotalBacklogSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_eventing_total_bytes", extendedBucketStats.Op.Samples.EpDcpEventingTotalBytes[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_fts_backoff", extendedBucketStats.Op.Samples.EpDcpFtsBackoff[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_fts_count", extendedBucketStats.Op.Samples.EpDcpFtsCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_fts_items_remaining", extendedBucketStats.Op.Samples.EpDcpFtsItemsRemaining[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_fts_items_sent", extendedBucketStats.Op.Samples.EpDcpFtsItemsSent[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_fts_producer_count", extendedBucketStats.Op.Samples.EpDcpFtsProducerCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_fts_total_backlog_size", extendedBucketStats.Op.Samples.EpDcpFtsTotalBacklogSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_fts_total_bytes", extendedBucketStats.Op.Samples.EpDcpFtsTotalBytes[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_other_backoff", extendedBucketStats.Op.Samples.EpDcpOtherBackoff[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_other_count", extendedBucketStats.Op.Samples.EpDcpOtherCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_other_items_remaining", extendedBucketStats.Op.Samples.EpDcpOtherItemsRemaining[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_other_items_sent", extendedBucketStats.Op.Samples.EpDcpOtherItemsSent[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_other_producer_count", extendedBucketStats.Op.Samples.EpDcpOtherProducerCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_other_total_backlog_size", extendedBucketStats.Op.Samples.EpDcpOtherTotalBacklogSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_other_total_bytes", extendedBucketStats.Op.Samples.EpDcpOtherTotalBytes[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_replica_backoff", extendedBucketStats.Op.Samples.EpDcpReplicaBackoff[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_replica_count", extendedBucketStats.Op.Samples.EpDcpReplicaCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_replica_items_remaining", extendedBucketStats.Op.Samples.EpDcpReplicaItemsRemaining[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_replica_items_sent", extendedBucketStats.Op.Samples.EpDcpReplicaItemsSent[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_replica_producer_count", extendedBucketStats.Op.Samples.EpDcpReplicaProducerCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_replica_total_backlog_size", extendedBucketStats.Op.Samples.EpDcpReplicaTotalBacklogSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_replica_total_bytes", extendedBucketStats.Op.Samples.EpDcpReplicaTotalBytes[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_views_backoff", extendedBucketStats.Op.Samples.EpDcpViewsBackoff[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_views_count", extendedBucketStats.Op.Samples.EpDcpViewsCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_views_items_remaining", extendedBucketStats.Op.Samples.EpDcpViewsItemsRemaining[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_views_items_sent", extendedBucketStats.Op.Samples.EpDcpViewsItemsSent[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_views_producer_count", extendedBucketStats.Op.Samples.EpDcpViewsProducerCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_views_total_backlog_size", extendedBucketStats.Op.Samples.EpDcpViewsTotalBacklogSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_views_total_bytes", extendedBucketStats.Op.Samples.EpDcpViewsTotalBytes[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_xdcr_backoff", extendedBucketStats.Op.Samples.EpDcpXdcrBackoff[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_xdcr_count", extendedBucketStats.Op.Samples.EpDcpXdcrCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_xdcr_items_remaining", extendedBucketStats.Op.Samples.EpDcpXdcrItemsRemaining[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_xdcr_items_sent", extendedBucketStats.Op.Samples.EpDcpXdcrItemsSent[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_xdcr_producer_count", extendedBucketStats.Op.Samples.EpDcpXdcrProducerCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_xdcr_total_backlog_size", extendedBucketStats.Op.Samples.EpDcpXdcrTotalBacklogSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_dcp_xdcr_total_bytes", extendedBucketStats.Op.Samples.EpDcpXdcrTotalBytes[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_diskqueue_drain", extendedBucketStats.Op.Samples.EpDiskqueueDrain[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_diskqueue_fill", extendedBucketStats.Op.Samples.EpDiskqueueFill[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_diskqueue_items", extendedBucketStats.Op.Samples.EpDiskqueueItems[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_flusher_todo", extendedBucketStats.Op.Samples.EpFlusherTodo[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_item_commit_failed", extendedBucketStats.Op.Samples.EpItemCommitFailed[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_kv_size", extendedBucketStats.Op.Samples.EpKvSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_max_size", extendedBucketStats.Op.Samples.EpMaxSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_mem_high_wat", extendedBucketStats.Op.Samples.EpMemHighWat[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_mem_low_wat", extendedBucketStats.Op.Samples.EpMemLowWat[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_meta_data_memory", extendedBucketStats.Op.Samples.EpMetaDataMemory[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_num_non_resident", extendedBucketStats.Op.Samples.EpNumNonResident[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_num_ops_del_meta", extendedBucketStats.Op.Samples.EpNumOpsDelMeta[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_num_ops_del_ret_meta", extendedBucketStats.Op.Samples.EpNumOpsDelRetMeta[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_num_ops_get_meta", extendedBucketStats.Op.Samples.EpNumOpsGetMeta[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_num_ops_set_meta", extendedBucketStats.Op.Samples.EpNumOpsSetMeta[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_num_ops_set_ret_meta", extendedBucketStats.Op.Samples.EpNumOpsSetRetMeta[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_num_value_ejects", extendedBucketStats.Op.Samples.EpNumValueEjects[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_oom_errors", extendedBucketStats.Op.Samples.EpOomErrors[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_ops_create", extendedBucketStats.Op.Samples.EpOpsCreate[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_ops_update", extendedBucketStats.Op.Samples.EpOpsUpdate[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_overhead", extendedBucketStats.Op.Samples.EpOverhead[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_queue_size", extendedBucketStats.Op.Samples.EpQueueSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_replica_ahead_exceptions", extendedBucketStats.Op.Samples.EpReplicaAheadExceptions[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_replica_hlc_drift", extendedBucketStats.Op.Samples.EpReplicaHlcDrift[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_replica_hlc_drift_count", extendedBucketStats.Op.Samples.EpReplicaHlcDriftCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_tmp_oom_errors", extendedBucketStats.Op.Samples.EpTmpOomErrors[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ep_vb_total", extendedBucketStats.Op.Samples.EpVbTotal[lastEntry])
|
||||||
|
cb.addBucketField(fields, "evictions", extendedBucketStats.Op.Samples.Evictions[lastEntry])
|
||||||
|
cb.addBucketField(fields, "get_hits", extendedBucketStats.Op.Samples.GetHits[lastEntry])
|
||||||
|
cb.addBucketField(fields, "get_misses", extendedBucketStats.Op.Samples.GetMisses[lastEntry])
|
||||||
|
cb.addBucketField(fields, "incr_hits", extendedBucketStats.Op.Samples.IncrHits[lastEntry])
|
||||||
|
cb.addBucketField(fields, "incr_misses", extendedBucketStats.Op.Samples.IncrMisses[lastEntry])
|
||||||
|
cb.addBucketField(fields, "misses", extendedBucketStats.Op.Samples.Misses[lastEntry])
|
||||||
|
cb.addBucketField(fields, "ops", extendedBucketStats.Op.Samples.Ops[lastEntry])
|
||||||
|
cb.addBucketField(fields, "timestamp", extendedBucketStats.Op.Samples.Timestamp[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_active_eject", extendedBucketStats.Op.Samples.VbActiveEject[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_active_itm_memory", extendedBucketStats.Op.Samples.VbActiveItmMemory[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_active_meta_data_memory", extendedBucketStats.Op.Samples.VbActiveMetaDataMemory[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_active_num", extendedBucketStats.Op.Samples.VbActiveNum[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_active_num_non_resident", extendedBucketStats.Op.Samples.VbActiveNumNonResident[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_active_ops_create", extendedBucketStats.Op.Samples.VbActiveOpsCreate[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_active_ops_update", extendedBucketStats.Op.Samples.VbActiveOpsUpdate[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_active_queue_age", extendedBucketStats.Op.Samples.VbActiveQueueAge[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_active_queue_drain", extendedBucketStats.Op.Samples.VbActiveQueueDrain[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_active_queue_fill", extendedBucketStats.Op.Samples.VbActiveQueueFill[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_active_queue_size", extendedBucketStats.Op.Samples.VbActiveQueueSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_active_sync_write_aborted_count", extendedBucketStats.Op.Samples.VbActiveSyncWriteAbortedCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_active_sync_write_accepted_count", extendedBucketStats.Op.Samples.VbActiveSyncWriteAcceptedCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_active_sync_write_committed_count", extendedBucketStats.Op.Samples.VbActiveSyncWriteCommittedCount[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_pending_curr_items", extendedBucketStats.Op.Samples.VbPendingCurrItems[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_pending_eject", extendedBucketStats.Op.Samples.VbPendingEject[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_pending_itm_memory", extendedBucketStats.Op.Samples.VbPendingItmMemory[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_pending_meta_data_memory", extendedBucketStats.Op.Samples.VbPendingMetaDataMemory[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_pending_num", extendedBucketStats.Op.Samples.VbPendingNum[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_pending_num_non_resident", extendedBucketStats.Op.Samples.VbPendingNumNonResident[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_pending_ops_create", extendedBucketStats.Op.Samples.VbPendingOpsCreate[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_pending_ops_update", extendedBucketStats.Op.Samples.VbPendingOpsUpdate[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_pending_queue_age", extendedBucketStats.Op.Samples.VbPendingQueueAge[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_pending_queue_drain", extendedBucketStats.Op.Samples.VbPendingQueueDrain[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_pending_queue_fill", extendedBucketStats.Op.Samples.VbPendingQueueFill[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_pending_queue_size", extendedBucketStats.Op.Samples.VbPendingQueueSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_replica_curr_items", extendedBucketStats.Op.Samples.VbReplicaCurrItems[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_replica_eject", extendedBucketStats.Op.Samples.VbReplicaEject[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_replica_itm_memory", extendedBucketStats.Op.Samples.VbReplicaItmMemory[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_replica_meta_data_memory", extendedBucketStats.Op.Samples.VbReplicaMetaDataMemory[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_replica_num", extendedBucketStats.Op.Samples.VbReplicaNum[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_replica_num_non_resident", extendedBucketStats.Op.Samples.VbReplicaNumNonResident[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_replica_ops_create", extendedBucketStats.Op.Samples.VbReplicaOpsCreate[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_replica_ops_update", extendedBucketStats.Op.Samples.VbReplicaOpsUpdate[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_replica_queue_age", extendedBucketStats.Op.Samples.VbReplicaQueueAge[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_replica_queue_drain", extendedBucketStats.Op.Samples.VbReplicaQueueDrain[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_replica_queue_fill", extendedBucketStats.Op.Samples.VbReplicaQueueFill[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_replica_queue_size", extendedBucketStats.Op.Samples.VbReplicaQueueSize[lastEntry])
|
||||||
|
cb.addBucketField(fields, "vb_total_queue_age", extendedBucketStats.Op.Samples.VbTotalQueueAge[lastEntry])
|
||||||
|
cb.addBucketField(fields, "xdc_ops", extendedBucketStats.Op.Samples.XdcOps[lastEntry])
|
||||||
|
cb.addBucketField(fields, "allocstall", extendedBucketStats.Op.Samples.Allocstall[lastEntry])
|
||||||
|
cb.addBucketField(fields, "cpu_cores_available", extendedBucketStats.Op.Samples.CPUCoresAvailable[lastEntry])
|
||||||
|
cb.addBucketField(fields, "cpu_irq_rate", extendedBucketStats.Op.Samples.CPUIrqRate[lastEntry])
|
||||||
|
cb.addBucketField(fields, "cpu_stolen_rate", extendedBucketStats.Op.Samples.CPUStolenRate[lastEntry])
|
||||||
|
cb.addBucketField(fields, "cpu_sys_rate", extendedBucketStats.Op.Samples.CPUSysRate[lastEntry])
|
||||||
|
cb.addBucketField(fields, "cpu_user_rate", extendedBucketStats.Op.Samples.CPUUserRate[lastEntry])
|
||||||
|
cb.addBucketField(fields, "cpu_utilization_rate", extendedBucketStats.Op.Samples.CPUUtilizationRate[lastEntry])
|
||||||
|
cb.addBucketField(fields, "hibernated_requests", extendedBucketStats.Op.Samples.HibernatedRequests[lastEntry])
|
||||||
|
cb.addBucketField(fields, "hibernated_waked", extendedBucketStats.Op.Samples.HibernatedWaked[lastEntry])
|
||||||
|
cb.addBucketField(fields, "mem_actual_free", extendedBucketStats.Op.Samples.MemActualFree[lastEntry])
|
||||||
|
cb.addBucketField(fields, "mem_actual_used", extendedBucketStats.Op.Samples.MemActualUsed[lastEntry])
|
||||||
|
cb.addBucketField(fields, "mem_free", extendedBucketStats.Op.Samples.MemFree[lastEntry])
|
||||||
|
cb.addBucketField(fields, "mem_limit", extendedBucketStats.Op.Samples.MemLimit[lastEntry])
|
||||||
|
cb.addBucketField(fields, "mem_total", extendedBucketStats.Op.Samples.MemTotal[lastEntry])
|
||||||
|
cb.addBucketField(fields, "mem_used_sys", extendedBucketStats.Op.Samples.MemUsedSys[lastEntry])
|
||||||
|
cb.addBucketField(fields, "odp_report_failed", extendedBucketStats.Op.Samples.OdpReportFailed[lastEntry])
|
||||||
|
cb.addBucketField(fields, "rest_requests", extendedBucketStats.Op.Samples.RestRequests[lastEntry])
|
||||||
|
cb.addBucketField(fields, "swap_total", extendedBucketStats.Op.Samples.SwapTotal[lastEntry])
|
||||||
|
cb.addBucketField(fields, "swap_used", extendedBucketStats.Op.Samples.SwapUsed[lastEntry])
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cb *Couchbase) addBucketField(fields map[string]interface{}, fieldKey string, value interface{}) {
|
||||||
|
if !cb.bucketInclude.Match(fieldKey) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fields[fieldKey] = value
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cb *Couchbase) queryDetailedBucketStats(server, bucket string, bucketStats *BucketStats) error {
|
||||||
|
// Set up an HTTP request to get the complete set of bucket stats.
|
||||||
|
req, err := http.NewRequest("GET", server+"/pools/default/buckets/"+bucket+"/stats?", nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
r, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
defer r.Body.Close()
|
||||||
|
|
||||||
|
return json.NewDecoder(r.Body).Decode(bucketStats)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cb *Couchbase) Init() error {
|
||||||
|
f, err := filter.NewIncludeExcludeFilter(cb.BucketStatsIncluded, []string{})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
cb.bucketInclude = f
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
inputs.Add("couchbase", func() telegraf.Input {
|
inputs.Add("couchbase", func() telegraf.Input {
|
||||||
return &Couchbase{}
|
return &Couchbase{
|
||||||
|
BucketStatsIncluded: []string{"quota_percent_used", "ops_per_sec", "disk_fetches", "item_count", "disk_used", "data_used", "mem_used"},
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,228 @@
|
||||||
|
package couchbase
|
||||||
|
|
||||||
|
type BucketStats struct {
|
||||||
|
Op struct {
|
||||||
|
Samples struct {
|
||||||
|
CouchTotalDiskSize []float64 `json:"couch_total_disk_size"`
|
||||||
|
CouchDocsFragmentation []float64 `json:"couch_docs_fragmentation"`
|
||||||
|
CouchViewsFragmentation []float64 `json:"couch_views_fragmentation"`
|
||||||
|
HitRatio []float64 `json:"hit_ratio"`
|
||||||
|
EpCacheMissRate []float64 `json:"ep_cache_miss_rate"`
|
||||||
|
EpResidentItemsRate []float64 `json:"ep_resident_items_rate"`
|
||||||
|
VbAvgActiveQueueAge []float64 `json:"vb_avg_active_queue_age"`
|
||||||
|
VbAvgReplicaQueueAge []float64 `json:"vb_avg_replica_queue_age"`
|
||||||
|
VbAvgPendingQueueAge []float64 `json:"vb_avg_pending_queue_age"`
|
||||||
|
VbAvgTotalQueueAge []float64 `json:"vb_avg_total_queue_age"`
|
||||||
|
VbActiveResidentItemsRatio []float64 `json:"vb_active_resident_items_ratio"`
|
||||||
|
VbReplicaResidentItemsRatio []float64 `json:"vb_replica_resident_items_ratio"`
|
||||||
|
VbPendingResidentItemsRatio []float64 `json:"vb_pending_resident_items_ratio"`
|
||||||
|
AvgDiskUpdateTime []float64 `json:"avg_disk_update_time"`
|
||||||
|
AvgDiskCommitTime []float64 `json:"avg_disk_commit_time"`
|
||||||
|
AvgBgWaitTime []float64 `json:"avg_bg_wait_time"`
|
||||||
|
AvgActiveTimestampDrift []float64 `json:"avg_active_timestamp_drift"`
|
||||||
|
AvgReplicaTimestampDrift []float64 `json:"avg_replica_timestamp_drift"`
|
||||||
|
EpDcpViewsIndexesCount []float64 `json:"ep_dcp_views+indexes_count"`
|
||||||
|
EpDcpViewsIndexesItemsRemaining []float64 `json:"ep_dcp_views+indexes_items_remaining"`
|
||||||
|
EpDcpViewsIndexesProducerCount []float64 `json:"ep_dcp_views+indexes_producer_count"`
|
||||||
|
EpDcpViewsIndexesTotalBacklogSize []float64 `json:"ep_dcp_views+indexes_total_backlog_size"`
|
||||||
|
EpDcpViewsIndexesItemsSent []float64 `json:"ep_dcp_views+indexes_items_sent"`
|
||||||
|
EpDcpViewsIndexesTotalBytes []float64 `json:"ep_dcp_views+indexes_total_bytes"`
|
||||||
|
EpDcpViewsIndexesBackoff []float64 `json:"ep_dcp_views+indexes_backoff"`
|
||||||
|
BgWaitCount []float64 `json:"bg_wait_count"`
|
||||||
|
BgWaitTotal []float64 `json:"bg_wait_total"`
|
||||||
|
BytesRead []float64 `json:"bytes_read"`
|
||||||
|
BytesWritten []float64 `json:"bytes_written"`
|
||||||
|
CasBadval []float64 `json:"cas_badval"`
|
||||||
|
CasHits []float64 `json:"cas_hits"`
|
||||||
|
CasMisses []float64 `json:"cas_misses"`
|
||||||
|
CmdGet []float64 `json:"cmd_get"`
|
||||||
|
CmdLookup []float64 `json:"cmd_lookup"`
|
||||||
|
CmdSet []float64 `json:"cmd_set"`
|
||||||
|
CouchDocsActualDiskSize []float64 `json:"couch_docs_actual_disk_size"`
|
||||||
|
CouchDocsDataSize []float64 `json:"couch_docs_data_size"`
|
||||||
|
CouchDocsDiskSize []float64 `json:"couch_docs_disk_size"`
|
||||||
|
CouchSpatialDataSize []float64 `json:"couch_spatial_data_size"`
|
||||||
|
CouchSpatialDiskSize []float64 `json:"couch_spatial_disk_size"`
|
||||||
|
CouchSpatialOps []float64 `json:"couch_spatial_ops"`
|
||||||
|
CouchViewsActualDiskSize []float64 `json:"couch_views_actual_disk_size"`
|
||||||
|
CouchViewsDataSize []float64 `json:"couch_views_data_size"`
|
||||||
|
CouchViewsDiskSize []float64 `json:"couch_views_disk_size"`
|
||||||
|
CouchViewsOps []float64 `json:"couch_views_ops"`
|
||||||
|
CurrConnections []float64 `json:"curr_connections"`
|
||||||
|
CurrItems []float64 `json:"curr_items"`
|
||||||
|
CurrItemsTot []float64 `json:"curr_items_tot"`
|
||||||
|
DecrHits []float64 `json:"decr_hits"`
|
||||||
|
DecrMisses []float64 `json:"decr_misses"`
|
||||||
|
DeleteHits []float64 `json:"delete_hits"`
|
||||||
|
DeleteMisses []float64 `json:"delete_misses"`
|
||||||
|
DiskCommitCount []float64 `json:"disk_commit_count"`
|
||||||
|
DiskCommitTotal []float64 `json:"disk_commit_total"`
|
||||||
|
DiskUpdateCount []float64 `json:"disk_update_count"`
|
||||||
|
DiskUpdateTotal []float64 `json:"disk_update_total"`
|
||||||
|
DiskWriteQueue []float64 `json:"disk_write_queue"`
|
||||||
|
EpActiveAheadExceptions []float64 `json:"ep_active_ahead_exceptions"`
|
||||||
|
EpActiveHlcDrift []float64 `json:"ep_active_hlc_drift"`
|
||||||
|
EpActiveHlcDriftCount []float64 `json:"ep_active_hlc_drift_count"`
|
||||||
|
EpBgFetched []float64 `json:"ep_bg_fetched"`
|
||||||
|
EpClockCasDriftThresholdExceeded []float64 `json:"ep_clock_cas_drift_threshold_exceeded"`
|
||||||
|
EpDataReadFailed []float64 `json:"ep_data_read_failed"`
|
||||||
|
EpDataWriteFailed []float64 `json:"ep_data_write_failed"`
|
||||||
|
EpDcp2IBackoff []float64 `json:"ep_dcp_2i_backoff"`
|
||||||
|
EpDcp2ICount []float64 `json:"ep_dcp_2i_count"`
|
||||||
|
EpDcp2IItemsRemaining []float64 `json:"ep_dcp_2i_items_remaining"`
|
||||||
|
EpDcp2IItemsSent []float64 `json:"ep_dcp_2i_items_sent"`
|
||||||
|
EpDcp2IProducerCount []float64 `json:"ep_dcp_2i_producer_count"`
|
||||||
|
EpDcp2ITotalBacklogSize []float64 `json:"ep_dcp_2i_total_backlog_size"`
|
||||||
|
EpDcp2ITotalBytes []float64 `json:"ep_dcp_2i_total_bytes"`
|
||||||
|
EpDcpCbasBackoff []float64 `json:"ep_dcp_cbas_backoff"`
|
||||||
|
EpDcpCbasCount []float64 `json:"ep_dcp_cbas_count"`
|
||||||
|
EpDcpCbasItemsRemaining []float64 `json:"ep_dcp_cbas_items_remaining"`
|
||||||
|
EpDcpCbasItemsSent []float64 `json:"ep_dcp_cbas_items_sent"`
|
||||||
|
EpDcpCbasProducerCount []float64 `json:"ep_dcp_cbas_producer_count"`
|
||||||
|
EpDcpCbasTotalBacklogSize []float64 `json:"ep_dcp_cbas_total_backlog_size"`
|
||||||
|
EpDcpCbasTotalBytes []float64 `json:"ep_dcp_cbas_total_bytes"`
|
||||||
|
EpDcpEventingBackoff []float64 `json:"ep_dcp_eventing_backoff"`
|
||||||
|
EpDcpEventingCount []float64 `json:"ep_dcp_eventing_count"`
|
||||||
|
EpDcpEventingItemsRemaining []float64 `json:"ep_dcp_eventing_items_remaining"`
|
||||||
|
EpDcpEventingItemsSent []float64 `json:"ep_dcp_eventing_items_sent"`
|
||||||
|
EpDcpEventingProducerCount []float64 `json:"ep_dcp_eventing_producer_count"`
|
||||||
|
EpDcpEventingTotalBacklogSize []float64 `json:"ep_dcp_eventing_total_backlog_size"`
|
||||||
|
EpDcpEventingTotalBytes []float64 `json:"ep_dcp_eventing_total_bytes"`
|
||||||
|
EpDcpFtsBackoff []float64 `json:"ep_dcp_fts_backoff"`
|
||||||
|
EpDcpFtsCount []float64 `json:"ep_dcp_fts_count"`
|
||||||
|
EpDcpFtsItemsRemaining []float64 `json:"ep_dcp_fts_items_remaining"`
|
||||||
|
EpDcpFtsItemsSent []float64 `json:"ep_dcp_fts_items_sent"`
|
||||||
|
EpDcpFtsProducerCount []float64 `json:"ep_dcp_fts_producer_count"`
|
||||||
|
EpDcpFtsTotalBacklogSize []float64 `json:"ep_dcp_fts_total_backlog_size"`
|
||||||
|
EpDcpFtsTotalBytes []float64 `json:"ep_dcp_fts_total_bytes"`
|
||||||
|
EpDcpOtherBackoff []float64 `json:"ep_dcp_other_backoff"`
|
||||||
|
EpDcpOtherCount []float64 `json:"ep_dcp_other_count"`
|
||||||
|
EpDcpOtherItemsRemaining []float64 `json:"ep_dcp_other_items_remaining"`
|
||||||
|
EpDcpOtherItemsSent []float64 `json:"ep_dcp_other_items_sent"`
|
||||||
|
EpDcpOtherProducerCount []float64 `json:"ep_dcp_other_producer_count"`
|
||||||
|
EpDcpOtherTotalBacklogSize []float64 `json:"ep_dcp_other_total_backlog_size"`
|
||||||
|
EpDcpOtherTotalBytes []float64 `json:"ep_dcp_other_total_bytes"`
|
||||||
|
EpDcpReplicaBackoff []float64 `json:"ep_dcp_replica_backoff"`
|
||||||
|
EpDcpReplicaCount []float64 `json:"ep_dcp_replica_count"`
|
||||||
|
EpDcpReplicaItemsRemaining []float64 `json:"ep_dcp_replica_items_remaining"`
|
||||||
|
EpDcpReplicaItemsSent []float64 `json:"ep_dcp_replica_items_sent"`
|
||||||
|
EpDcpReplicaProducerCount []float64 `json:"ep_dcp_replica_producer_count"`
|
||||||
|
EpDcpReplicaTotalBacklogSize []float64 `json:"ep_dcp_replica_total_backlog_size"`
|
||||||
|
EpDcpReplicaTotalBytes []float64 `json:"ep_dcp_replica_total_bytes"`
|
||||||
|
EpDcpViewsBackoff []float64 `json:"ep_dcp_views_backoff"`
|
||||||
|
EpDcpViewsCount []float64 `json:"ep_dcp_views_count"`
|
||||||
|
EpDcpViewsItemsRemaining []float64 `json:"ep_dcp_views_items_remaining"`
|
||||||
|
EpDcpViewsItemsSent []float64 `json:"ep_dcp_views_items_sent"`
|
||||||
|
EpDcpViewsProducerCount []float64 `json:"ep_dcp_views_producer_count"`
|
||||||
|
EpDcpViewsTotalBacklogSize []float64 `json:"ep_dcp_views_total_backlog_size"`
|
||||||
|
EpDcpViewsTotalBytes []float64 `json:"ep_dcp_views_total_bytes"`
|
||||||
|
EpDcpXdcrBackoff []float64 `json:"ep_dcp_xdcr_backoff"`
|
||||||
|
EpDcpXdcrCount []float64 `json:"ep_dcp_xdcr_count"`
|
||||||
|
EpDcpXdcrItemsRemaining []float64 `json:"ep_dcp_xdcr_items_remaining"`
|
||||||
|
EpDcpXdcrItemsSent []float64 `json:"ep_dcp_xdcr_items_sent"`
|
||||||
|
EpDcpXdcrProducerCount []float64 `json:"ep_dcp_xdcr_producer_count"`
|
||||||
|
EpDcpXdcrTotalBacklogSize []float64 `json:"ep_dcp_xdcr_total_backlog_size"`
|
||||||
|
EpDcpXdcrTotalBytes []float64 `json:"ep_dcp_xdcr_total_bytes"`
|
||||||
|
EpDiskqueueDrain []float64 `json:"ep_diskqueue_drain"`
|
||||||
|
EpDiskqueueFill []float64 `json:"ep_diskqueue_fill"`
|
||||||
|
EpDiskqueueItems []float64 `json:"ep_diskqueue_items"`
|
||||||
|
EpFlusherTodo []float64 `json:"ep_flusher_todo"`
|
||||||
|
EpItemCommitFailed []float64 `json:"ep_item_commit_failed"`
|
||||||
|
EpKvSize []float64 `json:"ep_kv_size"`
|
||||||
|
EpMaxSize []float64 `json:"ep_max_size"`
|
||||||
|
EpMemHighWat []float64 `json:"ep_mem_high_wat"`
|
||||||
|
EpMemLowWat []float64 `json:"ep_mem_low_wat"`
|
||||||
|
EpMetaDataMemory []float64 `json:"ep_meta_data_memory"`
|
||||||
|
EpNumNonResident []float64 `json:"ep_num_non_resident"`
|
||||||
|
EpNumOpsDelMeta []float64 `json:"ep_num_ops_del_meta"`
|
||||||
|
EpNumOpsDelRetMeta []float64 `json:"ep_num_ops_del_ret_meta"`
|
||||||
|
EpNumOpsGetMeta []float64 `json:"ep_num_ops_get_meta"`
|
||||||
|
EpNumOpsSetMeta []float64 `json:"ep_num_ops_set_meta"`
|
||||||
|
EpNumOpsSetRetMeta []float64 `json:"ep_num_ops_set_ret_meta"`
|
||||||
|
EpNumValueEjects []float64 `json:"ep_num_value_ejects"`
|
||||||
|
EpOomErrors []float64 `json:"ep_oom_errors"`
|
||||||
|
EpOpsCreate []float64 `json:"ep_ops_create"`
|
||||||
|
EpOpsUpdate []float64 `json:"ep_ops_update"`
|
||||||
|
EpOverhead []float64 `json:"ep_overhead"`
|
||||||
|
EpQueueSize []float64 `json:"ep_queue_size"`
|
||||||
|
EpReplicaAheadExceptions []float64 `json:"ep_replica_ahead_exceptions"`
|
||||||
|
EpReplicaHlcDrift []float64 `json:"ep_replica_hlc_drift"`
|
||||||
|
EpReplicaHlcDriftCount []float64 `json:"ep_replica_hlc_drift_count"`
|
||||||
|
EpTmpOomErrors []float64 `json:"ep_tmp_oom_errors"`
|
||||||
|
EpVbTotal []float64 `json:"ep_vb_total"`
|
||||||
|
Evictions []float64 `json:"evictions"`
|
||||||
|
GetHits []float64 `json:"get_hits"`
|
||||||
|
GetMisses []float64 `json:"get_misses"`
|
||||||
|
IncrHits []float64 `json:"incr_hits"`
|
||||||
|
IncrMisses []float64 `json:"incr_misses"`
|
||||||
|
MemUsed []float64 `json:"mem_used"`
|
||||||
|
Misses []float64 `json:"misses"`
|
||||||
|
Ops []float64 `json:"ops"`
|
||||||
|
Timestamp []float64 `json:"timestamp"`
|
||||||
|
VbActiveEject []float64 `json:"vb_active_eject"`
|
||||||
|
VbActiveItmMemory []float64 `json:"vb_active_itm_memory"`
|
||||||
|
VbActiveMetaDataMemory []float64 `json:"vb_active_meta_data_memory"`
|
||||||
|
VbActiveNum []float64 `json:"vb_active_num"`
|
||||||
|
VbActiveNumNonResident []float64 `json:"vb_active_num_non_resident"`
|
||||||
|
VbActiveOpsCreate []float64 `json:"vb_active_ops_create"`
|
||||||
|
VbActiveOpsUpdate []float64 `json:"vb_active_ops_update"`
|
||||||
|
VbActiveQueueAge []float64 `json:"vb_active_queue_age"`
|
||||||
|
VbActiveQueueDrain []float64 `json:"vb_active_queue_drain"`
|
||||||
|
VbActiveQueueFill []float64 `json:"vb_active_queue_fill"`
|
||||||
|
VbActiveQueueSize []float64 `json:"vb_active_queue_size"`
|
||||||
|
VbActiveSyncWriteAbortedCount []float64 `json:"vb_active_sync_write_aborted_count"`
|
||||||
|
VbActiveSyncWriteAcceptedCount []float64 `json:"vb_active_sync_write_accepted_count"`
|
||||||
|
VbActiveSyncWriteCommittedCount []float64 `json:"vb_active_sync_write_committed_count"`
|
||||||
|
VbPendingCurrItems []float64 `json:"vb_pending_curr_items"`
|
||||||
|
VbPendingEject []float64 `json:"vb_pending_eject"`
|
||||||
|
VbPendingItmMemory []float64 `json:"vb_pending_itm_memory"`
|
||||||
|
VbPendingMetaDataMemory []float64 `json:"vb_pending_meta_data_memory"`
|
||||||
|
VbPendingNum []float64 `json:"vb_pending_num"`
|
||||||
|
VbPendingNumNonResident []float64 `json:"vb_pending_num_non_resident"`
|
||||||
|
VbPendingOpsCreate []float64 `json:"vb_pending_ops_create"`
|
||||||
|
VbPendingOpsUpdate []float64 `json:"vb_pending_ops_update"`
|
||||||
|
VbPendingQueueAge []float64 `json:"vb_pending_queue_age"`
|
||||||
|
VbPendingQueueDrain []float64 `json:"vb_pending_queue_drain"`
|
||||||
|
VbPendingQueueFill []float64 `json:"vb_pending_queue_fill"`
|
||||||
|
VbPendingQueueSize []float64 `json:"vb_pending_queue_size"`
|
||||||
|
VbReplicaCurrItems []float64 `json:"vb_replica_curr_items"`
|
||||||
|
VbReplicaEject []float64 `json:"vb_replica_eject"`
|
||||||
|
VbReplicaItmMemory []float64 `json:"vb_replica_itm_memory"`
|
||||||
|
VbReplicaMetaDataMemory []float64 `json:"vb_replica_meta_data_memory"`
|
||||||
|
VbReplicaNum []float64 `json:"vb_replica_num"`
|
||||||
|
VbReplicaNumNonResident []float64 `json:"vb_replica_num_non_resident"`
|
||||||
|
VbReplicaOpsCreate []float64 `json:"vb_replica_ops_create"`
|
||||||
|
VbReplicaOpsUpdate []float64 `json:"vb_replica_ops_update"`
|
||||||
|
VbReplicaQueueAge []float64 `json:"vb_replica_queue_age"`
|
||||||
|
VbReplicaQueueDrain []float64 `json:"vb_replica_queue_drain"`
|
||||||
|
VbReplicaQueueFill []float64 `json:"vb_replica_queue_fill"`
|
||||||
|
VbReplicaQueueSize []float64 `json:"vb_replica_queue_size"`
|
||||||
|
VbTotalQueueAge []float64 `json:"vb_total_queue_age"`
|
||||||
|
XdcOps []float64 `json:"xdc_ops"`
|
||||||
|
Allocstall []float64 `json:"allocstall"`
|
||||||
|
CPUCoresAvailable []float64 `json:"cpu_cores_available"`
|
||||||
|
CPUIrqRate []float64 `json:"cpu_irq_rate"`
|
||||||
|
CPUStolenRate []float64 `json:"cpu_stolen_rate"`
|
||||||
|
CPUSysRate []float64 `json:"cpu_sys_rate"`
|
||||||
|
CPUUserRate []float64 `json:"cpu_user_rate"`
|
||||||
|
CPUUtilizationRate []float64 `json:"cpu_utilization_rate"`
|
||||||
|
HibernatedRequests []float64 `json:"hibernated_requests"`
|
||||||
|
HibernatedWaked []float64 `json:"hibernated_waked"`
|
||||||
|
MemActualFree []float64 `json:"mem_actual_free"`
|
||||||
|
MemActualUsed []float64 `json:"mem_actual_used"`
|
||||||
|
MemFree []float64 `json:"mem_free"`
|
||||||
|
MemLimit []float64 `json:"mem_limit"`
|
||||||
|
MemTotal []float64 `json:"mem_total"`
|
||||||
|
MemUsedSys []float64 `json:"mem_used_sys"`
|
||||||
|
OdpReportFailed []float64 `json:"odp_report_failed"`
|
||||||
|
RestRequests []float64 `json:"rest_requests"`
|
||||||
|
SwapTotal []float64 `json:"swap_total"`
|
||||||
|
SwapUsed []float64 `json:"swap_used"`
|
||||||
|
} `json:"samples"`
|
||||||
|
Samplescount int `json:"samplesCount"`
|
||||||
|
Ispersistent bool `json:"isPersistent"`
|
||||||
|
Lasttstamp int64 `json:"lastTStamp"`
|
||||||
|
Interval int `json:"interval"`
|
||||||
|
} `json:"op"`
|
||||||
|
HotKeys []interface{} `json:"hot_keys"`
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue