firehol/netdata

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

Summary

Maintainability
A
0 mins
Test Coverage
// SPDX-License-Identifier: GPL-3.0-or-later

package lvm

import (
    "fmt"

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

const (
    prioLVDataPercent = 2920 + iota
    prioLVMetadataPercent
)

var lvThinPoolChartsTmpl = module.Charts{
    lvDataSpaceUtilizationChartTmpl.Copy(),
    lvMetadataSpaceUtilizationChartTmpl.Copy(),
}

var (
    lvDataSpaceUtilizationChartTmpl = module.Chart{
        ID:       "lv_%s_vg_%s_lv_data_space_utilization",
        Title:    "Logical volume space allocated for data",
        Units:    "percentage",
        Fam:      "lv space usage",
        Ctx:      "lvm.lv_data_space_utilization",
        Type:     module.Area,
        Priority: prioLVDataPercent,
        Dims: module.Dims{
            {ID: "lv_%s_vg_%s_data_percent", Name: "utilization", Div: 100},
        },
    }
    lvMetadataSpaceUtilizationChartTmpl = module.Chart{
        ID:       "lv_%s_vg_%s_lv_metadata_space_utilization",
        Title:    "Logical volume space allocated for metadata",
        Units:    "percentage",
        Fam:      "lv space usage",
        Ctx:      "lvm.lv_metadata_space_utilization",
        Type:     module.Area,
        Priority: prioLVMetadataPercent,
        Dims: module.Dims{
            {ID: "lv_%s_vg_%s_metadata_percent", Name: "utilization", Div: 100},
        },
    }
)

func (l *LVM) addLVMThinPoolCharts(lvName, vgName string) {
    charts := lvThinPoolChartsTmpl.Copy()

    for _, chart := range *charts {
        chart.ID = fmt.Sprintf(chart.ID, lvName, vgName)
        chart.Labels = []module.Label{
            {Key: "lv_name", Value: lvName},
            {Key: "vg_name", Value: vgName},
            {Key: "volume_type", Value: "thin_pool"},
        }
        for _, dim := range chart.Dims {
            dim.ID = fmt.Sprintf(dim.ID, lvName, vgName)
        }
    }

    if err := l.Charts().Add(*charts...); err != nil {
        l.Warning(err)
    }
}