From b366bfe130ed4794bfc1aeed7501fb602152d888 Mon Sep 17 00:00:00 2001 From: Denis Machard <5562930+dmachard@users.noreply.github.com> Date: Sun, 22 Dec 2024 20:36:49 +0100 Subject: [PATCH] feat(logger): new opentelemetry logger (#912) * new opentelemetry logger * set minimum go version to 1.22 --- .github/workflows/bench-go.yml | 2 +- .github/workflows/build.yml | 4 +- .github/workflows/testing-go.yml | 2 +- README.md | 7 +- dnsutils/dnsmessage.go | 32 ++- dnsutils/dnsmessage_json_test.go | 47 ++++- dnsutils/dnsmessage_text.go | 36 ++++ dnsutils/dnsmessage_text_test.go | 65 ++++-- docs/_examples/use-case-32.yml | 46 +++++ docs/_images/otel_tracing.png | Bin 0 -> 119027 bytes docs/_images/otel_tracing_error.png | Bin 0 -> 116161 bytes docs/collectors/collector_dnstap.md | 4 +- docs/examples.md | 3 + docs/extended_dnstap.md | 2 +- docs/loggers/logger_opentelemetry.md | 29 +++ docs/transformers.md | 1 + docs/workers.md | 1 + go.mod | 16 +- go.sum | 30 ++- pkgconfig/loggers.go | 7 + pkginit/pipelines.go | 4 + workers/otel.go | 299 +++++++++++++++++++++++++++ workers/otel_test.go | 24 +++ workers/powerdns.go | 4 +- 24 files changed, 608 insertions(+), 57 deletions(-) create mode 100644 docs/_examples/use-case-32.yml create mode 100644 docs/_images/otel_tracing.png create mode 100644 docs/_images/otel_tracing_error.png create mode 100644 docs/loggers/logger_opentelemetry.md create mode 100644 workers/otel.go create mode 100644 workers/otel_test.go diff --git a/.github/workflows/bench-go.yml b/.github/workflows/bench-go.yml index 819d55fe..95ac0c0f 100644 --- a/.github/workflows/bench-go.yml +++ b/.github/workflows/bench-go.yml @@ -22,7 +22,7 @@ jobs: strategy: matrix: os-version: [ 'ubuntu-latest' ] - go-version: [ '1.21', '1.22', '1.23' ] + go-version: [ '1.22', '1.23' ] runs-on: ${{ matrix.os-version }} steps: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8ab1e5c7..6f7dc7b5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: strategy: matrix: - go-version: ['1.21', '1.22', '1.23'] + go-version: ['1.22', '1.23'] steps: - uses: actions/checkout@v4 @@ -50,7 +50,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - go-version: ['1.21', '1.22', '1.23'] + go-version: ['1.22', '1.23'] goos: [linux, freebsd, darwin, windows] exclude: - { os: macos-latest, goos: linux } diff --git a/.github/workflows/testing-go.yml b/.github/workflows/testing-go.yml index 60471b80..9832d474 100644 --- a/.github/workflows/testing-go.yml +++ b/.github/workflows/testing-go.yml @@ -46,7 +46,7 @@ jobs: strategy: matrix: os-version: [ 'ubuntu-24.04' ] - go-version: [ '1.21', '1.22', '1.23' ] + go-version: [ '1.22', '1.23' ] package: - '.' - 'pkgconfig' diff --git a/README.md b/README.md index b2f5111a..9adc627c 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@

Go Report - Go version - Go tests + Go version + Go tests Go bench - Go lines + Go lines

@@ -56,6 +56,7 @@ - [`File`](docs/loggers/logger_file.md) with automatic rotation and compression - *Provide metrics and API* - [`Prometheus`](docs/loggers/logger_prometheus.md) exporter + - [`OpenTelemetry`](docs/loggers/logger_opentelemetry.md) tracing dns - [`Statsd`](docs/loggers/logger_statsd.md) support - [`REST API`](docs/loggers/logger_restapi.md) with [swagger](https://generator.swagger.io/?url=https://raw.githubusercontent.com/dmachard/go-dnscollector/main/docs/swagger.yml) to search DNS domains - *Send to remote host with generic transport protocol* diff --git a/dnsutils/dnsmessage.go b/dnsutils/dnsmessage.go index d1993399..be638fcc 100644 --- a/dnsutils/dnsmessage.go +++ b/dnsutils/dnsmessage.go @@ -5,20 +5,10 @@ import ( ) var ( - DNSQuery = "QUERY" - DNSQueryQuiet = "Q" - DNSReply = "REPLY" - DNSReplyQuiet = "R" - PdnsDirectives = regexp.MustCompile(`^powerdns-*`) - GeoIPDirectives = regexp.MustCompile(`^geoip-*`) - SuspiciousDirectives = regexp.MustCompile(`^suspicious-*`) - PublicSuffixDirectives = regexp.MustCompile(`^publixsuffix-*`) - ExtractedDirectives = regexp.MustCompile(`^extracted-*`) - ReducerDirectives = regexp.MustCompile(`^reducer-*`) - MachineLearningDirectives = regexp.MustCompile(`^ml-*`) - FilteringDirectives = regexp.MustCompile(`^filtering-*`) - RawTextDirective = regexp.MustCompile(`^ *\{.*\}`) - ATagsDirectives = regexp.MustCompile(`^atags*`) + DNSQuery = "QUERY" + DNSQueryQuiet = "Q" + DNSReply = "REPLY" + DNSReplyQuiet = "R" ) type DNSAnswer struct { @@ -112,7 +102,7 @@ type DNSTap struct { QueryZone string `json:"query-zone"` } -type PowerDNS struct { +type CollectorPowerDNS struct { Tags []string `json:"tags"` OriginalRequestSubnet string `json:"original-request-subnet"` AppliedPolicy string `json:"applied-policy"` @@ -129,6 +119,10 @@ type PowerDNS struct { DeviceID string `json:"device-id"` } +type LoggerOpenTelemetry struct { + TraceID string `json:"trace-id"` +} + type TransformDNSGeo struct { City string `json:"city"` Continent string `json:"continent"` @@ -209,8 +203,9 @@ type DNSMessage struct { DNS DNS `json:"dns"` EDNS DNSExtended `json:"edns"` DNSTap DNSTap `json:"dnstap"` + PowerDNS *CollectorPowerDNS `json:"powerdns,omitempty"` + OpenTelemetry *LoggerOpenTelemetry `json:"opentelemetry,omitempty"` Geo *TransformDNSGeo `json:"geoip,omitempty"` - PowerDNS *PowerDNS `json:"powerdns,omitempty"` Suspicious *TransformSuspicious `json:"suspicious,omitempty"` PublicSuffix *TransformPublicSuffix `json:"publicsuffix,omitempty"` Extracted *TransformExtracted `json:"extracted,omitempty"` @@ -264,6 +259,7 @@ func (dm *DNSMessage) Init() { } func (dm *DNSMessage) InitTransforms() { + // init transforms dm.ATags = &TransformATags{} dm.Filtering = &TransformFiltering{} dm.MachineLearning = &TransformML{} @@ -271,7 +267,9 @@ func (dm *DNSMessage) InitTransforms() { dm.Extracted = &TransformExtracted{} dm.PublicSuffix = &TransformPublicSuffix{} dm.Suspicious = &TransformSuspicious{} - dm.PowerDNS = &PowerDNS{} dm.Geo = &TransformDNSGeo{} dm.Relabeling = &TransformRelabeling{} + // init collectors & loggers + dm.PowerDNS = &CollectorPowerDNS{} + dm.OpenTelemetry = &LoggerOpenTelemetry{} } diff --git a/dnsutils/dnsmessage_json_test.go b/dnsutils/dnsmessage_json_test.go index 7c4e32fd..7da12266 100644 --- a/dnsutils/dnsmessage_json_test.go +++ b/dnsutils/dnsmessage_json_test.go @@ -101,7 +101,7 @@ func TestDnsMessage_Json_Collectors_Reference(t *testing.T) { }{ { collector: "powerdns", - dmRef: DNSMessage{PowerDNS: &PowerDNS{ + dmRef: DNSMessage{PowerDNS: &CollectorPowerDNS{ OriginalRequestSubnet: "subnet", AppliedPolicy: "basicrpz", AppliedPolicyHit: "hit", @@ -164,6 +164,49 @@ func TestDnsMessage_Json_Collectors_Reference(t *testing.T) { } } +func TestDnsMessage_Json_Loggers_Reference(t *testing.T) { + testcases := []struct { + logger string + dmRef DNSMessage + jsonRef string + }{ + { + logger: "otel", + dmRef: DNSMessage{OpenTelemetry: &LoggerOpenTelemetry{ + TraceID: "27c3e94ad6284eec9a50cfc5bd7384d6", + }}, + + jsonRef: `{ + "opentelemetry": { + "trace-id": "27c3e94ad6284eec9a50cfc5bd7384d6" + } + }`, + }, + } + for _, tc := range testcases { + t.Run(tc.logger, func(t *testing.T) { + + tc.dmRef.Init() + + var dmMap map[string]interface{} + err := json.Unmarshal([]byte(tc.dmRef.ToJSON()), &dmMap) + if err != nil { + t.Fatalf("could not unmarshal dm json: %s\n", err) + } + + var refMap map[string]interface{} + err = json.Unmarshal([]byte(tc.jsonRef), &refMap) + if err != nil { + t.Fatalf("could not unmarshal ref json: %s\n", err) + } + + if !reflect.DeepEqual(dmMap[tc.logger], refMap[tc.logger]) { + t.Errorf("json format different from reference, Get=%s Want=%s", dmMap[tc.logger], refMap[tc.logger]) + } + }) + } +} + func TestDnsMessage_Json_Transforms_Reference(t *testing.T) { testcases := []struct { @@ -558,7 +601,7 @@ func TestDnsMessage_JsonFlatten_Collectors_Reference(t *testing.T) { }{ { collector: "powerdns", - dm: DNSMessage{PowerDNS: &PowerDNS{ + dm: DNSMessage{PowerDNS: &CollectorPowerDNS{ OriginalRequestSubnet: "subnet", AppliedPolicy: "basicrpz", AppliedPolicyHit: "hit", diff --git a/dnsutils/dnsmessage_text.go b/dnsutils/dnsmessage_text.go index 75d4323c..4372ad75 100644 --- a/dnsutils/dnsmessage_text.go +++ b/dnsutils/dnsmessage_text.go @@ -5,11 +5,40 @@ import ( "errors" "fmt" "log" + "regexp" "strconv" "strings" "time" ) +var ( + OtelDirectives = regexp.MustCompile(`^otel-*`) + PdnsDirectives = regexp.MustCompile(`^powerdns-*`) + GeoIPDirectives = regexp.MustCompile(`^geoip-*`) + SuspiciousDirectives = regexp.MustCompile(`^suspicious-*`) + PublicSuffixDirectives = regexp.MustCompile(`^publixsuffix-*`) + ExtractedDirectives = regexp.MustCompile(`^extracted-*`) + ReducerDirectives = regexp.MustCompile(`^reducer-*`) + MachineLearningDirectives = regexp.MustCompile(`^ml-*`) + FilteringDirectives = regexp.MustCompile(`^filtering-*`) + RawTextDirective = regexp.MustCompile(`^ *\{.*\}`) + ATagsDirectives = regexp.MustCompile(`^atags*`) +) + +func (dm *DNSMessage) handleOpenTelemetryDirectives(directive string, s *strings.Builder) error { + if dm.OpenTelemetry == nil { + s.WriteString("-") + } else { + switch { + case directive == "otel-trace-id": + s.WriteString(dm.OpenTelemetry.TraceID) + default: + return errors.New(ErrorUnexpectedDirective + directive) + } + } + return nil +} + func (dm *DNSMessage) handleGeoIPDirectives(directive string, s *strings.Builder) error { if dm.Geo == nil { s.WriteString("-") @@ -532,6 +561,13 @@ func (dm *DNSMessage) ToTextLine(format []string, fieldDelimiter string, fieldBo s.WriteByte('-') } + // more directives from loggers + case OtelDirectives.MatchString(directive): + err := dm.handleOpenTelemetryDirectives(directive, &s) + if err != nil { + return nil, err + } + // more directives from collectors case PdnsDirectives.MatchString(directive): err := dm.handlePdnsDirectives(directive, &s) diff --git a/dnsutils/dnsmessage_text_test.go b/dnsutils/dnsmessage_text_test.go index 138cbd75..1f0ac2fb 100644 --- a/dnsutils/dnsmessage_text_test.go +++ b/dnsutils/dnsmessage_text_test.go @@ -274,7 +274,7 @@ func TestDnsMessage_TextFormat_InvalidDirectives(t *testing.T) { }, { name: "powerdns", - dm: DNSMessage{PowerDNS: &PowerDNS{}}, + dm: DNSMessage{PowerDNS: &CollectorPowerDNS{}}, format: "powerdns-invalid", }, { @@ -395,6 +395,43 @@ func TestDnsMessage_TextFormat_Directives_Geo(t *testing.T) { } } +func TestDnsMessage_TextFormat_Directives_OpenTelemetry(t *testing.T) { + config := pkgconfig.GetDefaultConfig() + + testcases := []struct { + name string + format string + dm DNSMessage + expected string + }{ + { + name: "undefined", + format: "otel-trace-id", + dm: DNSMessage{}, + expected: "-", + }, + { + name: "default", + format: "otel-trace-id", + dm: DNSMessage{OpenTelemetry: &LoggerOpenTelemetry{TraceID: "27c3e94ad6284eec9a50cfc5bd7384d6"}}, + expected: "27c3e94ad6284eec9a50cfc5bd7384d6", + }, + } + + for _, tc := range testcases { + t.Run(tc.name, func(t *testing.T) { + line := tc.dm.String( + strings.Fields(tc.format), + config.Global.TextFormatDelimiter, + config.Global.TextFormatBoundary, + ) + if line != tc.expected { + t.Errorf("Want: %s, got: %s", tc.expected, line) + } + }) + } +} + func TestDnsMessage_TextFormat_Directives_Pdns(t *testing.T) { config := pkgconfig.GetDefaultConfig() @@ -413,13 +450,13 @@ func TestDnsMessage_TextFormat_Directives_Pdns(t *testing.T) { { name: "empty_attributes", format: "powerdns-tags powerdns-applied-policy powerdns-original-request-subnet powerdns-metadata", - dm: DNSMessage{PowerDNS: &PowerDNS{}}, + dm: DNSMessage{PowerDNS: &CollectorPowerDNS{}}, expected: "- - - -", }, { name: "applied_policy", format: "powerdns-applied-policy powerdns-applied-policy-hit powerdns-applied-policy-kind powerdns-applied-policy-trigger powerdns-applied-policy-type", - dm: DNSMessage{PowerDNS: &PowerDNS{ + dm: DNSMessage{PowerDNS: &CollectorPowerDNS{ AppliedPolicy: "policy", AppliedPolicyHit: "hit", AppliedPolicyKind: "kind", @@ -431,67 +468,67 @@ func TestDnsMessage_TextFormat_Directives_Pdns(t *testing.T) { { name: "original_request_subnet", format: "powerdns-original-request-subnet", - dm: DNSMessage{PowerDNS: &PowerDNS{OriginalRequestSubnet: "test"}}, + dm: DNSMessage{PowerDNS: &CollectorPowerDNS{OriginalRequestSubnet: "test"}}, expected: "test", }, { name: "metadata_badsyntax", format: "powerdns-metadata", - dm: DNSMessage{PowerDNS: &PowerDNS{Metadata: map[string]string{"test_key1": "test_value1"}}}, + dm: DNSMessage{PowerDNS: &CollectorPowerDNS{Metadata: map[string]string{"test_key1": "test_value1"}}}, expected: "-", }, { name: "metadata", format: "powerdns-metadata:test_key1", - dm: DNSMessage{PowerDNS: &PowerDNS{Metadata: map[string]string{"test_key1": "test_value1"}}}, + dm: DNSMessage{PowerDNS: &CollectorPowerDNS{Metadata: map[string]string{"test_key1": "test_value1"}}}, expected: "test_value1", }, { name: "metadata_invalid", format: "powerdns-metadata:test_key2", - dm: DNSMessage{PowerDNS: &PowerDNS{Metadata: map[string]string{"test_key1": "test_value1"}}}, + dm: DNSMessage{PowerDNS: &CollectorPowerDNS{Metadata: map[string]string{"test_key1": "test_value1"}}}, expected: "-", }, { name: "tags_all", format: "powerdns-tags", - dm: DNSMessage{PowerDNS: &PowerDNS{Tags: []string{"tag1", "tag2"}}}, + dm: DNSMessage{PowerDNS: &CollectorPowerDNS{Tags: []string{"tag1", "tag2"}}}, expected: "tag1,tag2", }, { name: "tags_index", format: "powerdns-tags:1", - dm: DNSMessage{PowerDNS: &PowerDNS{Tags: []string{"tag1", "tag2"}}}, + dm: DNSMessage{PowerDNS: &CollectorPowerDNS{Tags: []string{"tag1", "tag2"}}}, expected: "tag2", }, { name: "tags_invalid_index", format: "powerdns-tags:3", - dm: DNSMessage{PowerDNS: &PowerDNS{Tags: []string{"tag1", "tag2"}}}, + dm: DNSMessage{PowerDNS: &CollectorPowerDNS{Tags: []string{"tag1", "tag2"}}}, expected: "-", }, { name: "message_id", format: "powerdns-message-id", - dm: DNSMessage{PowerDNS: &PowerDNS{MessageID: "27c3e94ad6284eec9a50cfc5bd7384d6"}}, + dm: DNSMessage{PowerDNS: &CollectorPowerDNS{MessageID: "27c3e94ad6284eec9a50cfc5bd7384d6"}}, expected: "27c3e94ad6284eec9a50cfc5bd7384d6", }, { name: "initial_requestor_id", format: "powerdns-initial-requestor-id", - dm: DNSMessage{PowerDNS: &PowerDNS{InitialRequestorID: "5e006236c8a74f7eafc6af126e6d0689"}}, + dm: DNSMessage{PowerDNS: &CollectorPowerDNS{InitialRequestorID: "5e006236c8a74f7eafc6af126e6d0689"}}, expected: "5e006236c8a74f7eafc6af126e6d0689", }, { name: "requestor_id", format: "powerdns-requestor-id", - dm: DNSMessage{PowerDNS: &PowerDNS{RequestorID: "5e006236c8a74f7eafc6af126e6d0689"}}, + dm: DNSMessage{PowerDNS: &CollectorPowerDNS{RequestorID: "5e006236c8a74f7eafc6af126e6d0689"}}, expected: "5e006236c8a74f7eafc6af126e6d0689", }, { name: "device_id_name", format: "powerdns-device-id powerdns-device-name", - dm: DNSMessage{PowerDNS: &PowerDNS{DeviceID: "5e006236c8a74f7eafc6af126e6d0689", DeviceName: "test"}}, + dm: DNSMessage{PowerDNS: &CollectorPowerDNS{DeviceID: "5e006236c8a74f7eafc6af126e6d0689", DeviceName: "test"}}, expected: "5e006236c8a74f7eafc6af126e6d0689 test", }, } diff --git a/docs/_examples/use-case-32.yml b/docs/_examples/use-case-32.yml new file mode 100644 index 00000000..c5287d28 --- /dev/null +++ b/docs/_examples/use-case-32.yml @@ -0,0 +1,46 @@ +global: + trace: + verbose: true + +pipelines: + - name: tap + powerdns: + listen-ip: 0.0.0.0 + listen-port: 6000 + tls-support: false + tls-min-version: 1.2 + cert-file: "" + key-file: "" + reset-conn: true + chan-buffer-size: 0 + add-dns-payload: false + transforms: + normalize: + qname-lowercase: true + qname-replace-nonprintable: true + routing-policy: + forward: [ reordering ] + dropped: [ ] + + - name: reordering + dnsmessage: + matching: + include: + transforms: + reordering: + flush-interval: 5 + routing-policy: + forward: [ otel ] + dropped: [ ] + + - name: otel + opentelemetry: + otel-endpoint: "192.168.1.253:4317" + routing-policy: + forward: [ console ] + dropped: [ ] + + - name: console + stdout: + mode: text + text-format: "timestamp-rfc3339ns identity operation qname qtype queryip responseip otel-trace-id" diff --git a/docs/_images/otel_tracing.png b/docs/_images/otel_tracing.png new file mode 100644 index 0000000000000000000000000000000000000000..b0d1f6d3ef9fadc69940d4c1adae028b87d650bb GIT binary patch literal 119027 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

  • 5ay}8NHl@#D3Y>b1^~Pq}PM(vLGqMLER3l{8 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%0DKUHS+H-`&7#+5 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 Follow this guide to enable DNStap on your DNS servers: [Enabling DNStap logging on most popular DNS servers](https://dmachard.github.io/posts/0001-dnstap-testing/). + Options: * `listen-ip` (str) diff --git a/docs/examples.md b/docs/examples.md index 18e1694a..8952fb11 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -50,3 +50,6 @@ You will find below some examples of configurations to manage your DNS logs. - Security: suspicious traffic detector - [x] [Capture DNS packets and flag suspicious traffic](./_examples/use-case-19.yml) + +- Telemetry + - [x] [Opentelemetry tracing of your DNS traffic](./_examples/use-case-32.yml) diff --git a/docs/extended_dnstap.md b/docs/extended_dnstap.md index 4e92390a..ac336fc2 100644 --- a/docs/extended_dnstap.md +++ b/docs/extended_dnstap.md @@ -20,7 +20,7 @@ The following codec are supported: DNSTAP message can be extended by incorporating additional metadata added through transformations, such as filtering, geo, ATags. -These metadata are encoded in the extra field with the following [protobuf structure](./../../dnsutils/extended_dnstap.proto). +These metadata are encoded in the extra field with the following [protobuf structure](../dnsutils/extended_dnstap.proto). The following transformers are supported: diff --git a/docs/loggers/logger_opentelemetry.md b/docs/loggers/logger_opentelemetry.md new file mode 100644 index 00000000..43ce091f --- /dev/null +++ b/docs/loggers/logger_opentelemetry.md @@ -0,0 +1,29 @@ +# Logger: OpenTelemetry + +OpenTelemetry plugin Logger + +**Experimental**: This feature is experimental and currently works only with the DNSDist and Recursor products from PowerDNS. + +Options: +* `otel-endpoint` (string) + > Specifies the endpoint for sending telemetry data to an OpenTelemetry collector. + > The endpoint should be specified in the format `host:port`. + +Default values: + +```yaml +opentelemetry: + otel-endpoint: "" +``` + +Exemple of result with Tempo from Grafana + +

    + dnscollector +

    + +Exemple with DNS error (NXDOMAIN) + +

    + dnscollector +

    diff --git a/docs/transformers.md b/docs/transformers.md index 663fb61a..ee50a310 100644 --- a/docs/transformers.md +++ b/docs/transformers.md @@ -29,3 +29,4 @@ Transformers processing is currently in this order : | [JSON relabeling](transformers/transform_relabeling.md) | JSON relabeling to rename or remove keys | | [DNS message rewrite](transformers/transform_rewrite.md) | Rewrite value for DNS messages structure | | [Newly Observed Domains](transformers/transform_newdomaintracker.md) | Detect Newly Observed Domains | +| [Reordering](transformers/transform_reordering.md) | Reordering DNS messages based on timestamps | diff --git a/docs/workers.md b/docs/workers.md index 534342d5..2811739b 100644 --- a/docs/workers.md +++ b/docs/workers.md @@ -29,3 +29,4 @@ A worker can act as a collector or a logger. | [Falco](loggers/logger_falco.md) | Logger | Falco plugin logger | | [ClickHouse](loggers/logger_clickhouse.md) | Logger | ClickHouse logger | | [DevNull](loggers/logger_devnull.md) | Logger | For testing purpose | +| [OpenTelemetry](loggers/logger_opentelemetry.md) | Logger | Open Telemetry tracing - Experimental | diff --git a/go.mod b/go.mod index cda15045..bca1e1f3 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/dmachard/go-dnscollector -go 1.21.8 +go 1.22.0 toolchain go1.23.0 @@ -37,6 +37,11 @@ require ( github.com/segmentio/kafka-go v0.4.47 github.com/stretchr/testify v1.10.0 github.com/tinylib/msgp v1.2.5 + go.opentelemetry.io/otel v1.33.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 + go.opentelemetry.io/otel/sdk v1.28.0 + go.opentelemetry.io/otel/trace v1.33.0 golang.org/x/net v0.31.0 golang.org/x/sys v0.28.0 google.golang.org/protobuf v1.35.2 @@ -52,6 +57,7 @@ require ( github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 // indirect + github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/coreos/go-semver v0.3.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect @@ -82,6 +88,7 @@ require ( github.com/grafana/loki/pkg/push v0.0.0-20240402204250-824f5aa20aaa // indirect github.com/grafana/pyroscope-go/godeltaprof v0.1.8 // indirect github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect github.com/hashicorp/consul/api v1.29.4 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -125,7 +132,6 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/exporter-toolkit v0.11.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect github.com/sercand/kuberesolver/v5 v5.1.1 // indirect github.com/shopspring/decimal v1.2.0 // indirect @@ -140,10 +146,10 @@ require ( go.etcd.io/etcd/api/v3 v3.5.4 // indirect go.etcd.io/etcd/client/pkg/v3 v3.5.4 // indirect go.etcd.io/etcd/client/v3 v3.5.4 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/collector/pdata v1.12.0 // indirect - go.opentelemetry.io/otel v1.28.0 // indirect - go.opentelemetry.io/otel/metric v1.28.0 // indirect - go.opentelemetry.io/otel/trace v1.28.0 // indirect + go.opentelemetry.io/otel/metric v1.33.0 // indirect + go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.21.0 // indirect diff --git a/go.sum b/go.sum index 5c87006f..59eb4f54 100644 --- a/go.sum +++ b/go.sum @@ -67,6 +67,8 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 h1:6lhrsTEnloDPXyeZBvSYvQf8u86jbKehZPVDDlkgDl4= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -253,6 +255,8 @@ github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrR github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= github.com/hashicorp/consul/api v1.29.4 h1:P6slzxDLBOxUSj3fWo2o65VuKtbtOXFi7TSSgtXutuE= github.com/hashicorp/consul/api v1.29.4/go.mod h1:HUlfw+l2Zy68ceJavv2zAyArl2fqhGWnMycyt56sBgg= @@ -492,8 +496,8 @@ github.com/prometheus/prometheus v0.54.1/go.mod h1:xlLByHhk2g3ycakQGrMaU8K7OySZx github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rs/tzsp v0.0.0-20161230003637-8ce729c826b9 h1:upQjqUCvtoYMwHSXn0eGc1lsVJpEi90u3oMjmLKa9ac= github.com/rs/tzsp v0.0.0-20161230003637-8ce729c826b9/go.mod h1:pFz3aQBXB8wqK0Mnt7iOEgcrpRHgpP+1xNnOy7Ok1Bw= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -563,14 +567,24 @@ go.etcd.io/etcd/client/pkg/v3 v3.5.4 h1:lrneYvz923dvC14R54XcA7FXoZ3mlGZAgmwhfm7H go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v3 v3.5.4 h1:p83BUL3tAYS0OT/r0qglgc3M1JjhM0diV8DSWAhVXv4= go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/collector/pdata v1.12.0 h1:Xx5VK1p4VO0md8MWm2icwC1MnJ7f8EimKItMWw46BmA= go.opentelemetry.io/collector/pdata v1.12.0/go.mod h1:MYeB0MmMAxeM0hstCFrCqWLzdyeYySim2dG6pDT6nYI= -go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= -go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= -go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= -go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= -go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= -go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= +go.opentelemetry.io/otel v1.33.0 h1:/FerN9bax5LoK51X/sI0SVYrjSE0/yUL7DpxW4K3FWw= +go.opentelemetry.io/otel v1.33.0/go.mod h1:SUUkR6csvUQl+yjReHu5uM3EtVV7MBm5FHKRlNx4I8I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6ZXmNPRR8ul6i3WgFURCHzaXjHdm0karRG/+dj3s= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0/go.mod h1:QWFXnDavXWwMx2EEcZsf3yxgEKAqsxQ+Syjp+seyInw= +go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5WtEnklQ= +go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= +go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= +go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= +go.opentelemetry.io/otel/trace v1.33.0 h1:cCJuF7LRjUFso9LPnEAHJDB2pqzp+hbO8eu1qqW2d/s= +go.opentelemetry.io/otel/trace v1.33.0/go.mod h1:uIcdVUZMpTAmz0tI1z04GoVSezK37CbGV4fr1f2nBck= +go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= +go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= diff --git a/pkgconfig/loggers.go b/pkgconfig/loggers.go index 60a147be..c427d9b4 100644 --- a/pkgconfig/loggers.go +++ b/pkgconfig/loggers.go @@ -235,6 +235,13 @@ type ConfigLoggers struct { BasicAuthLogin string `yaml:"basic-auth-login" default:""` BasicAuthPwd string `yaml:"basic-auth-pwd" default:""` } `yaml:"elasticsearch"` + OpenTelemetryClient struct { + Enable bool `yaml:"enable" default:"false"` + ChannelBufferSize int `yaml:"chan-buffer-size" default:"0"` + CleanupSpansInterval int `yaml:"cleanup-spans-interval" default:"30"` + MaxSpanTime int `yaml:"max-span-time" default:"120"` + OtelEndpoint string `yaml:"otel-endpoint" default:""` + } `yaml:"opentelemetry"` ScalyrClient struct { Enable bool `yaml:"enable" default:"false"` Mode string `yaml:"mode" default:"text"` diff --git a/pkginit/pipelines.go b/pkginit/pipelines.go index 64b195ab..5dcf9853 100644 --- a/pkginit/pipelines.go +++ b/pkginit/pipelines.go @@ -199,6 +199,10 @@ func CreateStanza(stanzaName string, config *pkgconfig.Config, mapCollectors map mapLoggers[stanzaName] = workers.NewDevNull(config, logger, stanzaName) mapLoggers[stanzaName].SetMetrics(metrics) } + if config.Loggers.OpenTelemetryClient.Enable { + mapLoggers[stanzaName] = workers.NewOpenTelemetryClient(config, logger, stanzaName) + mapLoggers[stanzaName].SetMetrics(metrics) + } // register the collector if enabled if config.Collectors.DNSMessage.Enable { diff --git a/workers/otel.go b/workers/otel.go new file mode 100644 index 00000000..3d76765f --- /dev/null +++ b/workers/otel.go @@ -0,0 +1,299 @@ +package workers + +import ( + "context" + "log" + "sync" + "time" + + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/exporters/otlp/otlptrace" + "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc" + "go.opentelemetry.io/otel/sdk/resource" + sdktrace "go.opentelemetry.io/otel/sdk/trace" + "go.opentelemetry.io/otel/trace" + + "github.com/dmachard/go-dnscollector/dnsutils" + "github.com/dmachard/go-dnscollector/pkgconfig" + "github.com/dmachard/go-dnscollector/transformers" + "github.com/dmachard/go-logger" +) + +type trackedSpan struct { + span trace.Span + startTime time.Time +} + +type OpenTelemetryClient struct { + *GenericWorker + tracerProviders map[string]*sdktrace.TracerProvider +} + +func NewOpenTelemetryClient(config *pkgconfig.Config, console *logger.Logger, name string) *OpenTelemetryClient { + bufSize := config.Global.Worker.ChannelBufferSize + if config.Loggers.OpenTelemetryClient.ChannelBufferSize > 0 { + bufSize = config.Loggers.OpenTelemetryClient.ChannelBufferSize + } + + w := &OpenTelemetryClient{ + GenericWorker: NewGenericWorker(config, console, name, "opentelemetry", bufSize, pkgconfig.DefaultMonitor), + tracerProviders: make(map[string]*sdktrace.TracerProvider), + } + return w +} + +func (w *OpenTelemetryClient) initTracerProvider(serviceName string) *sdktrace.TracerProvider { + exporter, err := otlptrace.New(context.Background(), otlptracegrpc.NewClient( + otlptracegrpc.WithEndpoint(w.config.Loggers.OpenTelemetryClient.OtelEndpoint), + otlptracegrpc.WithInsecure(), + )) + if err != nil { + log.Fatalf("failed to create OTLP exporter: %v", err) + } + + tracerProvider := sdktrace.NewTracerProvider( + sdktrace.WithBatcher(exporter), + sdktrace.WithResource(resource.NewSchemaless( + attribute.String("service.name", serviceName), + )), + ) + return tracerProvider +} + +func (w *OpenTelemetryClient) getTracer(serviceName string) trace.Tracer { + if tp, exists := w.tracerProviders[serviceName]; exists { + return tp.Tracer("") + } + + tp := w.initTracerProvider(serviceName) + w.tracerProviders[serviceName] = tp + return tp.Tracer("") +} + +func (w *OpenTelemetryClient) StartCollect() { + w.LogInfo("starting data collection") + defer w.CollectDone() + + // prepare next channels + droppedRoutes, droppedNames := GetRoutes(w.GetDroppedRoutes()) + + // prepare transforms + subprocessors := transformers.NewTransforms(&w.GetConfig().OutgoingTransformers, w.GetLogger(), w.GetName(), w.GetOutputChannelAsList(), 0) + + // goroutine to process transformed dns messages + go w.StartLogging() + + // loop to process incoming messages + for { + select { + case <-w.OnStop(): + w.StopLogger() + subprocessors.Reset() + return + + // new config provided? + case cfg := <-w.NewConfig(): + w.SetConfig(cfg) + w.ReadConfig() + subprocessors.ReloadConfig(&cfg.OutgoingTransformers) + + case dm, opened := <-w.GetInputChannel(): + if !opened { + w.LogInfo("input channel closed!") + return + } + + // count global messages + w.CountIngressTraffic() + + // apply tranforms, init dns message with additionnals parts if necessary + transformResult, err := subprocessors.ProcessMessage(&dm) + if err != nil { + w.LogError(err.Error()) + } + if transformResult == transformers.ReturnDrop { + w.SendDroppedTo(droppedRoutes, droppedNames, dm) + continue + } + + // send to output channel + w.CountEgressTraffic() + w.GetOutputChannel() <- dm + } + } +} + +func (w *OpenTelemetryClient) StartLogging() { + w.LogInfo("logging has started") + defer w.LoggingDone() + + // prepare next channels + defaultRoutes, defaultNames := GetRoutes(w.GetDefaultRoutes()) + + // Maps to follow the state of the spans + requestorSpans := sync.Map{} + messageSpans := sync.Map{} + resolverSpans := sync.Map{} + + go w.cleanupSpans(&requestorSpans, &messageSpans, &resolverSpans, time.Duration(w.config.Loggers.OpenTelemetryClient.MaxSpanTime)*time.Second) + + for { + select { + case <-w.OnLoggerStopped(): + return + + // incoming dns message to process + case dm, opened := <-w.GetOutputChannel(): + if !opened { + w.LogInfo("output channel closed!") + return + } + + timestamp, err := time.Parse(time.RFC3339, dm.DNSTap.TimestampRFC3339) + if err != nil { + w.LogWarning("invalid timestamp: %v", err) + continue + } + tracer := w.getTracer(dm.DNSTap.Identity) + + // ini opentelemetry with default values + dm.OpenTelemetry = &dnsutils.LoggerOpenTelemetry{} + + switch dm.DNSTap.Operation { + case "CLIENT_QUERY": + w.handleClientQuery(&requestorSpans, &messageSpans, tracer, &dm, timestamp) + case "CLIENT_RESPONSE": + w.handleClientResponse(&requestorSpans, &messageSpans, &dm, timestamp) + case "RESOLVER_QUERY": + w.handleResolverQuery(&messageSpans, &resolverSpans, tracer, &dm, timestamp) + case "RESOLVER_RESPONSE": + w.handleResolverResponse(&resolverSpans, &dm, timestamp) + } + + // send to next ? + w.SendForwardedTo(defaultRoutes, defaultNames, dm) + } + } +} + +func (w *OpenTelemetryClient) handleClientQuery(requestorSpans, messageSpans *sync.Map, tracer trace.Tracer, dm *dnsutils.DNSMessage, timestamp time.Time) { + if parentSpan, ok := requestorSpans.Load(dm.PowerDNS.RequestorID); ok { + _, childSpan := tracer.Start(trace.ContextWithSpan(context.Background(), parentSpan.(trackedSpan).span), "Client Query "+dm.NetworkInfo.ResponseIP+" ("+dm.DNS.Qname+" / "+dm.DNS.Qtype+" )", trace.WithTimestamp(timestamp)) + childSpan.SetAttributes(attribute.String("dns.qname", dm.DNS.Qname)) + childSpan.SetAttributes(attribute.String("source.ip", dm.NetworkInfo.QueryIP)) + childSpan.SetAttributes(attribute.String("destination.ip", dm.NetworkInfo.ResponseIP)) + + messageSpans.Store(dm.PowerDNS.MessageID, trackedSpan{span: childSpan, startTime: timestamp}) + dm.OpenTelemetry.TraceID = childSpan.SpanContext().TraceID().String() + } else { + _, clientSpan := tracer.Start(context.Background(), "Client Query "+dm.NetworkInfo.ResponseIP+" ("+dm.DNS.Qname+" / "+dm.DNS.Qtype+" )", trace.WithTimestamp(timestamp)) + clientSpan.SetAttributes(attribute.String("dns.qname", dm.DNS.Qname)) + clientSpan.SetAttributes(attribute.String("source.ip", dm.NetworkInfo.QueryIP)) + clientSpan.SetAttributes(attribute.String("destination.ip", dm.NetworkInfo.ResponseIP)) + requestorSpans.Store(dm.PowerDNS.RequestorID, trackedSpan{span: clientSpan, startTime: timestamp}) + messageSpans.Store(dm.PowerDNS.MessageID, trackedSpan{span: clientSpan, startTime: timestamp}) + dm.OpenTelemetry.TraceID = clientSpan.SpanContext().TraceID().String() + } +} + +func (w *OpenTelemetryClient) handleClientResponse(requestorSpans, messageSpans *sync.Map, dm *dnsutils.DNSMessage, timestamp time.Time) { + if span, ok := messageSpans.Load(dm.PowerDNS.MessageID); ok { + tracked := span.(trackedSpan) + tracked.span.SetAttributes(attribute.String("dns.rcode", dm.DNS.Rcode)) + if dm.DNS.Rcode != dnsutils.DNSRcodeNoError { + tracked.span.SetAttributes(attribute.String("error", "true")) + tracked.span.SetAttributes(attribute.String("error.message", "Non-successful DNS response code")) + } + + tracked.span.End(trace.WithTimestamp(timestamp)) + messageSpans.Delete(dm.PowerDNS.MessageID) + dm.OpenTelemetry.TraceID = tracked.span.SpanContext().TraceID().String() + } + + if span, ok := requestorSpans.Load(dm.PowerDNS.RequestorID); ok { + tracked := span.(trackedSpan) + tracked.span.SetAttributes(attribute.String("dns.rcode", dm.DNS.Rcode)) + + if dm.DNS.Rcode != dnsutils.DNSRcodeNoError { + tracked.span.SetAttributes(attribute.String("error", "true")) + tracked.span.SetAttributes(attribute.String("error.message", "Non-successful DNS response code")) + } + + tracked.span.End(trace.WithTimestamp(timestamp)) + requestorSpans.Delete(dm.PowerDNS.RequestorID) + } +} + +func (w *OpenTelemetryClient) handleResolverQuery(messageSpans, resolverSpans *sync.Map, tracer trace.Tracer, dm *dnsutils.DNSMessage, timestamp time.Time) { + if tracked, ok := messageSpans.Load(dm.PowerDNS.InitialRequestorID); ok { + _, resolverSpan := tracer.Start(trace.ContextWithSpan(context.Background(), tracked.(trackedSpan).span), "Resolver Query "+dm.NetworkInfo.ResponseIP+" ("+dm.DNS.Qname+" / "+dm.DNS.Qtype+" )", trace.WithTimestamp(timestamp)) + resolverSpan.SetAttributes(attribute.String("dns.qname", dm.DNS.Qname)) + resolverSpan.SetAttributes(attribute.String("source.ip", dm.NetworkInfo.QueryIP)) + resolverSpan.SetAttributes(attribute.String("destination.ip", dm.NetworkInfo.ResponseIP)) + resolverSpans.Store(dm.PowerDNS.MessageID, trackedSpan{span: resolverSpan, startTime: timestamp}) + dm.OpenTelemetry.TraceID = resolverSpan.SpanContext().TraceID().String() + } else { + // No parent span found, create a root span + _, resolverSpan := tracer.Start(context.Background(), "Resolver Query ("+dm.DNS.Qname+")", trace.WithTimestamp(timestamp)) + resolverSpan.SetAttributes(attribute.String("dns.qname", dm.DNS.Qname)) + resolverSpan.SetAttributes(attribute.String("source.ip", dm.NetworkInfo.QueryIP)) + resolverSpan.SetAttributes(attribute.String("destination.ip", dm.NetworkInfo.ResponseIP)) + resolverSpans.Store(dm.PowerDNS.MessageID, trackedSpan{span: resolverSpan, startTime: timestamp}) + dm.OpenTelemetry.TraceID = resolverSpan.SpanContext().TraceID().String() + } +} + +func (w *OpenTelemetryClient) handleResolverResponse(resolverSpans *sync.Map, dm *dnsutils.DNSMessage, timestamp time.Time) { + if span, ok := resolverSpans.Load(dm.PowerDNS.MessageID); ok { + tracked := span.(trackedSpan) + tracked.span.SetAttributes(attribute.String("dns.rcode", dm.DNS.Rcode)) + + if dm.DNS.Rcode != dnsutils.DNSRcodeNoError { + tracked.span.SetAttributes(attribute.String("error", "true")) + tracked.span.SetAttributes(attribute.String("error.message", "Non-successful DNS response code")) + } + + tracked.span.End(trace.WithTimestamp(timestamp)) + resolverSpans.Delete(dm.PowerDNS.MessageID) + dm.OpenTelemetry.TraceID = tracked.span.SpanContext().TraceID().String() + } +} + +func (w *OpenTelemetryClient) cleanupSpans(requestorSpans, messageSpans, resolverSpans *sync.Map, maxSpanDuration time.Duration) { + ticker := time.NewTicker(time.Duration(w.config.Loggers.OpenTelemetryClient.CleanupSpansInterval) * time.Second) + defer ticker.Stop() + + for range ticker.C { + now := time.Now() + + requestorSpans.Range(func(key, value interface{}) bool { + tracked := value.(trackedSpan) + if tracked.startTime.Add(maxSpanDuration).Before(now) { + tracked.span.SetAttributes(attribute.String("error", "timeout")) + tracked.span.End() + requestorSpans.Delete(key) + } + return true + }) + + messageSpans.Range(func(key, value interface{}) bool { + tracked := value.(trackedSpan) + if tracked.startTime.Add(maxSpanDuration).Before(now) { + tracked.span.SetAttributes(attribute.String("error", "timeout")) + tracked.span.End() + messageSpans.Delete(key) + } + return true + }) + + resolverSpans.Range(func(key, value interface{}) bool { + tracked := value.(trackedSpan) + if tracked.startTime.Add(maxSpanDuration).Before(now) { + tracked.span.SetAttributes(attribute.String("error", "timeout")) + tracked.span.End() + resolverSpans.Delete(key) + } + return true + }) + } +} diff --git a/workers/otel_test.go b/workers/otel_test.go new file mode 100644 index 00000000..a10f86a7 --- /dev/null +++ b/workers/otel_test.go @@ -0,0 +1,24 @@ +package workers + +import ( + "testing" + + "github.com/dmachard/go-dnscollector/pkgconfig" + "github.com/dmachard/go-logger" + "github.com/stretchr/testify/assert" +) + +func TestOpenTelemetry_InitTracerProvider(t *testing.T) { + cfg := pkgconfig.GetDefaultConfig() + cfg.Loggers.OpenTelemetryClient.Enable = true + cfg.Loggers.OpenTelemetryClient.OtelEndpoint = "localhost:4317" + + logger := logger.New(false) // Disable verbose logging for tests + client := NewOpenTelemetryClient(cfg, logger, "test-client") + + // Initialize tracer provider + tracer := client.getTracer("test-service") + + // Assert tracer is not nil + assert.NotNil(t, tracer, "Tracer should not be nil") +} diff --git a/workers/powerdns.go b/workers/powerdns.go index c84271c7..ea1af825 100644 --- a/workers/powerdns.go +++ b/workers/powerdns.go @@ -263,7 +263,7 @@ func (w *PdnsProcessor) StartCollect() { dm.Init() // init powerdns with default values - dm.PowerDNS = &dnsutils.PowerDNS{ + dm.PowerDNS = &dnsutils.CollectorPowerDNS{ Tags: []string{}, OriginalRequestSubnet: "", AppliedPolicy: "", @@ -318,7 +318,7 @@ func (w *PdnsProcessor) StartCollect() { dm.DNS.Qtype = dnsutils.RdatatypeToString(int(pbdm.Question.GetQType())) // get specific powerdns params - pdns := dnsutils.PowerDNS{} + pdns := dnsutils.CollectorPowerDNS{} // get PowerDNS OriginalRequestSubnet ip := pbdm.GetOriginalRequestorSubnet()