firehol/netdata

View on GitHub
src/go/plugin/go.d/modules/dnsdist/collect.go

Summary

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

package dnsdist

import (
    "net/url"

    "github.com/netdata/netdata/go/plugins/plugin/go.d/pkg/stm"
    "github.com/netdata/netdata/go/plugins/plugin/go.d/pkg/web"
)

const (
    urlPathJSONStat = "/jsonstat"
)

func (d *DNSdist) collect() (map[string]int64, error) {
    statistics, err := d.scrapeStatistics()
    if err != nil {
        return nil, err
    }

    collected := make(map[string]int64)
    d.collectStatistic(collected, statistics)

    return collected, nil
}

func (d *DNSdist) collectStatistic(collected map[string]int64, statistics *statisticMetrics) {
    for metric, value := range stm.ToMap(statistics) {
        collected[metric] = value
    }
}

func (d *DNSdist) scrapeStatistics() (*statisticMetrics, error) {
    req, err := web.NewHTTPRequestWithPath(d.RequestConfig, urlPathJSONStat)
    if err != nil {
        return nil, err
    }
    req.URL.RawQuery = url.Values{"command": []string{"stats"}}.Encode()

    var stats statisticMetrics
    if err := web.DoHTTP(d.httpClient).RequestJSON(req, &stats); err != nil {
        return nil, err
    }

    return &stats, nil
}