tool/data/config/metric/collection.go (125 lines of code) (raw):
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: MIT
package metric
import (
"github.com/aws/amazon-cloudwatch-agent/tool/data/config/metric/collectd"
"github.com/aws/amazon-cloudwatch-agent/tool/data/config/metric/linux"
"github.com/aws/amazon-cloudwatch-agent/tool/data/config/metric/statsd"
"github.com/aws/amazon-cloudwatch-agent/tool/data/config/metric/windows"
"github.com/aws/amazon-cloudwatch-agent/tool/runtime"
"github.com/aws/amazon-cloudwatch-agent/tool/util"
)
type Collection struct {
//linux
CPU *linux.CPU
Disk *linux.Disk
DiskIO *linux.DiskIO
Memory *linux.Memory
Net *linux.Net
NetStat *linux.NetStat
Swap *linux.Swap
//windows
WinLogicalDisk *windows.LogicalDisk
WinPhysicalDisk *windows.PhysicalDisk
WinMemory *windows.Memory
WinNetworkInterface *windows.NetworkInterface
WinProcessor *windows.Processor
WinTCPv4 *windows.TCPv4
WinTCPv6 *windows.TCPv6
WinPagingFile *windows.PagingFile
//statsd
StatsD *statsd.StatsD
//collectd linux only
CollectD *collectd.CollectD
}
func (config *Collection) ToMap(ctx *runtime.Context) (string, map[string]interface{}) {
resultMap := make(map[string]interface{})
if ctx.OsParameter == util.OsTypeWindows {
if config.WinLogicalDisk != nil {
util.AddToMap(ctx, resultMap, config.WinLogicalDisk)
}
if config.WinPhysicalDisk != nil {
util.AddToMap(ctx, resultMap, config.WinPhysicalDisk)
}
if config.WinMemory != nil {
util.AddToMap(ctx, resultMap, config.WinMemory)
}
if config.WinNetworkInterface != nil {
util.AddToMap(ctx, resultMap, config.WinNetworkInterface)
}
if config.WinProcessor != nil {
util.AddToMap(ctx, resultMap, config.WinProcessor)
}
if config.WinTCPv4 != nil {
util.AddToMap(ctx, resultMap, config.WinTCPv4)
}
if config.WinTCPv6 != nil {
util.AddToMap(ctx, resultMap, config.WinTCPv6)
}
if config.WinPagingFile != nil {
util.AddToMap(ctx, resultMap, config.WinPagingFile)
}
} else {
//Difficult to check an interface is nil or not. https://github.com/golang/go/issues/17346
if config.CPU != nil {
util.AddToMap(ctx, resultMap, config.CPU)
}
if config.Disk != nil {
util.AddToMap(ctx, resultMap, config.Disk)
}
if config.DiskIO != nil {
util.AddToMap(ctx, resultMap, config.DiskIO)
}
if config.Memory != nil {
util.AddToMap(ctx, resultMap, config.Memory)
}
if config.Net != nil {
util.AddToMap(ctx, resultMap, config.Net)
}
if config.NetStat != nil {
util.AddToMap(ctx, resultMap, config.NetStat)
}
if config.Swap != nil {
util.AddToMap(ctx, resultMap, config.Swap)
}
if config.CollectD != nil {
util.AddToMap(ctx, resultMap, config.CollectD)
}
}
if config.StatsD != nil {
util.AddToMap(ctx, resultMap, config.StatsD)
}
return "metrics_collected", resultMap
}
func (config *Collection) EnableAll(ctx *runtime.Context) {
if ctx.OsParameter == util.OsTypeWindows {
config.WinLogicalDisk = new(windows.LogicalDisk)
config.WinLogicalDisk.Enable()
config.WinPhysicalDisk = new(windows.PhysicalDisk)
config.WinPhysicalDisk.Enable()
config.WinMemory = new(windows.Memory)
config.WinMemory.Enable()
config.WinNetworkInterface = new(windows.NetworkInterface)
config.WinNetworkInterface.Enable()
config.WinProcessor = new(windows.Processor)
config.WinProcessor.Enable()
config.WinTCPv4 = new(windows.TCPv4)
config.WinTCPv4.Enable()
config.WinTCPv6 = new(windows.TCPv6)
config.WinTCPv6.Enable()
config.WinPagingFile = new(windows.PagingFile)
config.WinPagingFile.Enable()
} else {
config.CPU = new(linux.CPU)
config.CPU.Enable()
config.Disk = new(linux.Disk)
config.Disk.Enable()
config.DiskIO = new(linux.DiskIO)
config.DiskIO.Enable()
config.Memory = new(linux.Memory)
config.Memory.Enable()
config.Net = new(linux.Net)
config.Net.Enable()
config.NetStat = new(linux.NetStat)
config.NetStat.Enable()
config.Swap = new(linux.Swap)
config.Swap.Enable()
config.CollectD = new(collectd.CollectD)
config.CollectD.Enable()
}
config.StatsD = new(statsd.StatsD)
config.StatsD.Enable()
}