firehol/netdata

View on GitHub
src/go/plugin/go.d/modules/memcached/charts.go

Summary

Maintainability
B
6 hrs
Test Coverage
// SPDX-License-Identifier: GPL-3.0-or-later

package memcached

import (
    "github.com/netdata/netdata/go/plugins/plugin/go.d/agent/module"
)

const (
    prioCache = module.Priority + iota
    prioNet
    prioConnections
    prioItems
    prioEvictedReclaimed
    prioGet
    prioGetRate
    prioSetRate
    prioDelete
    prioCas
    prioIncrement
    prioDecrement
    prioTouch
    prioTouchRate
)

var charts = module.Charts{
    cacheChart.Copy(),
    netChart.Copy(),
    connectionsChart.Copy(),
    itemsChart.Copy(),
    EvictedReclaimedChart.Copy(),
    getChart.Copy(),
    getRateChart.Copy(),
    setRateChart.Copy(),
    deleteChart.Copy(),
    casChart.Copy(),
    incrementChart.Copy(),
    decrementChart.Copy(),
    touchChart.Copy(),
    touchRateChart.Copy(),
}

const (
    byteToMiB = 1 << 20
)

var (
    cacheChart = module.Chart{
        ID:       "cache",
        Title:    "Cache Size",
        Units:    "MiB",
        Fam:      "cache",
        Ctx:      "memcached.cache",
        Type:     module.Stacked,
        Priority: prioCache,
        Dims: module.Dims{
            {ID: "avail", Div: byteToMiB},
            {ID: "bytes", Name: "used", Div: byteToMiB},
        },
    }
    netChart = module.Chart{
        ID:       "net",
        Title:    "Network",
        Units:    "kilobits/s",
        Fam:      "network",
        Ctx:      "memcached.net",
        Type:     module.Area,
        Priority: prioNet,
        Dims: module.Dims{
            {ID: "bytes_read", Name: "in", Mul: 8, Div: 1000, Algo: module.Incremental},
            {ID: "bytes_written", Name: "out", Mul: -8, Div: 1000, Algo: module.Incremental},
        },
    }
    connectionsChart = module.Chart{
        ID:       "connections",
        Title:    "Connections",
        Units:    "connections/s",
        Fam:      "connections",
        Ctx:      "memcached.connections",
        Type:     module.Line,
        Priority: prioConnections,
        Dims: module.Dims{
            {ID: "curr_connections", Name: "current", Algo: module.Incremental},
            {ID: "rejected_connections", Name: "rejected", Algo: module.Incremental},
            {ID: "total_connections", Name: "total", Algo: module.Incremental},
        },
    }
    itemsChart = module.Chart{
        ID:       "items",
        Title:    "Items",
        Units:    "items",
        Fam:      "items",
        Ctx:      "memcached.items",
        Type:     module.Line,
        Priority: prioItems,
        Dims: module.Dims{
            {ID: "curr_items", Name: "current"},
            {ID: "total_items", Name: "total"},
        },
    }
    EvictedReclaimedChart = module.Chart{
        ID:       "evicted_reclaimed",
        Title:    "Evicted and Reclaimed Items",
        Units:    "items",
        Fam:      "items",
        Ctx:      "memcached.evicted_reclaimed",
        Type:     module.Line,
        Priority: prioEvictedReclaimed,
        Dims: module.Dims{
            {ID: "reclaimed"},
            {ID: "evictions", Name: "evicted"},
        },
    }
    getChart = module.Chart{
        ID:       "get",
        Title:    "Get Requests",
        Units:    "requests",
        Fam:      "get ops",
        Ctx:      "memcached.get",
        Type:     module.Stacked,
        Priority: prioGet,
        Dims: module.Dims{
            {ID: "get_hits", Name: "hits", Algo: module.PercentOfAbsolute},
            {ID: "get_misses", Name: "misses", Algo: module.PercentOfAbsolute},
        },
    }
    getRateChart = module.Chart{
        ID:       "get_rate",
        Title:    "Get Request Rate",
        Units:    "requests/s",
        Fam:      "get ops",
        Ctx:      "memcached.get_rate",
        Type:     module.Line,
        Priority: prioGetRate,
        Dims: module.Dims{
            {ID: "cmd_get", Name: "rate", Algo: module.Incremental},
        },
    }
    setRateChart = module.Chart{
        ID:       "set_rate",
        Title:    "Set Request Rate",
        Units:    "requests/s",
        Fam:      "set ops",
        Ctx:      "memcached.set_rate",
        Type:     module.Line,
        Priority: prioSetRate,
        Dims: module.Dims{
            {ID: "cmd_set", Name: "rate", Algo: module.Incremental},
        },
    }
    deleteChart = module.Chart{
        ID:       "delete",
        Title:    "Delete Requests",
        Units:    "requests",
        Fam:      "delete ops",
        Ctx:      "memcached.delete",
        Type:     module.Stacked,
        Priority: prioDelete,
        Dims: module.Dims{
            {ID: "delete_hits", Name: "hits", Algo: module.PercentOfAbsolute},
            {ID: "delete_misses", Name: "misses", Algo: module.PercentOfAbsolute},
        },
    }
    casChart = module.Chart{
        ID:       "cas",
        Title:    "Check and Set Requests",
        Units:    "requests",
        Fam:      "check and set ops",
        Ctx:      "memcached.cas",
        Type:     module.Stacked,
        Priority: prioCas,
        Dims: module.Dims{
            {ID: "cas_hits", Name: "hits", Algo: module.PercentOfAbsolute},
            {ID: "cas_misses", Name: "misses", Algo: module.PercentOfAbsolute},
            {ID: "cas_badval", Name: "bad value", Algo: module.PercentOfAbsolute},
        },
    }
    incrementChart = module.Chart{
        ID:       "increment",
        Title:    "Increment Requests",
        Units:    "requests",
        Fam:      "increment ops",
        Ctx:      "memcached.increment",
        Type:     module.Stacked,
        Priority: prioIncrement,
        Dims: module.Dims{
            {ID: "incr_hits", Name: "hits", Algo: module.PercentOfAbsolute},
            {ID: "incr_misses", Name: "misses", Algo: module.PercentOfAbsolute},
        },
    }
    decrementChart = module.Chart{
        ID:       "decrement",
        Title:    "Decrement Requests",
        Units:    "requests",
        Fam:      "decrement ops",
        Ctx:      "memcached.decrement",
        Type:     module.Stacked,
        Priority: prioDecrement,
        Dims: module.Dims{
            {ID: "decr_hits", Name: "hits", Algo: module.PercentOfAbsolute},
            {ID: "decr_misses", Name: "misses", Algo: module.PercentOfAbsolute},
        },
    }
    touchChart = module.Chart{
        ID:       "touch",
        Title:    "Touch Requests",
        Units:    "requests",
        Fam:      "touch ops",
        Ctx:      "memcached.touch",
        Type:     module.Stacked,
        Priority: prioTouch,
        Dims: module.Dims{
            {ID: "touch_hits", Name: "hits", Algo: module.PercentOfAbsolute},
            {ID: "touch_misses", Name: "misses", Algo: module.PercentOfAbsolute},
        },
    }
    touchRateChart = module.Chart{
        ID:       "touch_rate",
        Title:    "Touch Requests Rate",
        Units:    "requests/s",
        Fam:      "touch ops",
        Ctx:      "memcached.touch_rate",
        Type:     module.Line,
        Priority: prioTouchRate,
        Dims: module.Dims{
            {ID: "cmd_touch", Name: "rate", Algo: module.Incremental},
        },
    }
)