fix: Add metric name is a label with name "__name" to Loki output plugin (#10001)

This commit is contained in:
AlphaAr 2021-11-08 18:47:32 -03:00 committed by GitHub
parent 0133f1206b
commit e73ffe56c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 5 additions and 3 deletions

View File

@ -1,6 +1,6 @@
# Loki Output Plugin
This plugin sends logs to Loki, using tags as labels,
This plugin sends logs to Loki, using metric name and tags as labels,
log line will content all fields in `key="value"` format which is easily parsable with `logfmt` parser in Loki.
Logs within each stream are sorted by timestamp before being sent to Loki.

View File

@ -143,6 +143,8 @@ func (l *Loki) Write(metrics []telegraf.Metric) error {
})
for _, m := range metrics {
m.AddTag("__name", m.Name())
tags := m.TagList()
var line string

View File

@ -225,7 +225,7 @@ func TestContentEncodingGzip(t *testing.T) {
require.Len(t, s.Streams, 1)
require.Len(t, s.Streams[0].Logs, 1)
require.Len(t, s.Streams[0].Logs[0], 2)
require.Equal(t, map[string]string{"key1": "value1"}, s.Streams[0].Labels)
require.Equal(t, map[string]string{"__name": "log", "key1": "value1"}, s.Streams[0].Labels)
require.Equal(t, "123000000000", s.Streams[0].Logs[0][0])
require.Contains(t, s.Streams[0].Logs[0][1], "line=\"my log\"")
require.Contains(t, s.Streams[0].Logs[0][1], "field=\"3.14\"")
@ -404,7 +404,7 @@ func TestMetricSorting(t *testing.T) {
require.Len(t, s.Streams, 1)
require.Len(t, s.Streams[0].Logs, 2)
require.Len(t, s.Streams[0].Logs[0], 2)
require.Equal(t, map[string]string{"key1": "value1"}, s.Streams[0].Labels)
require.Equal(t, map[string]string{"__name": "log", "key1": "value1"}, s.Streams[0].Labels)
require.Equal(t, "456000000000", s.Streams[0].Logs[0][0])
require.Contains(t, s.Streams[0].Logs[0][1], "line=\"older log\"")
require.Contains(t, s.Streams[0].Logs[0][1], "field=\"3.14\"")