Skip to content

Commit

Permalink
exporter/signalfx: Add k8s metrics to default excludes (#2167)
Browse files Browse the repository at this point in the history
* exporter/signalfx: Add non-default kubelet metrics to default excludes

* Add SignalFx Agent non-default metrics

* Add test for non-defaults
  • Loading branch information
asuresh4 committed Jan 27, 2021
1 parent 63b2f33 commit c7282a5
Show file tree
Hide file tree
Showing 4 changed files with 531 additions and 0 deletions.
60 changes: 60 additions & 0 deletions exporter/signalfxexporter/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -876,6 +876,66 @@ func TestDefaultCPUTranslations(t *testing.T) {
}
}

func TestDefaultExcludes_translated(t *testing.T) {
f := NewFactory()
cfg := f.CreateDefaultConfig().(*Config)
setDefaultExcludes(cfg)

converter, err := translation.NewMetricsConverter(zap.NewNop(), testGetTranslator(t), cfg.ExcludeMetrics, cfg.IncludeMetrics)
require.NoError(t, err)

var metrics []map[string]string
err = testReadJSON("testdata/json/non_default_metrics.json", &metrics)
require.NoError(t, err)

rms := getResourceMetrics(metrics)
require.Equal(t, 62, rms.InstrumentationLibraryMetrics().At(0).Metrics().Len())
dps := converter.MetricDataToSignalFxV2(rms)
require.Equal(t, 0, len(dps))
}

func TestDefaultExcludes_not_translated(t *testing.T) {
f := NewFactory()
cfg := f.CreateDefaultConfig().(*Config)
setDefaultExcludes(cfg)

converter, err := translation.NewMetricsConverter(zap.NewNop(), nil, cfg.ExcludeMetrics, cfg.IncludeMetrics)
require.NoError(t, err)

var metrics []map[string]string
err = testReadJSON("testdata/json/non_default_metrics_otel_convention.json", &metrics)
require.NoError(t, err)

rms := getResourceMetrics(metrics)
require.Equal(t, 72, rms.InstrumentationLibraryMetrics().At(0).Metrics().Len())
dps := converter.MetricDataToSignalFxV2(rms)
require.Equal(t, 0, len(dps))
}

func getResourceMetrics(metrics []map[string]string) pdata.ResourceMetrics {
rms := pdata.NewResourceMetrics()
rms.InstrumentationLibraryMetrics().Resize(1)
ilms := rms.InstrumentationLibraryMetrics().At(0)
ilms.Metrics().Resize(len(metrics))

for i, mp := range metrics {
m := ilms.Metrics().At(i)
// Set data type to some arbitrary since it does not matter for this test.
m.SetDataType(pdata.MetricDataTypeIntSum)
m.IntSum().DataPoints().Resize(1)
m.IntSum().DataPoints().At(0).SetValue(0)
labelsMap := m.IntSum().DataPoints().At(0).LabelsMap()
for k, v := range mp {
if v == "" {
m.SetName(k)
continue
}
labelsMap.Insert(k, v)
}
}
return rms
}

func testReadJSON(f string, v interface{}) error {
file, err := os.Open(f)
if err != nil {
Expand Down
188 changes: 188 additions & 0 deletions exporter/signalfxexporter/testdata/json/non_default_metrics.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
[
{
"cpu.interrupt": null
},
{
"cpu.nice": null
},
{
"cpu.softirq": null
},
{
"cpu.steal": null
},
{
"cpu.system": null
},
{
"cpu.user": null
},
{
"cpu.utilization_per_core": null
},
{
"cpu.wait": null
},
{
"memory.available": null
},
{
"df_complex.reserved": null
},
{
"df_inodes.free": null
},
{
"df_inodes.used": null
},
{
"percent_inodes.free": null
},
{
"percent_inodes.used": null
},
{
"percent_bytes.free": null
},
{
"percent_bytes.free": null
},
{
"percent_bytes.free": null
},
{
"disk_merged.read": null
},
{
"disk_merged.write": null
},
{
"disk_octets.read": null
},
{
"disk_octets.write": null
},
{
"disk_ops.pending": null
},
{
"disk_time.read": null
},
{
"disk_time.write": null
},
{
"disk_octets.avg_read": null
},
{
"disk_octets.avg_write": null
},
{
"disk_time.avg_read": null
},
{
"disk_time.avg_write": null
},
{
"if_dropped.rx": null
},
{
"if_dropped.tx": null
},
{
"if_packets.rx": null
},
{
"if_packets.tx": null
},
{
"kubernetes.cronjob.active": null
},
{
"kubernetes.daemon_set.updated": null
},
{
"kubernetes.deployment.updated": null
},
{
"kubernetes.job.active": null
},
{
"kubernetes.job.completions": null
},
{
"kubernetes.job.failed": null
},
{
"kubernetes.job.parallelism": null
},
{
"kubernetes.job.succeeded": null
},
{
"kubernetes.stateful_set.current": null
},
{
"kubernetes.stateful_set.desired": null
},
{
"kubernetes.stateful_set.ready": null
},
{
"kubernetes.stateful_set.updated": null
},
{
"kubernetes.container_cpu_request": null
},
{
"kubernetes.container_ephemeral_storage_limit": null
},
{
"kubernetes.container_ephemeral_storage_request": null
},
{
"kubernetes.container_memory_request": null
},
{
"k8s.node.condition_memory_pressure": null
},
{
"k8s.node.condition_network_unavailable": null
},
{
"k8s.node.condition_out_of_disk": null
},
{
"k8s.node.condition_p_i_d_pressure": null
},
{
"container_memory_available_bytes": null
},
{
"container_memory_major_page_faults": null
},
{
"container_memory_page_faults": null
},
{
"container_memory_rss_bytes": null
},
{
"container_memory_working_set_bytes": null
},
{
"pod_ephemeral_storage_used_bytes": null
},
{
"pod_ephemeral_storage_capacity_bytes": null
},
{
"kubernetes.volume_inodes": null
},
{
"kubernetes.volume_inodes_free": null
},
{
"kubernetes.volume_inodes_used": null
}
]
Loading

0 comments on commit c7282a5

Please sign in to comment.