youtubebeat/vendor/github.com/elastic/beats/metricbeat/module/couchbase/node/data.go

164 lines
5.4 KiB
Go

// Licensed to Elasticsearch B.V. under one or more contributor
// license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright
// ownership. Elasticsearch B.V. licenses this file to you under
// the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package node
import (
"encoding/json"
"strconv"
"github.com/elastic/beats/libbeat/common"
"github.com/elastic/beats/libbeat/logp"
)
type NodeSystemStats struct {
CPUUtilizationRate float64 `json:"cpu_utilization_rate"`
SwapTotal int64 `json:"swap_total"`
SwapUsed int64 `json:"swap_used"`
MemTotal int64 `json:"mem_total"`
MemFree int64 `json:"mem_free"`
}
type NodeInterestingStats struct {
CmdGet int64 `json:"cmd_get"`
CouchDocsActualDiskSize int64 `json:"couch_docs_actual_disk_size"`
CouchDocsDataSize int64 `json:"couch_docs_data_size"`
CouchSpatialDataSize int64 `json:"couch_spatial_data_size"`
CouchSpatialDiskSize int64 `json:"couch_spatial_disk_size"`
CouchViewsActualDiskSize int64 `json:"couch_views_actual_disk_size"`
CouchViewsDataSize int64 `json:"couch_views_data_size"`
CurrItems int64 `json:"curr_items"`
CurrItemsTot int64 `json:"curr_items_tot"`
EpBgFetched int64 `json:"ep_bg_fetched"`
GetHits int64 `json:"get_hits"`
MemUsed int64 `json:"mem_used"`
Ops int64 `json:"ops"`
VbReplicaCurrItems int64 `json:"vb_replica_curr_items"`
}
type Node struct {
SystemStats NodeSystemStats `json:"systemStats"`
InterestingStats NodeInterestingStats `json:"interestingStats"`
Uptime string `json:"uptime"`
MemoryTotal int64 `json:"memoryTotal"`
MemoryFree int64 `json:"memoryFree"`
McdMemoryReserved int64 `json:"mcdMemoryReserved"`
McdMemoryAllocated int64 `json:"mcdMemoryAllocated"`
ClusterMembership string `json:"clusterMembership"`
RecoveryType string `json:"recoveryType"`
Status string `json:"status"`
ThisNode bool `json:"thisNode"`
Hostname string `json:"hostname"`
ClusterCompatibility int64 `json:"clusterCompatibility"`
Version string `json:"version"`
Os string `json:"os"`
}
type Data struct {
Nodes []Node `json:"nodes"`
}
func eventsMapping(content []byte) []common.MapStr {
var d Data
err := json.Unmarshal(content, &d)
if err != nil {
logp.Err("Error: ", err)
}
events := []common.MapStr{}
for _, NodeItem := range d.Nodes {
uptime, _ := strconv.ParseInt(NodeItem.Uptime, 10, 64)
event := common.MapStr{
"cmd_get": NodeItem.InterestingStats.CmdGet,
"couch": common.MapStr{
"docs": common.MapStr{
"disk_size": common.MapStr{
"bytes": NodeItem.InterestingStats.CouchDocsActualDiskSize,
},
"data_size": common.MapStr{
"bytes": NodeItem.InterestingStats.CouchDocsDataSize,
},
},
"spatial": common.MapStr{
"data_size": common.MapStr{
"bytes": NodeItem.InterestingStats.CouchSpatialDataSize,
},
"disk_size": common.MapStr{
"bytes": NodeItem.InterestingStats.CouchSpatialDiskSize,
},
},
"views": common.MapStr{
"disk_size": common.MapStr{
"bytes": NodeItem.InterestingStats.CouchViewsActualDiskSize,
},
"data_size": common.MapStr{
"bytes": NodeItem.InterestingStats.CouchViewsDataSize,
},
},
},
"cpu_utilization_rate": common.MapStr{
"pct": NodeItem.SystemStats.CPUUtilizationRate,
},
"current_items": common.MapStr{
"value": NodeItem.InterestingStats.CurrItems,
"total": NodeItem.InterestingStats.CurrItemsTot,
},
"ep_bg_fetched": NodeItem.InterestingStats.EpBgFetched,
"get_hits": NodeItem.InterestingStats.GetHits,
"hostname": NodeItem.Hostname,
"mcd_memory": common.MapStr{
"reserved": common.MapStr{
"bytes": NodeItem.McdMemoryReserved,
},
"allocated": common.MapStr{
"bytes": NodeItem.McdMemoryAllocated,
},
},
"memory": common.MapStr{
"total": common.MapStr{
"bytes": NodeItem.SystemStats.MemTotal,
},
"free": common.MapStr{
"bytes": NodeItem.SystemStats.MemFree,
},
"used": common.MapStr{
"bytes": NodeItem.InterestingStats.MemUsed,
},
},
"ops": NodeItem.InterestingStats.Ops,
"swap": common.MapStr{
"total": common.MapStr{
"bytes": NodeItem.SystemStats.SwapTotal,
},
"used": common.MapStr{
"bytes": NodeItem.SystemStats.SwapUsed,
},
},
"uptime": common.MapStr{
"sec": uptime,
},
"vb_replica_curr_items": NodeItem.InterestingStats.VbReplicaCurrItems,
}
events = append(events, event)
}
return events
}