290 lines
7.7 KiB
Go
290 lines
7.7 KiB
Go
package kubernetes
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/influxdata/telegraf/testutil"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestKubernetesStats(t *testing.T) {
|
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.WriteHeader(http.StatusOK)
|
|
fmt.Fprintln(w, response)
|
|
}))
|
|
defer ts.Close()
|
|
|
|
k := &Kubernetes{
|
|
URL: ts.URL,
|
|
}
|
|
|
|
var acc testutil.Accumulator
|
|
err := k.Gather(&acc)
|
|
require.NoError(t, err)
|
|
|
|
fields := map[string]interface{}{
|
|
"cpu_usage_nanocores": int64(56652446),
|
|
"cpu_usage_core_nanoseconds": int64(101437561712262),
|
|
"memory_usage_bytes": int64(62529536),
|
|
"memory_working_set_bytes": int64(62349312),
|
|
"memory_rss_bytes": int64(47509504),
|
|
"memory_page_faults": int64(4769397409),
|
|
"memory_major_page_faults": int64(13),
|
|
"rootfs_available_bytes": int64(84379979776),
|
|
"rootfs_capacity_bytes": int64(105553100800),
|
|
"logsfs_avaialble_bytes": int64(84379979776),
|
|
"logsfs_capacity_bytes": int64(105553100800),
|
|
}
|
|
tags := map[string]string{
|
|
"node_name": "node1",
|
|
"container_name": "kubelet",
|
|
}
|
|
acc.AssertContainsTaggedFields(t, "kubernetes_system_container", fields, tags)
|
|
|
|
fields = map[string]interface{}{
|
|
"cpu_usage_nanocores": int64(576996212),
|
|
"cpu_usage_core_nanoseconds": int64(774129887054161),
|
|
"memory_usage_bytes": int64(12313182208),
|
|
"memory_working_set_bytes": int64(5081538560),
|
|
"memory_rss_bytes": int64(35586048),
|
|
"memory_page_faults": int64(351742),
|
|
"memory_major_page_faults": int64(1236),
|
|
"memory_available_bytes": int64(10726387712),
|
|
"network_rx_bytes": int64(213281337459),
|
|
"network_rx_errors": int64(0),
|
|
"network_tx_bytes": int64(292869995684),
|
|
"network_tx_errors": int64(0),
|
|
"fs_available_bytes": int64(84379979776),
|
|
"fs_capacity_bytes": int64(105553100800),
|
|
"fs_used_bytes": int64(16754286592),
|
|
"runtime_image_fs_available_bytes": int64(84379979776),
|
|
"runtime_image_fs_capacity_bytes": int64(105553100800),
|
|
"runtime_image_fs_used_bytes": int64(5809371475),
|
|
}
|
|
tags = map[string]string{
|
|
"node_name": "node1",
|
|
}
|
|
acc.AssertContainsTaggedFields(t, "kubernetes_node", fields, tags)
|
|
|
|
fields = map[string]interface{}{
|
|
"cpu_usage_nanocores": int64(846503),
|
|
"cpu_usage_core_nanoseconds": int64(56507553554),
|
|
"memory_usage_bytes": int64(30789632),
|
|
"memory_working_set_bytes": int64(30789632),
|
|
"memory_rss_bytes": int64(30695424),
|
|
"memory_page_faults": int64(10761),
|
|
"memory_major_page_faults": int64(0),
|
|
"rootfs_available_bytes": int64(84379979776),
|
|
"rootfs_capacity_bytes": int64(105553100800),
|
|
"rootfs_used_bytes": int64(57344),
|
|
"logsfs_avaialble_bytes": int64(84379979776),
|
|
"logsfs_capacity_bytes": int64(105553100800),
|
|
"logsfs_used_bytes": int64(24576),
|
|
}
|
|
tags = map[string]string{
|
|
"node_name": "node1",
|
|
"container_name": "foocontainer",
|
|
"namespace": "foons",
|
|
"pod_name": "foopod",
|
|
}
|
|
acc.AssertContainsTaggedFields(t, "kubernetes_pod_container", fields, tags)
|
|
|
|
fields = map[string]interface{}{
|
|
"available_bytes": int64(7903948800),
|
|
"capacity_bytes": int64(7903961088),
|
|
"used_bytes": int64(12288),
|
|
}
|
|
tags = map[string]string{
|
|
"node_name": "node1",
|
|
"volume_name": "volume1",
|
|
"namespace": "foons",
|
|
"pod_name": "foopod",
|
|
}
|
|
acc.AssertContainsTaggedFields(t, "kubernetes_pod_volume", fields, tags)
|
|
|
|
fields = map[string]interface{}{
|
|
"rx_bytes": int64(70749124),
|
|
"rx_errors": int64(0),
|
|
"tx_bytes": int64(47813506),
|
|
"tx_errors": int64(0),
|
|
}
|
|
tags = map[string]string{
|
|
"node_name": "node1",
|
|
"namespace": "foons",
|
|
"pod_name": "foopod",
|
|
}
|
|
acc.AssertContainsTaggedFields(t, "kubernetes_pod_network", fields, tags)
|
|
|
|
}
|
|
|
|
var response = `
|
|
{
|
|
"node": {
|
|
"nodeName": "node1",
|
|
"systemContainers": [
|
|
{
|
|
"name": "kubelet",
|
|
"startTime": "2016-08-25T18:46:52Z",
|
|
"cpu": {
|
|
"time": "2016-09-27T16:57:31Z",
|
|
"usageNanoCores": 56652446,
|
|
"usageCoreNanoSeconds": 101437561712262
|
|
},
|
|
"memory": {
|
|
"time": "2016-09-27T16:57:31Z",
|
|
"usageBytes": 62529536,
|
|
"workingSetBytes": 62349312,
|
|
"rssBytes": 47509504,
|
|
"pageFaults": 4769397409,
|
|
"majorPageFaults": 13
|
|
},
|
|
"rootfs": {
|
|
"availableBytes": 84379979776,
|
|
"capacityBytes": 105553100800
|
|
},
|
|
"logs": {
|
|
"availableBytes": 84379979776,
|
|
"capacityBytes": 105553100800
|
|
},
|
|
"userDefinedMetrics": null
|
|
},
|
|
{
|
|
"name": "bar",
|
|
"startTime": "2016-08-25T18:46:52Z",
|
|
"cpu": {
|
|
"time": "2016-09-27T16:57:31Z",
|
|
"usageNanoCores": 56652446,
|
|
"usageCoreNanoSeconds": 101437561712262
|
|
},
|
|
"memory": {
|
|
"time": "2016-09-27T16:57:31Z",
|
|
"usageBytes": 62529536,
|
|
"workingSetBytes": 62349312,
|
|
"rssBytes": 47509504,
|
|
"pageFaults": 4769397409,
|
|
"majorPageFaults": 13
|
|
},
|
|
"rootfs": {
|
|
"availableBytes": 84379979776,
|
|
"capacityBytes": 105553100800
|
|
},
|
|
"logs": {
|
|
"availableBytes": 84379979776,
|
|
"capacityBytes": 105553100800
|
|
},
|
|
"userDefinedMetrics": null
|
|
}
|
|
],
|
|
"startTime": "2016-08-25T18:46:52Z",
|
|
"cpu": {
|
|
"time": "2016-09-27T16:57:41Z",
|
|
"usageNanoCores": 576996212,
|
|
"usageCoreNanoSeconds": 774129887054161
|
|
},
|
|
"memory": {
|
|
"time": "2016-09-27T16:57:41Z",
|
|
"availableBytes": 10726387712,
|
|
"usageBytes": 12313182208,
|
|
"workingSetBytes": 5081538560,
|
|
"rssBytes": 35586048,
|
|
"pageFaults": 351742,
|
|
"majorPageFaults": 1236
|
|
},
|
|
"network": {
|
|
"time": "2016-09-27T16:57:41Z",
|
|
"rxBytes": 213281337459,
|
|
"rxErrors": 0,
|
|
"txBytes": 292869995684,
|
|
"txErrors": 0
|
|
},
|
|
"fs": {
|
|
"availableBytes": 84379979776,
|
|
"capacityBytes": 105553100800,
|
|
"usedBytes": 16754286592
|
|
},
|
|
"runtime": {
|
|
"imageFs": {
|
|
"availableBytes": 84379979776,
|
|
"capacityBytes": 105553100800,
|
|
"usedBytes": 5809371475
|
|
}
|
|
}
|
|
},
|
|
"pods": [
|
|
{
|
|
"podRef": {
|
|
"name": "foopod",
|
|
"namespace": "foons",
|
|
"uid": "6d305b06-8419-11e6-825c-42010af000ae"
|
|
},
|
|
"startTime": "2016-09-26T18:45:42Z",
|
|
"containers": [
|
|
{
|
|
"name": "foocontainer",
|
|
"startTime": "2016-09-26T18:46:43Z",
|
|
"cpu": {
|
|
"time": "2016-09-27T16:57:32Z",
|
|
"usageNanoCores": 846503,
|
|
"usageCoreNanoSeconds": 56507553554
|
|
},
|
|
"memory": {
|
|
"time": "2016-09-27T16:57:32Z",
|
|
"usageBytes": 30789632,
|
|
"workingSetBytes": 30789632,
|
|
"rssBytes": 30695424,
|
|
"pageFaults": 10761,
|
|
"majorPageFaults": 0
|
|
},
|
|
"rootfs": {
|
|
"availableBytes": 84379979776,
|
|
"capacityBytes": 105553100800,
|
|
"usedBytes": 57344
|
|
},
|
|
"logs": {
|
|
"availableBytes": 84379979776,
|
|
"capacityBytes": 105553100800,
|
|
"usedBytes": 24576
|
|
},
|
|
"userDefinedMetrics": null
|
|
}
|
|
],
|
|
"network": {
|
|
"time": "2016-09-27T16:57:34Z",
|
|
"rxBytes": 70749124,
|
|
"rxErrors": 0,
|
|
"txBytes": 47813506,
|
|
"txErrors": 0
|
|
},
|
|
"volume": [
|
|
{
|
|
"availableBytes": 7903948800,
|
|
"capacityBytes": 7903961088,
|
|
"usedBytes": 12288,
|
|
"name": "volume1"
|
|
},
|
|
{
|
|
"availableBytes": 7903956992,
|
|
"capacityBytes": 7903961088,
|
|
"usedBytes": 4096,
|
|
"name": "volume2"
|
|
},
|
|
{
|
|
"availableBytes": 7903948800,
|
|
"capacityBytes": 7903961088,
|
|
"usedBytes": 12288,
|
|
"name": "volume3"
|
|
},
|
|
{
|
|
"availableBytes": 7903952896,
|
|
"capacityBytes": 7903961088,
|
|
"usedBytes": 8192,
|
|
"name": "volume4"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}`
|